我来自C编程背景并开始学习Rust。
是否可以在结构中使用enum
,如下面的代码段?
enum Direction {
EastDirection,
WestDirection
}
struct TrafficLight {
direction: Direction, // the direction of the traffic light
time_elapse : i32, // the counter used for the elpase time
}
let mut tl = TrafficLight {direction:EastDirection, time_elapse:0};
当我编译代码时,它抱怨EastDirection
未知。
答案 0 :(得分:6)
是的,这是可能的。在Rust enum
中,默认情况下,全局命名空间中的变体(如EastDirection
)不。要创建TrafficLight
实例,请写:
let mut t1 = TrafficLight {
direction: Direction::EastDirection,
time_elapse: 0,
};
请注意,由于变体不在全局命名空间中,因此不应在变体名称中重复enum
名称。所以最好将其改为:
enum Direction {
East,
West,
}
/* struct TrafficLight */
let mut tl = TrafficLight {
direction: Direction::East,
time_elapse: 0
};