borrow-checker相关内容

如何在向量的元素上运行for循环,并在Ruust中更改for循环内部和外部的向量?

我是铁锈新手。我需要在for循环之前创建一个向量。在上面跑来跑去。更改for循环中的向量。然后更改for循环后的向量。 我尝试了以下代码,并尝试使用不可变的借入,但两者都不起作用。 fn main() { let mut vec1 = vec![4, 5]; vec1.push(6); for i in vec1 { if i % 2 == 0 ..
发布时间:2022-05-08 10:04:44 其他开发

铁锈:无限循环中的借用检查器

我目前正在构建一个带有主循环的应用程序。设置作为引用添加到结构中以避免装箱。问题是,即使它看起来完全有效,借用检查器也不会验证无限循环。例如,以下代码不能编译: struct Demo { data: Vec, } impl Demo { fn new(data: Vec) -> Self { Demo ..
发布时间:2022-04-20 09:47:35 其他开发

无法多次通过管道传入或传出生成的子进程

我希望能够使用 Rust 生成一个子 shell,然后反复向它传递任意命令并处理它们的输出.我在网上找到了很多示例,向我展示了如何传递单个命令并接收其单个输出,但我似乎无法重复执行. 例如,下面的代码挂在注释之后的行.(我想可能 read_to_string() 会阻塞,直到它从子进程接收到标准输出,但如果是这样,我不明白为什么该输出不会出现......) 让 mut child_shel ..
发布时间:2022-01-23 08:26:18 其他开发

实施“谨慎"take_while 使用 Peekable

我想使用 Peekable 作为新 cautious_take_while 操作的基础,该操作类似于 IteratorExt 中的 take_whilecode> 但不消耗第一个失败的项目.(还有一个问题是这是否是一个好主意,以及是否有更好的方法来在 Rust 中实现这个目标——我很乐意得到这个方向的提示,但主要是我试图理解我的代码在哪里打破). 我尝试启用的 API 基本上是: 让 mu ..
发布时间:2022-01-10 15:06:43 其他开发

试图从 RwLock 返回引用,“借来的值不够长"错误

我最近一直在做我的第一个 Rust 项目,但遇到了障碍.我正在使用 HashMap 将 Strings 映射到 AtomicUsize 整数.HashMap 由 RwLock 保护以允许并发访问.我希望能够在 HashMap 中返回对 AtomicUsize 值的引用,但是如果我尝试在 RwLockWriteGuard 的生命周期之后将这些引用返回给调用者 我收到一个错误,提示 借用值的寿命不够长 ..
发布时间:2022-01-08 14:35:25 其他开发

如何在 Rust 中懒惰地创建其构造使用 self 的地图条目

我正在尝试在 Rust 中实现惰性构造/记忆化评估/缓存习语. 有一个外部类型,它有一堆数据和一个访问器方法.访问器方法需要返回一个缓存的计算(如果有的话)或者计算它并将返回值存储在映射中以供以后使用.缓存值不需要引用外部值,所以不存在循环引用问题;但它确实需要访问外部值的数据才能构建自己. 这是一个没有通过 Rust 借用检查器的完整示例: 使用 std::collections: ..
发布时间:2022-01-08 14:34:38 其他开发

使用入口模式时如何改变 HashMap 的其他元素?

我想使用 HashMap 来缓存依赖于映射中其他条目的昂贵计算.入口模式只提供对匹配值的可变引用,而不提供对 HashMap 其余部分的引用.我非常感谢有关解决此(不正确)玩具示例的更好方法的反馈: 使用 std::collections::HashMap;使用 std::collections::hash_map::Entry::{Occupied, Vacant};fn 计算(缓存:&mut ..
发布时间:2022-01-08 13:49:20 其他开发

在 Rust 中实现多个可变(静态分配、静态调度等)回调的等价物的正确方法是什么?

我有以下示例代码,它是其他编程语言中事件驱动 API 的标准基础,但在 Rust 中,借用检查器通过“不能多次借用 p1 作为可变变量"来阻止它一次": struct Pen {color_cmyk: u32,墨水:使用,}impl 笔 {pub fn new() ->钢笔 {钢笔 {color_cmyk:0x80800000,墨水:20000,}}pub fn write(&mut self, ..
发布时间:2022-01-03 08:26:45 其他开发

临时值在此语句结束时被释放

我正在尝试使用 Select crate 抓取网页: let document = Document::from_read(response).unwrap();对于 document.find(Class("lia-list-row")) 中的节点{let title = node.find(Class("page-link")).next().unwrap();让 title_text = ..
发布时间:2021-12-25 09:53:42 其他开发

使用条目模式时如何改变 HashMap 的其他元素?

我想使用 HashMap 来缓存依赖于地图中其他条目的昂贵计算.条目模式仅提供对匹配值的可变引用,而不提供对 HashMap 其余部分的可变引用.我非常感谢有关解决此(不正确)玩具示例的更好方法的反馈: 使用 std::collections::HashMap;使用 std::collections::hash_map::Entry::{Occupied, Vacant};fn计算(缓存:&mu ..
发布时间:2021-12-25 09:43:00 其他开发

不能在同一范围内的两个不同闭包中可变地借用

我的目标是创建一个独立于底层数据结构工作的函数(特别是洪水填充).我试图通过传入两个闭包来做到这一点:一个用于查询,它不可变地借用一些数据,另一个用于变异,它可变地借用相同的数据. 示例(在 Rust Playground 上测试)::> #![feature(nll​​)]fn foo(n: i32, 闭包: &F, mut_closure: &mut G)在哪里F:Fn(i32) -> ..
发布时间:2021-12-25 09:41:46 其他开发

如何移出作为选项的结构字段?

我想收集对结构的更改并一次应用它们.基本轮廓如下所示: enum SomeEnum {噗,酒吧,}struct SomeStruct {属性:SomeEnum,next_attrib: Option,}impl SomeStruct {pub fn apply_changes(&mut self) {如果让 Some(se) = self.next_attrib {self.atrib = se ..
发布时间:2021-12-25 09:32:18 其他开发

在 Rust 中结束可变借用的选项有哪些?

我正在为借阅检查器苦苦挣扎 - 很奇怪. 虽然我通过添加块找到了解决方案,但我很好奇是否有其他方法可以结束可变借用,以便下一条语句之后可以访问绑定. 这是我目前所做的: let mut canvas: Canvas = Canvas {宽度:5,高度:5,数组:vec!['x';5*5],};{让 mut 渲染器:CanvasRenderer = CanvasRenderer::ne ..
发布时间:2021-12-25 09:27:55 其他开发