borrowing相关内容

如何通过获取可变变量的所有权来替换它的值?

我正在使用 LinkedList,我想删除所有未通过测试的元素.但是,我遇到了错误cannot move out of borrowed content. 据我了解,这是因为我正在使用 &mut self,所以我无权使包含的值之一无效(即移动),即使是片刻构造一个新的值列表. 在 C++/Java 中,我会简单地迭代列表并删除任何符合条件的元素.由于我还没有找到删除,我将其解释为迭代、 ..
发布时间:2022-01-10 15:07:30 其他开发

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

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

将自引用传递给包含对象的函数

我正在尝试理解 Rust 的所有权模型.在结构上调用函数时,我试图传递对包含对象的引用. 这是我的结构: pub struct Player {}impl 播放器 {pub fn 接收(自我,应用程序:&应用程序){}} 如您所见,receive 需要对 App 对象的引用. pub struct App {酒吧播放器:播放器,}实现应用{pub fn 发件人(自己){//如何调用 p ..
发布时间:2021-12-25 09:51:43 其他开发

为什么是“&"?在闭包参数中使用?

关于这个例子,我有两个问题: 让 a = [1, 2, 3];assert_eq!(a.iter().find(|&&x| x == 2), Some(&2));assert_eq!(a.iter().find(|&&x| x == 5), None); 为什么在闭包参数中使用 &&x 而不是 x?我知道 & 正在传递对对象的引用,但是使用它两次意味着什么? 我不明白文档说的是什么: ..
发布时间:2021-12-25 09:48:58 其他开发

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

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

迭代递归结构时无法获得可变引用:一次不能多次借用可变引用

我正在尝试以迭代方式导航递归数据结构,以便在特定位置插入元素.就我有限的理解而言,这意味着对结构的根进行可变引用,并连续将其替换为对其跟随者的引用: type Link = Option>;结构节点{下一个: 链接}结构递归{根:链接}实现递归{fn back(&mut self) ->&mut 链接{让 mut anchor = &mut self.root;而让 Some(ref mut n ..
发布时间:2021-12-25 09:22:36 其他开发

如何从 Rc<RefCell<A> 获得 &A 引用?

我有一些设计问题,我想用安全的 Rust 来解决,但我一直无法找到可行的解决方案.我不能使用 RefCell 因为你不能得到 &引用数据,只有Ref/RefMut. 这是一个 简化示例删除了不相关的字段/方法 使用 std::cell::RefCell;使用 std::rc::Rc;struct LibraryStruct {}impl 库结构 {fn 函数(&self, _a: &Tra ..
发布时间:2021-07-13 20:53:18 其他开发

与 Copy 类型的 Borrow 特性相反?

我已经看到 Borrow trait 用于定义接受拥有的类型或引用的函数,例如T 或 &T.然后在函数中调用borrow() 方法来获取&T. 是否有一些特性允许对 T 或 &T 或 T 进行相反的操作)?>复制类型? 例如对于这个例子: 使用 std::borrow::Borrow;fn foo<T:借入<u32>(值:T)->u32 {*值.借用()}fn 主(){println ..
发布时间:2021-07-13 20:39:36 其他开发

如何将借用值包装在也是借用值的 newtype 中?

我正在尝试使用 newtype 模式 包装一个预先存在的类型.该内部类型有一个 modify 方法,它允许我们在回调中使用借用的可变值: struct Val;结构内部(Val);impl 内部 {fn modify(&self, f: F)其中 F: FnOnce(&mut Val) ->&mut Val { ... }} 现在我想在我的 newtype Outer 上提供一个非常相似的方法 ..
发布时间:2021-07-05 20:44:33 其他开发

如何修改在循环中使用自身的Cow变量?

我正在尝试删除字符串中的所有括号.不必太费劲,我只是做一个简单的regexp替换(即,问题不是特别要摆脱嵌套括号的任意级别,而是可以随意在注释中提出一个更好的方法来解决此问题)). 使用regex::Regex;fn main()->结果>{让input =“文本(带有(嵌套的)括号)!";让re = Regex :: new ..
发布时间:2021-05-30 21:17:02 其他开发

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

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