gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 07:47:48 26 4
gpt4 key购买 nike

我通读了 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`

我不明白这个错误,因为它引用的枚举在同一个文件中。如果我真的不能在枚举变体上使用特征,有什么方法可以保证任何枚举特征都必须实现某些方法?

最佳答案

Can traits be used on enum types?

。事实上,您已经为您的枚举定义了多个特征;性状Debug , CopyClone :

#[derive(Debug, Copy, Clone)]
pub enum SceneType

问题是您没有尝试为您的枚举实现Playable,而是试图为枚举的变体之一实现它。枚举变体不是类型

正如错误信息告诉您的那样:

help: you can try using the variant's enum: `SceneType`
impl Playable for SceneType {
fn play() {}
}

另见:

关于enums - 特征可以用于枚举类型吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51567350/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com