//@ run-pass | |
#![feature(box_patterns)] | |
#[derive(Clone)] | |
enum Noun | |
{ | |
Atom(isize), | |
Cell(Box<Noun>, Box<Noun>) | |
} | |
fn fas(n: &Noun) -> Noun | |
{ | |
match n { | |
&Noun::Cell(box Noun::Atom(2), box Noun::Cell(ref a, _)) => (**a).clone(), | |
_ => panic!("Invalid fas pattern") | |
} | |
} | |
pub fn main() { | |
fas( | |
&Noun::Cell(Box::new(Noun::Atom(2)), | |
Box::new(Noun::Cell(Box::new(Noun::Atom(2)), Box::new(Noun::Atom(3))))) | |
); | |
} |