[英]How do I convert an enum reference to a number?
我有一個枚舉:
enum Foo {
Bar = 1,
}
如何將對此枚舉的引用轉換為要在數學中使用的整數?
fn f(foo: &Foo) {
let f = foo as u8; // error[E0606]: casting `&Foo` as `u8` is invalid
let f = foo as &u8; // error[E0605]: non-primitive cast: `&Foo` as `&u8`
let f = *foo as u8; // error[E0507]: cannot move out of borrowed content
}
*foo as u8
是正確的,但你必須實現Copy
,否則你會留下無效的引用。
#[derive(Copy, Clone)]
enum Foo {
Bar = 1,
}
fn f(foo: &Foo) -> u8 {
*foo as u8
}
由於你的枚舉將是一個非常輕量級的對象,你應該按值傳遞它,你也需要Copy
它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.