¿Cuál es la sintaxis para que coincida en una referencia a una enumeración?
Parece que todos los documentos introductorios de Rust'stipos de enumeración explica cómopartido en un objeto enum quepropio, pero ¿qué sucede si no posee el objeto enum y solo tiene una referencia con la que desea comparar? No sé cuál sería la sintaxis.
Aquí hay un código donde intento hacer coincidir una referencia a una enumeración:
use std::fmt;
use std::io::prelude::*;
pub enum Animal {
Cat(String),
Dog,
}
impl fmt::Display for Animal {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
match self {
Animal::Cat(c) => f.write_str("c"),
Animal::Dog => f.write_str("d"),
}
}
}
fn main() {
let p: Animal = Animal::Cat("whiskers".to_owned());
println!("{}", p);
}
losPatio de óxido da errores en los dos primeros casos del partido cuando intenta compilarlo:
error[E0308]: mismatched types
--> src/main.rs:12:13
|
12 | Animal::Cat(c) => f.write_str("c"),
| ^^^^^^^^^^^^^^ expected &Animal, found enum `Animal`
|
= note: expected type `&Animal`
= note: found type `Animal`
error[E0308]: mismatched types
--> src/main.rs:13:13
|
13 | Animal::Dog => f.write_str("d"),
| ^^^^^^^^^^^ expected &Animal, found enum `Animal`
|
= note: expected type `&Animal`
= note: found type `Animal`
¿Cómo puedo cambiar ese código para que se compile? Intenté agregar símbolos en muchos lugares diferentes sin suerte. ¿Es posible hacer coincidir una referencia a una enumeración?