enum List {
  Node(i32, Box<List>),
  Tail,
}

use List::{Node, Tail};

fn main() {
    let list_1 = Node(100,
        Box::new(Node(110,
            Box::new(Tail)
        ))
    );
    let list_2 = Node(200, Box::new(list_1));
    // コメントアウトを解除するとコンパイルエラーになります。
    //let list_3 = Node(300, Box::new(list_1));
}
