我有一个泛型为T的结构体,我想为这个结构体创建一个示例的向量,其中每个示例的T可以不同。我意识到我可能需要使用一个盒子,并且可能需要将我的结构体视为trait对象,但我不确定如何处理,因为它不是实现相同trait的不同结构体的集合,而是具有不同泛型的相同结构体。下面是我到目前为止所做的,希望能说明我正在努力实现的目标,它不起作用,因为dyn关键字似乎需要一个trait而不是一个泛型结构。
struct Point<T> {
x: T,
y: T,
}
struct Points {
points: Vec<Box<dyn Point>>,
}
fn main() {
let points = Points {
points: vec![Point { x: 1, y: 2 }, Point { x: 1.1, y: 2.2 }],
};
}
3条答案
按热度按时间u1ehiz5o1#
“具有不同泛型的相同结构体”的行为与“不同结构体”非常相似。在这里,当处理trait对象时,具体类型并不重要,这是trait对象背后的关键思想。
例如:
zynd9foi2#
您可以将点包裹在
enum
中:Playground
iszxjhcz3#
以下作品: