防锈封闭和价值生命周期

问题描述 投票:0回答:0

我只是在学习 Rust 并且我正在绊倒一些东西,就像我想的那样。 而这个我自己找不到答案,我试过了。

我正在做的是围绕消息流抽象进行游戏,除非我知道如何编写这个测试,否则一切顺利:

        #[test]
        fn take_1() {
            let mut delivery_count = 1;
            let delivery_listener = |item: &i32| {
                delivery_count += 1;
            };
            let stream = super::Stream::<i32>::new(Some(Box::new(delivery_listener)));
            // [Push 10 messages to the stream here]
            assert_eq!(delivery_count, 10);
        }

在这里,我正在实施一种确认机制——我将消息推送到 Stream 对象并通过闭包确认传递列表,这显然没有真正起作用,并因以下错误而失败:

`delivery_count` does not live long enough
borrowed value does not live long enough

我确实在

Vec<i32>
甚至
Rc<RefCell<i32>>
上尝试过相同的方法,但每次都惨遭失败,因为我无法设法将生命周期附加到该变量上。 我很确定这是我所缺少的简单东西 - 我需要社区帮助! ;)

rust closures
© www.soinside.com 2019 - 2024. All rights reserved.