borrow-checker相关内容

Rust中的闭包参数存在生命周期问题

尝试使用与下面的(代码9)中的 print 函数完全相同的闭包时,我得到一个错误 错误是通常的借入值寿命不足.我试图在操场中复制它,但是我不能.我敢肯定这主要是因为我不太了解这里发生的事情,因此我们将不胜感激. 我不明白的是,调用 print 函数和调用 check 闭包之间有什么区别.它们具有完全相同的签名,甚至具有相同的主体. 创建它们的上下文如何影响借阅检查器?对此有什么解 ..
发布时间:2021-04-22 19:32:53 其他开发

在迭代向量时,如何变异向量中的另一个项目,而不是向量本身?

对我来说很清楚,对向量进行迭代不应该让循环体随意改变向量.这样可以防止迭代器失效,而迭代器失效容易导致错误. 但是,并非所有类型的突变都会导致迭代器失效.请参见以下示例: let mut my_vec: Vec> = vec![vec![1,2], vec![3,4], vec![5,6]]; for inner in my_vec.iter_mut() { ..
发布时间:2021-02-09 19:35:36 其他开发

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

我正在尝试在Rust中实现惰性构造/记忆化评估/缓存习惯. 有一个外部类型,它具有大量数据和访问器方法.访问器方法需要返回一个缓存的计算(如果有的话),或者对其进行计算并将返回值存储在映射中以供以后使用.缓存的值不需要引用外部值,因此不存在循环引用问题;但是它确实需要访问外部值的数据才能构造自身. 这是一个完整的示例,没有通过Rust的借阅检查器: use std::collec ..
发布时间:2020-11-22 05:22:32 其他开发

如何从RefCell< T>借用T.作为参考?

有时我有一个struct,其中包含一个包裹在RefCell中的值,我想借用该值,但是我不想使访问器函数的签名依赖于内部实现.为了使其正常工作,我需要将引用以Ref而不是&T的形式返回. 例如,如果这是我的结构: use std::cell::RefCell; pub struct Outer { inner: RefCell, } 我可以这样编写访问器: ..
发布时间:2020-11-13 05:31:08 其他开发

如何更改要遍历的结构?

此问题是由此CodinGame难题提出的。 我正在使用Dijkstra的方法实现基本的寻路算法。它使用边界 HashMap和完成 HashMap来保存与寻路相关的节点信息。在一个特定的循环中,我在边界中找到价值最高的节点,删除该节点,然后将该节点添加到完成 ,并在 boundary 中添加/更新节点的邻居信息。 尝试变异边界在循环时使Rust的借阅检查器变得不容易,但是循环的逻辑对我来 ..

Rust vs Borrow Checker中的树遍历

我正在尝试在Rust中实现树结构,对其进行遍历并对其进行修改,但是借阅检查器遇到了麻烦。我的设置大致如下: #![feature(slicing_syntax)] use std :: collections :: HashMap; #[deriving(PartialEq,Eq,Hash)] struct Id { id:int,//让我们假装是 } struc ..
发布时间:2020-10-18 00:10:20 其他开发

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

我的目标是创建一个独立于基础数据结构的功能(特别是泛洪)。我试图通过传递两个闭包来做到这一点:一个用于查询,它不可变地借用一些数据,另一个用于变异,它不可变地借用相同的数据。 示例(在 Rust Playground 上进行了测试): #![feature(nll)] fn foo(n:i32,闭包:& F ,mut_closure:& mut G) 其中 F:F ..
发布时间:2020-10-02 22:55:46 其他开发

独立于方法返回RWLockReadGuard

我有一个对象类型 Arc> 我有一个方法应该引用SessionData 的某种方式 fn some_method(session: ...) 我正在使用Rocket(Rust的Web框架),我不能直接调用该方法,因为它是由Rocket调用的.但是,我可以为它提供一个实现,该实现创建一个将传递给处理程序的对象.看起来像这样: impl ..
发布时间:2020-07-31 05:39:55 其他开发