27得票1回答
尝试转移所有权时,无法移动借用内容

我正在编写一个链表来理解Rust生命周期、所有权和引用。以下是我的代码:pub struct LinkedList { head: Option<Box<LinkedListNode>>, } pub struct LinkedListNode { n...

25得票3回答
在一个借用对象的循环中操作该对象

我正在使用Rust编写一些代码,用于连接到远程服务器,并根据该服务器发送的消息计算某些统计信息或执行基于这些统计信息的操作。但这更多是一个学习项目,我遇到了一个问题。 以下是我减少到最少以重现问题的代码:// Repro code for error[E0502]: cannot borro...

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

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

23得票1回答
拥有一些数据和对该数据的引用的结构体

构造对象会分配该对象生命周期所需的数据,但也会创建另一个需要保留对该数据引用的对象:pub fn new() -&gt; Obj { let data = compute(); Obj { original: data, processed: ...

23得票2回答
无法解包一个共享引用后面的值。

这是我正在尝试执行的代码:fn my_fn(arg1: &amp;Option&lt;Box&lt;i32&gt;&gt;) -&gt; i32 { if arg1.is_none() { return 0; } let integer = arg1.u...

22得票3回答
想要使用模式匹配向HashMap中添加元素,在同时获取可变借用时出现了多次借用的问题。

我正在尝试编写一些玩具代码,以在HashMap中存储单词出现的次数。如果键存在,它会将计数器增加一,如果键不存在,则使用值1添加它。我本能地想用模式匹配来做这件事,但我遇到了一个“借用可变”的错误:fn read_file(name: &amp;str) -&gt; io::Result&lt...

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

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

22得票1回答
如何替换 Mutex 内的值?

我有一个Git仓库,它被隐藏在一个Mutex后面: pub struct GitRepo { contents: Mutex&lt;GitContents&gt;, workdir: PathBuf, } 我想查询它,但只能最多查询一次:在查询过后,我希望只使用我们第一次...

22得票2回答
在闭包中借用一个结构体字段时可变地借用另一个字段

我有一个包含两个字段的结构体,我想要用其中一个字段(不可变借用)来修改另一个字段(可变借用),但是借用检查器给出了一个错误提示。 例如,以下代码:struct Struct { field1: Vec&lt;i32&gt;, field2: Vec&lt;i32&gt;, }...

21得票2回答
为什么Rust禁止多个可变引用?

就像题目中所说,为什么Rust会防止多个可变引用?我已经读过rust-book的章节了,我理解当我们有多线程代码时,可以确保不会发生数据竞争,但是让我们看一下这段代码:fn main() { let mut x1 = String::from("hello"); let r1 ...