如何在Rust中将枚举值的引用强制转换为u16(基本枚举类型)?

如何在Rust中将枚举值的引用强制转换为u16(基本枚举类型)?,rust,enums,reference,clone,primitive-types,Rust,Enums,Reference,Clone,Primitive Types,鉴于: #[repr(u16)] #[派生(PartialEq、调试、Eq、哈希、克隆)] pub enum SomeEnum{ SomeValue1=1, SomeValue2=1布尔{ 让actual_value_16=actual_value_ref.clone()作为u16;//如何在不进行克隆的情况下进行强制转换? 设base_value_u16=base_value为u16; 实际\u值\u u16&基本\u值\u u16==基本\u值\u u16//位掩码操作 } 没有显式克隆,

鉴于:

#[repr(u16)]
#[派生(PartialEq、调试、Eq、哈希、克隆)]
pub enum SomeEnum{
SomeValue1=1,
SomeValue2=1布尔{
让actual_value_16=actual_value_ref.clone()作为u16;//如何在不进行克隆的情况下进行强制转换?
设base_value_u16=base_value为u16;
实际\u值\u u16&基本\u值\u u16==基本\u值\u u16//位掩码操作
}
没有显式克隆,如何通过引用获取原语的值? 克隆
u16
看起来不像悲剧,但正确的方法是什么?
由于枚举被显式标记为
#[repr(u16)]
为什么编译器不开箱即用?

为了避免显式的
克隆,我认为对于
某些枚举

它已经有了它(
[deriver(..,clone)]
,派生(复制)
就足够了。这可以通过导出
Copy
*实际的过滤器类型为u16
来解决,但这正是我想要避免的-拥有一个似乎不需要额外开销的副本。@4n您应该使用
Copy
,这不会增加任何开销。如果您正在制作
u16
,唯一避免“复制”的方法通过引用来生成它的字节数,这实际上需要更多的工作。请参见上的示例,它实际上是一条指令。@4n我想到的
复制
-更新了我的答案。如果我没弄错的话
复制
是按位复制。例如,如果我有5个检查(
一些检查
调用)它将被复制5次。尽管速度很快,但如果引用(借用)原始值,那么产生这种开销听起来很奇怪。有什么办法可以避免它吗?您确实意识到引用是复制的,大小是u16的4倍,并且每次需要使用它后面的实际u16时都需要间接寻址?