鉴于这样的事情:
struct Example {
a: i32,
b: String,
}
是否有任何内置方法或任何我可以实现的特征可以让我获得
(i32, String)
的元组?
有没有办法将结构体转换为元组
是的。
我可以实现的任何内置方法或任何特征
其实不然。
From
,这是非常通用的:
impl From<Example> for (i32, String) {
fn from(e: Example) -> (i32, String) {
let Example { a, b } = e;
(a, b)
}
}
你可以像这样使用它:
let tuple = <(i32, String)>::from(example);
let tuple: (i32, String) = example.into();
另请参阅:
derive_getters
板条箱有一个派生宏 Dissolve,它可以将给定的结构自动转换为元组。
示例:
use derive_getters::Dissolve;
#[derive(Dissolve)]
struct Params
{
float: f32,
int: i32,
}
let p = Params { ... };
let (f, i): (f32, i32) = p.dissolve();
我知道这是一篇旧帖子,但我想我会帮助其他人寻找答案。