可能在 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
中,每个 A1
或 A2
代表一个具体类型,当您在代码中实例化它时,它会实现特征 A
。
我知道这在 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
中,每个 A1
或 A2
代表一个具体类型,当您在代码中实例化它时,它会实现特征 A
。