48得票2回答
为什么Drop需要使用&mut self而不是self?

为什么Drop的方法签名是fn drop(&mut self)而不是fn drop(self)?这使得从字段中移动值变得困难,例如self.join_handle.join()或std::mem::drop(self.file)(错误:无法移动定义了Drop trait的类型X)。

7得票2回答
借用结构体属性的引用

看起来如果你借用了一个结构体字段的引用,整个结构体就会被认为是被借用的。我已经成功地分离出了一个我想要做的事情的示例。我只想得到对B中一个字段的“只读”引用,以获取一些数据,然后修改B的另一个字段。有没有一种符合Rust语言惯例的方法可以实现这个? struct A { i: i32...

12得票2回答
有没有一种方法可以在不使用map_err的情况下使用and_then处理不同的错误类型?

我有一些功能,当失败时会返回不同的错误类型。 首先,我有一个构建器,其中包含这个方法: #[derive(Debug)] pub enum BuilderError { ElementMissing(&'static str), } pub fn spawn(self) ...

9得票1回答
编译器为什么不抱怨一个移动到for循环中的迭代器是不可变的?

我正在阅读《Rust Book》第二版,发现在迭代器部分有以下示例: let v1 = vec![1, 2, 3]; let v1_iter = v1.iter(); for val in v1_iter { println!("Got: {}", val); } 为什么...

15得票1回答
Rust数组是否有类似JavaScript的indexOf函数?

var fruits = ["Banana", "Orange", "Apple", "Mango"]; var index = fruits.indexOf("Apple"); let fruits = ["Banana", "Orange", "Apple", "Mango"]; let ...

16得票1回答
Rust使用Reqwest处理错误响应体

我在我的Rust应用程序中使用reqwest(版本0.10.4)crate进行HTTP调用,但是找不到如何处理可能返回多个可能响应体的API调用的示例,主要是为了错误处理。 例如,API调用可以响应成功的JSON结构,或者格式为错误结构的结构:{ "errors": ["..."] ...

7得票2回答
如何在追踪中使用动态跨度名称?

我需要动态地为不同的span命名。如何创建具有动态命名的跟踪span? use tracing; // 0.1.22 fn main() { let name: &'static str = "foo bar"; let span = tracing::span!(...

55得票4回答
在Rust中编写getter/setter属性

我正在编写一个非常简单的 getter/setting 模型,我想开始在 Rust 中使用它,出于简单性的原因,我将使用 struct 和 impl。 struct Person { firstName: String, lastName: String, } impl P...

9得票1回答
如何在Rust中映射数组引用

我有一个数组 let buffer: &[u8] = &[0; 40000]; 但是当我想像这样进行映射: *buffer.map( |x| 0xff); 我遇到了以下错误: error[E0599]: no method named `map` found fo...

7得票3回答
如何将一个变量作为另一个变量的数据类型?

如果我有一个变量存储了某样东西的数据类型,比如data_type,我该如何创建一个新变量,使其数据类型与data_type中定义的一致? 例如: struct a { var: String, } struct b { var: String, } let var_typ...