有什么方法可以将结构体转换为元组吗?

问题描述 投票:0回答:2

鉴于这样的事情:

struct Example {
    a: i32,
    b: String,
}

是否有任何内置方法或任何我可以实现的特征可以让我获得

(i32, String)
的元组?

rust
2个回答
17
投票

有没有办法将结构体转换为元组

是的。

我可以实现的任何内置方法或任何特征

其实不然。


我会实现

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();

另请参阅:


0
投票

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();

我知道这是一篇旧帖子,但我想我会帮助其他人寻找答案。

© www.soinside.com 2019 - 2024. All rights reserved.