在结构中使用枚举会导致"未解析的名称"错误

时间:2016-02-14 22:15:47

标签: rust

我来自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未知。

1 个答案:

答案 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
};