28得票1回答
如何解决“String字段未实现`Copy`”的问题?

我正在使用Rust构建一个简单的命令行待办事项应用程序。如果我不实现复制特性,则会出现以下错误:"move occurs because 'todo' has type 'todo::Todo', which does not implement the 'Copy' trait&q...

7得票1回答
Rust中的字符串相等性比较:引用和解引用是如何工作的?

作为一名Rust新手,我正在解决Project Euler问题,以帮助我熟悉这种语言。第4个问题涉及回文,我找到了两种创建回文向量的方法,但我不确定它们中的任何一种是如何工作的。 我正在使用一个字符串向量products,计算方法如下: let mut products = Vec::ne...

7得票2回答
在循环中,借用值的生命周期不够长

我正在尝试解析一个文件,并从函数返回Vec<Vec<&str>>。但是在文件读取循环中将内容push到向量时,出现了借用值错误。 use std::io::{self, BufReader, prelude::*}; use std::fs::File; f...

11得票2回答
为什么通过 `for` 循环迭代集合在 Rust 中被认为是一种“移动”操作?

我有以下 Rust 程序。 fn main() { let v = vec![100, 32, 57]; for i in v { println!("{}", i); } println!("{:?}", v); } 运行时我得到了: ...

9得票2回答
在Rust中如何以可变和不可变的方式借用?

我已经阅读了这些文档:https://doc.rust-lang.org/rust-by-example/scope/borrow/mut.html 我也读过这个问题:(Cannot borrow immutable borrowed content as mutable) 这些文档帮...

7得票1回答
你能在不使用显式引用或所有权移动的情况下,在结构体上实现数学运算吗?

我不知道如何在结构体上实现干净的数学运算,而不需要复制每个结构体值。 如果你想在结构体上执行数学运算,可以编写以下代码: use std::ops::*; struct Num { i: i32, } impl Add for Num { type Output = N...

16得票3回答
在Rust中解引用字符串和HashMap

我正在尝试理解Rust中HashMap的工作原理,我想出了这个例子。 use std::collections::HashMap; fn main() { let mut roman2number: HashMap<&'static str, i32> = Ha...

27得票4回答
在迭代递归结构时无法获取可变引用:同一时间无法作为可变借用多次。

我试图迭代地导航递归数据结构,以便在特定位置插入元素。据我所知,这意味着获取对该结构根部的可变引用,并将其逐步替换为对其后继者的引用:type Link = Option<Box<Node>>; struct Node { next: Link } stru...

41得票1回答
价值存在时间不够长

我不完全了解lifetime,但我认为b的lifetime将会在self之前结束。 那么,如何编辑这段代码?我需要复制内存中的某些内容吗?如果我创建一个新的实例,它的lifetime必须符合这种情况。pub struct Formater { layout: &'static...

8得票1回答
我可以避免使用显式生命周期标识符,改用引用计数(Rc)吗?

我正在阅读《Rust Book》,一切都很容易理解(感谢书的作者),直到涉及到lifetimes。我花了一整天的时间阅读了许多关于生命周期的文章,但仍然对正确使用它们非常不确定。 尽管如此,我理解的是,显式生命周期指定符的概念旨在解决悬空引用的问题。我也知道 Rust 有引用计数智能指针(R...