我有一个结构对象,其中包含来自外部库的一个字段,其定义为: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 = ??;
答案 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);
}