enums - Rust中的静态枚举

标签 enums rust static

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

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

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

我想知道是否可以在代码中引用sayt_code的相同实例。

以下代码是否会生成Orientation::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;

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

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

Is there a better (syntactically safer/simpler/cleaner) way to do the same thing?



使用枚举的“最佳”方法是最简单的方法:
let o1 = Orientation::North;
let o2 = Orientation::North;

关于enums - Rust中的静态枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62450750/

相关文章:

c# - Winforms 将枚举绑定(bind)到单选按钮

java - 我可以在 Java 运行时添加和删除枚举元素吗

sql - 生成 SQL 字符串的 Rust 函数是否容易受到 SQL 注入(inject)的攻击?

记录 Rust 程序

rust - 我可以从函数中自动返回 Ok(()) 或 None 吗?

java - 获取静态变量(类变量)的 PropertyChangeListener 通知

java - Hibernate 异常 : java. lang.IllegalArgumentException:枚举类的未知名称值 []

c# - 为什么 switch for enum 接受隐式转换为 0 但不接受任何其他整数?

language-agnostic - 非静态的私有(private)常量有什么用处吗?

c - 每次调用函数时迭代一个值