可能在 Rust 中有 struct/tuple 个特征?

Possible to have a struct/tuple of traits in Rust?

我知道这在 Rust 中是非法的:

trait A { }
struct S { a: A, b: A }

原因是除最后一个成员之外的所有成员都必须调整大小,而特征没有调整大小。

这是否意味着不可能拥有 struct/tuple 的特质?我如何 return 来自函数的一对值,我只知道它们实现了某个特征?

你已经确定了字体大小不对的问题,所以你只需要把它变成大小合适的字体即可。

如果您不拥有这些对象,您可以使用引用。

struct S1<'a> {
    a: &'a A,
    b: &'a A,
}

如果生命周期不同,您可以使用两个而不是一个。

struct S1<'a, 'b> {
    a: &'a A,
    b: &'b A,
}

如果你想拥有这些物品,你可以使用Box

struct S2 {
    a: Box<A>,
    b: Box<A>,
}

此外,如果你在编译时知道具体类型,而你只想编写泛型代码,那么你也可以写泛型结构

struct S3<A1: A, A2: A> {
    a: A1,
    b: A2,
}

S3 中,每个 A1A2 代表一个具体类型,当您在代码中实例化它时,它会实现特征 A