#[derive(PartialEq, Eq, Debug, Clone)] enum LispValue { Nil, Cons(Box, Box), Symbol(String), } use LispValue::*; fn main() { match_box::match_box! { match LispValue::Nil { Nil => {}, Cons(_, _) => {}, Symbol(mb!(** s)) => {}, _ => panic!(), } } }