19得票2回答
临时寿命延长

标准的第12.2.5节规定: 函数调用中引用参数的临时绑定(5.2.2)持续到包含该调用的完整表达式完成为止。函数返回语句中返回值的临时绑定(6.6.3)持续到函数退出为止。在所有这些情况下,在初始化引用的表达式求值期间创建的临时值(除了与引用绑定的那个临时值)将在创建它们的完整表达式结束时...

11得票1回答
返回依赖于函数内分配的数据的惰性迭代器。

我是新手,正在阅读《Rust编程语言》一书,其中在“错误处理”章节有一个“案例研究”,描述了使用csv和rustc-serialize库(使用getopts进行参数解析)从CSV文件中读取数据的程序。 作者编写了一个名为search的函数,该函数使用csv::Reader对象遍历csv文件的...

7得票2回答
通过trait在struct中存储一个值是否可行?

编辑注:此代码示例来自 Rust 1.0 之前的版本,不是 Rust 1.0 代码的语法正确。更新后的代码版本会产生不同的错误,但答案仍包含有价值的信息。 我尝试过使用和不使用 Box,以及使用和不使用生命周期: trait TraitToImpl { fn do_someth...

10得票2回答
这个更高级别的特质约束是什么意思?

在Salsa中,有一个更高级别的特质绑定在一个特质上。我曾经看到过对函数定义的HRTB限制,但并没有看到对特质的限制。这是什么意思? pub trait Query: Debug + Default + Sized + for<'d> QueryDb<'d> { .....

11得票2回答
如果对象存储的生命周期结束了,是否允许隐式或显式地重复使用它?

考虑以下示例:// create some storage alignas(int) char buffer[2 * sizeof(int)]; // new object of type int at the storage of buffer, the int pointed // to...

71得票2回答
编译器建议我添加一个“静态生命周期”,因为参数类型可能无法长时间存活,但我不认为这是我想要的。

我正在尝试实现类似于这个最小化示例的东西:trait Bar<T> {} struct Foo<T> { data: Vec<Box<Bar<T>>>, } impl<T> Foo<T> { ...

74得票1回答
Rust中的生命周期

偶尔我发现自己想编写可以以两种方式之一调用的函数:// With a string literal: let lines = read_file_lines("data.txt"); // With a string pointer: let file_name = ~"data.txt";...

8得票2回答
当返回一个保守的impl trait时,"lifetime"是什么意思?

当我在搜索关于 保守实现特质 的文档时,我找到了这个示例: struct A { x: [(u32, u32); 10] } impl A { fn iter_values<'a>(&'a self) -> impl 'a + Iterator&l...

7得票1回答
如何在实现迭代器时返回引用?

我想要返回一个位于集合(例如Vec)中的拥有对象的引用,但是我无法正确地处理生命周期。以下是我最初尝试的代码: struct StringHolder { strings: Vec<String>, i: usize, } impl Iterator for S...

63得票1回答
如何将对栈变量的引用传递给线程?

我正在编写一个WebSocket服务器,其中web客户端连接以与多线程计算机AI下棋。 WebSocket服务器想要将Logger对象传递到AI代码中。 Logger对象将把来自AI的日志行传输到Web客户端。 Logger必须包含对客户端连接的引用。 我对生命周期如何与线程交互感到困惑。我...