有没有将结构体转换为元组的方法?

4

给出以下类似的内容:

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

有没有内置的方法或者任何特性可以让我获得一个元组(i32, String)?

1个回答

15

有没有将结构体转换为元组的方法?

可以。

是否有任何内置方法或可实现的特质?

不太可能。


我会实现 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();

另请参阅:


1
当你实现 From 时,我很确定你会自动获得 Into。所以你可以这样做:let tuple: (i32, String) = example.into();。这通常很好,因为你可以利用类型提示。 - PitaJ

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接