What is the syntax to match on a reference to an enum?

As of Rust 1.26, the idiomatic way is the way that you originally wrote it because match ergonomics have been improved:

use std::fmt;

pub enum Animal {

impl fmt::Display for Animal {
    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
        match self {
            Animal::Cat(_) => f.write_str("c"),
            Animal::Dog => f.write_str("d"),

fn main() {
    let p: Animal = Animal::Cat("whiskers".to_owned());
    println!("{}", p);

Leave a Comment