如何从元组结构中提取值?

twi*_*ezo 0 struct rust

我有一个结构对象,该对象具有一个来自外部库的字段,该字段定义为: pub struct SomeId(pub i64);

使用println!打印对象将显示此信息,例如:SomeId(123)

我创建了自己的结构:

#[derive(Debug)]
pub struct Something {
    pub id: i64,
}
Run Code Online (Sandbox Code Playgroud)

而我试图把价值从外部结构SomeId到外地id在我的结构Something

let test = Something { id: ?? };
Run Code Online (Sandbox Code Playgroud)

或者从struct中提取值SomeId

let test: i64 = ??;
Run Code Online (Sandbox Code Playgroud)

Mal*_*ice 5

你应该试试

let test = Something { id: external_struct.0 };
Run Code Online (Sandbox Code Playgroud)

或者,对于第二个问题,:

let test = external_struct.0;
Run Code Online (Sandbox Code Playgroud)

这些结构体的形式,struct structname(variables...)被称为元组结构体,其行为与 Rust 中的非常相似tuples

  • 说 `let test = external_struct` 创建了一个类型为 `SomeId` 而不是 `Something` 的变量。 (2认同)

小智 5

也可以使用结构分解从中提取价值SomeId

pub struct SomeId(pub i64);

#[derive(Debug)]
pub struct Something {
    pub id: i64,
}

fn main() {
    let some_id = SomeId(42);
    let SomeId(id) = some_id;
    let test = Something { id: id };
    let test: i64 = id;
}
Run Code Online (Sandbox Code Playgroud)

链接到更多示例。