如果我有两个不同的特征:
trait Foo {}
trait Bar {}
然后可以有一个Option可以是其中任何一个(当然也可以是None),例如:
struct FooBar {
fb: Option<~Foo or Bar>
}
let fb1 = FooBar{fb: Some(~somestruct as ~Foo)}
let fb2 = FooBar{fb: Some(~otherstruct as ~Bar)}
并让他们都工作?
答案 0 :(得分:4)
Option<T>
没有什么特别之处;它只是这个,加上一些便利方法和一些文档:
pub enum Option<T> {
Some(T),
None,
}
记住这一点:它一直是枚举。你可以制作自己的枚举。它肯定是明确的,但要学会欣赏这是一件好事。
pub enum FooOrBar {
Foo(~Foo),
Bar(~Bar),
}
您可以制作此的Option<T>
。或者,如果你能从中获得更好的语义含义,你可能更喜欢将两者融合在一起:
pub enum Something {
Foozy(~Foo),
Bark(~Bar),
ADifferentVariant,
}