ps4 - rust traduccion
¿Cómo convierto una referencia de enumeración a un número? (1)
Tengo una enumeración:
enum Foo {
Bar = 1,
}
¿Cómo convierto una referencia a esta enumeración en un número entero para usar en matemáticas?
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
es correcto, pero tienes que implementar Copy
porque, de lo contrario, *foo as u8
una referencia no válida.
#[derive(Copy, Clone)]
enum Foo {
Bar = 1,
}
fn f(foo: &Foo) -> u8 {
*foo as u8
}
Ya que su enumeración será un objeto muy liviano, debería pasarlo por valor de todos modos, para lo cual también necesitará Copy
.