9得票2回答
如何检查两个引用变量是否借用了同一个对象?

我有一个结构体,所有内容都是只读引用,例如: struct Pt { x : f32, y : f32, } struct Tr<'a> { a : &'a Pt } 我想为Tr实现impl Eq,以测试底层a引用是否完全相同的Pt: let trBase1 = P...

9得票1回答
Rust的借用规则是否妨碍函数式数据结构的实现?

函数式数据结构(如Haskell/Clojure/Scala中使用的哈希数组映射树)依赖于底层数据结构中的大量共享。例如,如果我们在一个类似于映射的数据类型上实现insert,那么通常是通过对实现数据结构的树进行路径复制来实现的。 考虑到这些数据结构非常依赖于共享(且没有主要所有者),那么借...

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

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

8得票1回答
如何复制一个 &[u8] 切片?

如何复制 &[u8] 切片的内容? 我正在尝试编写一个函数,它以缓冲区作为输入,将每个字节与给定的密钥进行异或操作,并返回最终结果。 我不希望它破坏输入缓冲区。 pub fn xor_buffer(buffer_in: &[u8], key: char) -> &a...

8得票3回答
为什么Rust忽略了对&str的生命周期检查?

fn main() { let strA = "a"; let result; { let strB = "abc"; result = longest(strA, strB); // Will return strB } ...

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

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

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

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

7得票1回答
将Vec<String>作为IntoIterator<&'a str>传递

我有一个函数,它应该从单词列表中随机选择单词: pub fn random_words&lt;'a, I, R&gt;(rng: &amp;mut R, n: usize, words: I) -&gt; Vec&lt;&amp;'a str&gt; where I: IntoIte...

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

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

7得票1回答
无法返回一个字符串切片的向量:借用的值没有足够长的生命周期

我是Rust的新手,borrow checker 让我有些困惑。我不明白为什么这段代码无法编译。如果这个问题已经被回答过了,那么很抱歉,但我在其他问题中找不到解决方案。 我知道这与将本地字符串作为切片返回(&amp;str)相似,但在那种情况下,只返回了一个字符串,对我来说不足以理解我正在尝...