Rust中的静态枚举

詹姆斯·帕克

是否有可能定义一个枚举而不用担心Rust中的内存分配?

假设以下是我的枚举的定义。

pub enum Orientation {
    North,
    South,
    East,
    West,
}

我想知道是否可以Orientation::North在代码中引用相同的say实例

以下代码是否会产生两个单独的实例North

let o1 = Orientation::North;
let o2 = Orientation::North;

我知道我可以通过定义如下的静态变量来实现。有没有更好的方法(在语法上更安全/更简单/更干净)来完成相同的事情?

pub enum Orientation {
    North,
    South,
    East,
    West,
}

static NORTH: Orientation = Orientation::North;
static SOUTH: Orientation = Orientation::South;
static WEST: Orientation = Orientation::West;
static EAST: Orientation = Orientation::East;
彼得·霍尔

您在运行时询问的代码与您编写的代码相同:

let o1: u8 = 0;
let o2: u8 = 0;

枚举可让您抽象出实际发生的情况,因此您可以同时获得效率和语法上的便利,并在忘记匹配项中的变体时获得类型检查和错误。

创建静态“常量”将不会有任何结果,因为传递字节是您已经可以做的最快的事情。

有没有更好的方法(在语法上更安全/更简单/更干净)来完成相同的事情?

使用枚举的“最佳”方法是最简单的方法:

let o1 = Orientation::North;
let o2 = Orientation::North;

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章