Enums 特征可以用于枚举类型吗?

Enums 特征可以用于枚举类型吗?,enums,rust,traits,Enums,Rust,Traits,我通读了全文,找到了在结构上使用traits的简洁定义。可以在enum类型上使用traits吗?我看到过答案是否定的,但他们已经3岁了,并没有完全做到我想做的事情 我试着这样做: #[derive(Debug, Copy, Clone)] pub enum SceneType { Cutscene, Game, Menu, Pause, Credits, Exit, } //We want to guarantee every SceneType

我通读了全文,找到了在结构上使用traits的简洁定义。可以在
enum
类型上使用traits吗?我看到过答案是否定的,但他们已经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() {}
}
错误[E0573]:应为类型,找到变量`SceneType::Cutscene`
-->src/main.rs:16:19
|
16 |可为SceneType::Cutscene播放的impl{
|                   ^^^^^^^^^^^^^^^^^^^
|                   |
|不是一种类型
|帮助:您可以尝试使用变量的enum:`SceneType`
我不理解这个错误,因为它引用的枚举在同一个文件中。如果我真的不能在枚举变量上使用traits,有没有办法保证任何枚举trait必须实现某些方法

特征可以用于枚举类型吗

。事实上,您已经为枚举定义了多个特征;这些特征,以及:

问题在于,您没有尝试为枚举实现
可播放
,而是尝试为枚举的一个变体实现它。枚举变体不是类型

正如错误消息告诉您的:

帮助:您可以尝试使用变量的enum:`SceneType`
另见:


但如果我想为所有枚举变量(Cutscene.play()、Game.play()等)实现可播放,我应该怎么做?向SceneType.play()方法添加
match
表达式?@rusnasonov yes。
#[derive(Debug, Copy, Clone)]
pub enum SceneType
impl Playable for SceneType {
    fn play() {}
}