如何在Rust中将enum变量转换为u8?

bnl4lu3b  于 2023-05-22  发布在  其他
关注(0)|答案(1)|浏览(195)

我很乐意。

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

我不得不用手来实现。
有没有人有一个解决方案,将使用表示转换我的类型。
我认为在不安全的环境下做这件事是可能的,但我宁愿不做。
它对文化来说仍然很有趣。

a0zr77ik

a0zr77ik1#

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

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

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

相关问题