31得票2回答
在Rust中,"Box<Fn() + Send + 'static>"是什么意思?

Box&lt;Fn() + Send + 'static&gt; 在 Rust 中是什么意思? 在我阅读高级类型章节时偶然发现了这个语法。 Send 是一个 trait,但是将生命周期(在这种情况下为'static)与 trait(Send)相加意味着什么?另外,Fn() 是什么意思?

23得票2回答
错误:闭包可能超出当前函数的生命周期,但不会超出它。

当我尝试编译以下代码时:fn main() { (...) let mut should_end = false; let mut input = Input::new(ctx); input.add_handler(Box::new(|evt| { ...

10得票1回答
是否 'a T 意味着 T: 'a?

从我个人的理解和实验来看,这似乎是正确的,但我还没有找到一个权威的来源来证明它。Rust by Example有一个bounds部分,在那里它说: T: 'a: All references in T must outlive lifetime 'a. #[derive(Debug)] s...

12得票1回答
在实现中的生命周期与trait中的方法不匹配

代码 示例代码(稳定版Rust 1.45.0,2018版)无需外部库。 type Error = Box&lt;dyn std::error::Error&gt;; type Result&lt;R=()&gt; = std::result::Result&lt;R, Error&gt;;...

22得票1回答
我该如何拥有一个Vec元素并将其替换为其他内容?

我正在编写一个以下格式的函数:fn pop&lt;T&gt;(data: &amp;mut Vec&lt;Option&lt;T&gt;&gt;) -&gt; Option&lt;T&gt; { // Let the item be the current element at hea...

10得票5回答
临时对象有范围吗?

变量名具有作用域(编译时属性),而对象具有生命周期(运行时属性)。对吗? 我经常看到人们谈论临时对象“超出作用域”的情况。但由于临时对象没有名称,因此在这种情况下谈论“作用域”是没有意义的。临时对象的生命周期非常清晰地定义,与作用域无关。您同意吗?

7得票1回答
如何编写可变迭代器?

编辑说明:此代码示例来自Rust 1.0之前的版本,不是符合语法的Rust 1.0代码。更新后的代码版本会产生不同的错误,但答案仍包含有价值的信息。 我想创建一个生成质数流的迭代器。我的一般思路是将一个迭代器与连续的过滤器包装起来,例如,您可以从以下内容开始: let mut n = ...

50得票4回答
如何编写一个返回自身引用的迭代器?

我在表达Iterator实现的返回值寿命方面遇到了问题。如何在不更改迭代器的返回值的情况下编译此代码?我希望它返回引用向量。 很明显,我没有正确使用生命周期参数,但在尝试了各种方式之后,我放弃了,我不知道该怎么办。use std::iter::Iterator; struct Permut...

7得票1回答
如何将结构体的生命周期限制为“父”结构体的生命周期?

我正在使用FFI编写一些Rust代码,针对具有所有权概念的C API(如果有关系,则为libnotmuch API)。 API的主要入口点是Database;我可以从Database创建Query对象。它为数据库和查询(以及许多其他对象)提供了析构函数。 但是,Query不能超出其创建的D...

9得票1回答
能否禁用Rust的生命周期省略?

是否可以在每个文件中禁用Rust的生命周期省略,可能使用#[attribute]? 我正在学习有关生命周期的知识,我认为这可能会有所帮助。