我很愿意这么做.

#[repr(u8)]
pub enum MessageType {
    Authentification,
    // ...
}
fn main() {
  let message_type = MessageType::Authentification;
  let binary_representation: u8 = message_type.into();
}

我认为我自己必须手动执行.

有谁有解决方案可以使用表示法来转换我的类型.

我认为在不安全的地方做这件事是可能的,但我宁愿不做.

对于文化来说,它仍然可能是有趣的.

推荐答案

您必须手动定义每个变量的值,并使用as而不是.into()进行转换,因为Into<u8>不是由MessageType实现的:

#[repr(u8)]
pub enum MessageType {
    Authentication = 1,
    // ...
}

fn main() {
    let n = MessageType::Authentication as u8;
    println!("{}", n);
}

Rust相关问答推荐

如何找到一个数字在二维数组中的位置(S)?

如何指定不同的类型来常量Rust中的泛型参数?

除了调用`waker.wake()`之外,我如何才能确保future 将再次被轮询?

如何计算迭代器适配器链中过滤的元素的数量

变量需要parse()中的显式类型

返回Result<;(),框<;dyn错误>>;工作

如何执行数组文字的编译时串联?

当我编译 Rust 代码时,我是否缺少 AVX512 的目标功能?

在使用粗粒度锁访问的数据 struct 中使用 RefCell 是否安全?

为什么在 Allocator API 中 allocate() 使用 `[u8]` 而 deallocate 使用 `u8` ?

UnsafeCell:它如何通知 rustc Select 退出基于别名的优化?

为什么 Rust 需要可变引用的显式生命周期而不是常规引用?

Rust 如何将链表推到前面?

将多维数组转换为切片

当在lambda中通过引用传递时,为什么会出现终身/类型不匹配错误?

为什么我可以同时传递可变和不可变引用?

无法把握借来的价值不够长寿,请解释

`map` 调用在这里有什么用吗?

你能告诉我如何在 Rust 中使用定时器吗?

TinyVec 如何与 Vec 大小相同?