借用检查器是指Rust编程语言使用的所有权概念的编译时分析。此标记应用于相关问题和错误。
我目前正在用 Rust 编写一个解析器,我需要能够实习字符串文字和变量标识符。解析器应该借用一个 HashSet 来添加值,并返回带有
我制作了这个名为 Oracle 的 Rust 结构,它可以回答任何问题 /// Oracle是一个能够回答问题的智慧实体 pub 结构 Oracle { 来源:Rc, } 实现 Oracle {...
我正在创建一个具有两个字段的 struct App:一个字段包含一个拥有的窗口(此处简化为 u32),另一个字段包含一个最终应引用上面窗口的结构。然而,
我对管道的语义有点困惑 |匹配臂中的操作员。具体来说,我有一些代码,其中使用管道似乎会导致移动后使用借用检查器错误。 这是一分钟...
为什么 | (管道)在 Rust 模式匹配中会导致“移动后使用的值”?
编辑:事实上这是我的 IDE 的问题,而不是我的代码的问题。具体来说,这是 RustRover 的借用检查器中的一个错误(在 2024.1 和 2024.2 EAP 中)。 误报: 在 Rust 中,我有点困惑
我遇到了与这个问题中提到的相同的问题。简而言之,他的问题是借用一个可变的对象,因为它在闭包内使用,而借用它作为不可变的对象,因为它在闭包内使用......
将枚举转换为 Rust 中的另一个枚举,同时有选择地移动包含的值
我有两个这样的枚举: 枚举 E1 { A { val: SomeValue1 }, B(某个值2), C(某些值3), } 枚举 E2 { 一个, B(某个值2), C(某些值3), D、 乙 } 这里 SomeValueX 类型并不意味着...
我想将柴油异步板条箱中的数据库事务包装到一个通用连接对象中,该对象本身提供异步事务方法。不幸的是,无论我尝试借用检查器
为什么我不能移出对之后不再使用的拥有的 vec 的共享引用?
我想知道如果向量被拥有并且之后不被使用,为什么不可能移出对向量的共享引用? 我有一些代码看起来像这样: #[导出(调试)] 结构项目(
我正在尝试使用 wgpu 和 winit 用 Rust 编写一个渲染引擎库,并且一直在遵循“学习 WGPU”教程。不幸的是,一些不安全的代码(create_surface)在......
使用`&str`索引`HashMap<&String, V>`
使用 &str 索引 HashMap<&String, V> 的正确方法是什么? Rust 报告 &String 不是索引所需的 Borrow。 (这似乎有点傻...
使用 `&str` 从 `HashMap<&String, V>` 建立索引
使用 &str 索引 HashMap<&String, V> 的正确方法是什么? Rust 报告 &String 不是索引所需的 Borrow。 (这似乎有点傻...
为什么通过特征对象进行突变会失败,但通过函数指针进行突变却可以?
我有一个 Rust 程序,其中包含两个版本的结构及其方法实现。第一个版本使用函数指针,而第二个版本使用装箱特征对象。这是代码: 酒吧街...
Optional<String>的最佳借用访问器模式是什么?
这个 rust-analyzer 风格指南推荐了这样的访问器: 结构人{ // 不变式:永远不会为空 名字:字符串, middle_name:选项 } 隐含人{
Rust 中可选<String>的最佳借用访问器模式是什么?
这个 rust-analyzer 风格指南推荐了这样的访问器: 结构人{ // 不变式:永远不会为空 名字:字符串, middle_name:选项 } 隐含人{
我有一个结构,Thing 实现 Clone 但不实现 Copy,它有两种方法,一种用于工作,另一种用于从现有的“父”Thing 派生“子”Thing。不是...
Rust 认为参数是在 `impl Trait` 返回值中借用的,并抱怨“借用的值寿命不够长”
简化代码: 结构体A(/**/); 特质 Foo {} 特质栏{ fn 栏(a: &A) -> impl Foo; fn baz() -> impl Foo { 让 a = A(); 自我::酒吧(&a) } } 错误: 错误...
Rust 中如何组织阻塞方法和带有 mutable &self 的方法?
let mut peer_poller = Arc::new(Mutex::new(PeerPoller::new()?)); 让 mut peer_poller_clone = peer_poller.clone(); 线程::生成(移动 || { 环形 { 让 p = rx.recv().unwrap(); 匹配
我有以下代码,该代码无法编译,因为调用“self.client.dispose()”会移动对象“client”,因为 dispose 具有此签名:dispose(self)。到底有没有...
Rustlings 的这个练习经过更正后得出: fn move_semantics4() { 让 mut x = Vec::new(); 让 y = &mut x; y.推(42); 令 z = &mut x; ...