簡體   English   中英

如何將枚舉引用轉換為數字?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM