我通读了trait documentation,发现了一个在结构上使用特征的简洁定义。是否可以在enum
类型上使用特征?我看到的答案说不,但是他们已经3岁了,还没有完全按照我的意愿去做。
我试图这样做:
#[derive(Debug, Copy, Clone)]
pub enum SceneType {
Cutscene,
Game,
Menu,
Pause,
Credits,
Exit,
}
//We want to guarantee every SceneType can be played statically
trait Playable {
fn play();
}
impl Playable for SceneType::Cutscene {
fn play() {}
}
error[E0573]: expected type, found variant `SceneType::Cutscene`
--> src/main.rs:16:19
|
16 | impl Playable for SceneType::Cutscene {
| ^^^^^^^^^^^^^^^^^^^
| |
| not a type
| help: you can try using the variant's enum: `SceneType`
我不明白此错误,因为它引用的枚举在同一文件中。如果我真的不能在枚举变量上使用特征,有什么办法可以保证任何枚举特征必须实现某些方法?