【发布时间】:2020-07-17 05:25:43
【问题描述】:
在 Rust 中似乎有两种类似的数据结构方式:
pub enum FooEnum {
Bar {ts: DateTime, bar: Bar},
Baz {ts: DateTime, baz: Baz}
}
和
pub struct FooGeneric<T: BarAndBazLike> {
pub ts: DateTime<Utc>,
pub content: T
}
我可以看到枚举方法为我提供了更好的字段名foo 和bar,代价是重复定义ts。
使用通用方法有什么好处吗? (我将使用带有 JSON 和 bincode 的 serde。)
【问题讨论】:
-
枚举的所有变体都将具有相同的大小,而通用结构(可能)不会。 IE。您将无法将具有不同泛型参数的结构实例分配给同一个变量,而您将能够将不同的枚举变体分配给同一个枚举变量。不 - 枚举不是运行时多态的 - 如果您需要运行时多态,请阅读
traits和动态调度 -
这能回答你的问题吗? Why does Rust have struct and enum?