31得票2回答
为什么在闭包参数中使用"&&"?

关于这个示例,我有两个问题: let a = [1, 2, 3]; assert_eq!(a.iter().find(|&&x| x == 2), Some(&2)); assert_eq!(a.iter().find(|&&x| x == 5), ...

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

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

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

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

10得票2回答
为什么str类型主要以借用形式存在?

这是如何使用str类型: let hello = "Hello, world!"; // with an explicit type annotation let hello: &'static str = "Hello, world!"; let hello: str = "...

9得票1回答
为什么通过原始指针修改可变引用的值不违反Rust的别名规则?

我对 Rust 的别名规则并没有非常牢固的理解(而且据我所知,它们并没有得到很好的定义),但我不明白为什么在 std::slice 文档中 这个代码示例 是正确的。我在此重复这段代码: let x = &mut [1, 2, 4]; let x_ptr = x.as_mut_ptr(...

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

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

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...

46得票3回答
如何在单个函数中接受 &str、String 和 &String?

我想编写一个单独的函数,它接受一个 &amp;str,一个 String 和一个借用的 &amp;String。我已经编写了以下两个函数:fn accept_str_and_ref_string(value: &amp;str) { println!("value: {}", valu...

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

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

7得票1回答
使用带有生命周期参数的trait相关联类型时出现了生命周期错误

由于使用关联类型,在Rust 1.14中我遇到了终身错误,以下是两个类似的程序,第一个程序可以编译通过而第二个程序则出现了终身错误。 程序 #1 — 编译通过 trait Trait&lt;'a&gt; { type T; } struct Impl; impl&lt;'a&g...