417得票4回答
为什么我不能在同一个结构体中存储一个值和对该值的引用?

我有一个值,我想在我的自定义类型中存储该值以及内部某个东西的引用:struct Thing { count: u32, } struct Combined<'a>(Thing, &'a u32); fn make_combined<'a>() -&g...

196得票2回答
无法移动借用内容 / 无法移动共享引用后面

我不理解错误信息cannot move out of borrowed content。我曾多次收到这个错误并成功解决,但我从未明白其中的原因。例如:for line in self.xslg_file.iter() { self.buffer.clear(); for cu...

49得票1回答
为什么我可以返回对本地文字的引用但不能返回变量的引用?

为什么这段代码能够编译?fn get_iter() -> impl Iterator<Item = i32> { [1, 2, 3].iter().map(|&i| i) } fn main() { let _it = get_iter(); } [...

37得票1回答
从HashMap或Vec返回引用会导致借用超出其所在的范围?

我一直遇到一个编译错误,Rust抱怨我在尝试可变借用时有一个不可变借用,但是不可变借用来自另一个范围,并且我没有从中携带任何内容。 我有一些代码,在映射中检查值,如果存在,则返回它,否则需要以各种方式改变映射。问题在于,即使这两个操作完全分开,我似乎也找不到让Rust让我这样做的方法。 ...

36得票1回答
可变引用是否具有移动语义?

fn main() { let mut name = String::from("Charlie"); let x = &mut name; let y = x; // x has been moved say_hello...

35得票1回答
这个语句结束时,临时值将被释放。

我正在尝试使用Select crate来抓取一个网页: let document = Document::from_read(response).unwrap(); for node in document.find(Class("lia-list-row")) { let tit...

34得票2回答
为什么Rust NLL在同一语句中的多个借用中无法工作?

首先,我尝试了这样的代码: let mut vec = vec![0]; vec.rotate_right(vec.len()); 由于以下原因,它无法编译: 错误[E0502]:无法将 `vec` 作为不可变借用,因为它也被作为可变借用 我认为Rust borrow check...

30得票1回答
由于在函数参数中也被借用为可变引用,因此无法作为不可变引用进行借用。

这里发生了什么(playground)? struct Number { num: i32 } impl Number { fn set(&mut self, new_num: i32) { self.num = new_num; } ...

29得票3回答
基于值从HashMap中删除条目

我写了下面的代码(+演示),用于基于值从HashMap中删除条目。它能正常工作,但我感觉我在与借用检查器进行斗争,因为我使用了: clone() 来避免对同一组键的两个引用 额外的 let tmp = 绑定来增加临时值的生存期 Note to translator: Please...

28得票1回答
如何在for循环中进行可变借用?

我尝试了:fn main() { let mut vec = [1, 2, 3]; for mut x in &vec { *x = 3; } for mut &x in &vec { x = 3; } for mut *x i...