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

时间:2017-08-15 09:56:26

标签: struct rust

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

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

我创建了自己的结构:

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

我试图将外部结构SomeId的值放入我的结构id中的字段Something

let test = Something { id: ?? };

或从结构SomeId中提取值:

let test: i64 = ??;

3 个答案:

答案 0 :(得分:5)

也可以使用struct destructuring从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;
}

Link更多示例。

答案 1 :(得分:2)

您应该尝试

let test = Something { id: external_struct.0 };

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

let test = external_struct.0;

形式为struct structname(variables...)的这些结构称为元组结构,其作用与生锈中的tuples非常相似。

答案 2 :(得分:2)

您可能正在寻找类似下面的内容吗?

pub struct SomeId(i32);

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


fn main() {
    let sid = SomeId(10);
    let sth = Something { id: sid.0 };
    println!("{:?}", sth);
}

Playground link