24得票2回答
在循环中尝试更新Option<&str>时,出现“借用期间被丢弃的临时值”的错误提示。

我正在尝试实现一个常用模式 - 在下一次循环迭代中使用上一次循环迭代的结果。例如,实现需要提供上一页最后一个值的分页。struct Result { str: String, } fn main() { let times = 10; let mut last...

22得票1回答
如何移出一个作为Option类型的结构体字段?

我希望能够收集结构体的更改并一次性应用它们。 基本的概述如下:enum SomeEnum { Foo, Bar, } struct SomeStruct { attrib: SomeEnum, next_attrib: Option&lt;SomeEnum&g...

9得票1回答
无法借用为不可变-String和len()

let mut result = String::with_capacity(1000); result.push_str("things... "); result.push_str("stuff... "); result.truncate((result.len() - 4)); ...

10得票1回答
如何实现std::convert::From,使其不会消耗输入?

我成功地让Rust类型检查器进入了一个无限循环。一个非常相似的程序可以顺利编译。为什么我想要的程序不能编译? 为了节省您的时间和精力,我制作了两个程序的最小版本,以便隔离问题。当然,这个最小版本是一个无意义的程序。您需要发挥想象力来看到我的动机。 成功 让我从正常工作的版本开始。结构体>...

8得票1回答
根据最后一个元素将某物推入向量

我想得到一个向量的最后一个元素,并将其用于确定要推入的下一个元素。这里有一个示例,说明了它不起作用的方式,但展示了我正在尝试实现的内容: let mut vector: Vec&lt;i32&gt; = Vec::new(); if let Some(last_value) = vecto...

11得票1回答
当调用一个以值传递self并且带有一个调用了方法的参数的方法时,为什么会出现moved value的借用?

我遇到了一个问题,被迫将一个漂亮的一行代码拆分成带有中间let的{}块。我完全不清楚这样做的原因。我通过这个最小的示例来隔离这个问题:struct AB { a: u8, b: u8, } impl AB { fn foo(&amp;self) -&gt; Strin...

9得票2回答
能否将结构体的部分作为可变的借用,而将其他部分作为不可变的借用?

如果结构体的字段是私有的,是否可能将结构体的一部分作为可变的借用,另一部分作为不可变的借用。 fn main() { let mut ecs = EntityComponentSystem::new(); for e_id in ecs.get_entities_with_...

16得票1回答
无法对生成的子进程进行多次管道传输

我希望能够使用Rust来生成一个子shell,然后重复传递任意命令并处理它们的输出。我在网上找到了很多示例,教我如何传递单个命令并接收其单个输出,但我似乎无法重复执行它们。 例如,下面的代码在注释后的行上挂起。(我想也许read_to_string()正在阻塞,直到它接收到子进程的标准输出,...

9得票1回答
不需要克隆的情况下,是否可以使用线程共享数据?

当我将工作委派给线程时,通常会有一些数据比如下面的numbers会比所有线程都存活得更久: use std::thread; fn main() { let numbers = vec![1, 2, 3]; let thread_a = thread::spawn(|| ...

15得票2回答
这个不安全的用法是否可以轻松安全?

我遇到了一个Rust借用检查器错误,我相信这是非词法生命周期当前实现的限制。我想要编写的代码大致如下:struct Thing { value: i32 } impl Thing { fn value(&amp;self) -&gt; &amp;i32 { &...