13得票2回答
为什么self的可变借用不能变成不可变借用?

这段代码未能通过令人头疼的借用检查器 (playground):struct Data { a: i32, b: i32, c: i32, } impl Data { fn reference_to_a(&mut self) -> &i3...

13得票1回答
借用Box<Trait>的内容是如何工作的?

我有这个最小示例代码:use std::borrow::BorrowMut; trait Foo {} struct Bar; impl Foo for Bar {} fn main() { let mut encryptor: Box&lt;Foo&gt; = Box::new(...

12得票2回答
将可变的self引用传递给拥有对象的方法

以下是一个简单的模拟,它包含一个矩形区域和两个球在其中弹跳。 Field 结构体有一个 update 方法,该方法在每个球上调用 update。 在它们自己的 update 方法中,这些球需要根据速度移动。但它们还需要对彼此以及场地边界做出反应。fn main() { let mut ...

12得票1回答
在向HashMap中插入或更新值后,如何获取键的数量?

我想要在地图中插入或更新一个值,然后获取键的数量。 use std::collections::HashMap; fn main() { let mut map = HashMap::new(); let count = map.entry("Tom").or_inser...

12得票1回答
如何在不烦扰借用检查器的情况下建立双向映射?

从为什么不能在同一结构体中存储值和对该值的引用?中得知,我不能同时在同一结构体中存储值和对该值的引用。 提出的解决方案是: 最简单且推荐的解决方案是不要尝试将这些项目放在同一个结构体中。通过这样做,您的结构体嵌套将模拟代码的生命周期。将拥有数据的类型放入一个结构体中,然后提供方法以允许根据...

12得票4回答
谁借用了一个变量?

我正在与借用检查器作斗争。我有两个类似的代码片段,一个像我预期的那样工作,另一个则不是。 能够按照我的期望工作的代码:mod case1 { struct Foo {} struct Bar1 { x: Foo, } impl Bar1 {...

12得票2回答
如何在不传递给函数的情况下重新借用可变引用?

我发现了一个例子,手动内联一个函数会改变借用检查器对该函数的处理方式,导致它无法编译通过。这可能是依赖于函数签名中的信息。如何在内联版本中提供这些信息? 我的想法是怎么工作的 让'a和'b成为生命周期,'a短于'b(可以写成'b: 'a)。 假设我有一个p:&amp;'b mut f32。我可...

12得票2回答
循环中的双重可变借用错误即使使用NLL也会发生

假设我有几个类似以下示例的结构,在next()方法中,我需要使用用户提供的缓冲区拉取下一个事件,但如果此事件是注释,并且忽略注释标志设置为true,则需要再次拉取下一个事件:struct Parser { ignore_comments: bool, } enum XmlEvent&...

12得票1回答
“borrowed data cannot be stored outside of its closure”是什么意思?(该问题涉及IT技术)

编译以下代码时:fn main() { let mut fields = Vec::new(); let pusher = &amp;mut |a: &amp;str| { fields.push(a); }; } 编译器给我以下错误:error: bo...

11得票1回答
使用构建器模式时,“borrowed value does not live long enough”(借用的值存活时间不够长)

我有以下代码:pub struct Canvas&lt;'a&gt; { width: isize, height: isize, color: Color, surface: Surface, texture: Texture, rendere...