在以前 我浅薄的知识告诉我 枚举只能这样
enum ENUMXX
{
One,
Two
}
这就只是枚举
 rust的例子一开始也很正常
match SomeOption {
        None => None,
        Some(i) => Some(i + 1),
    }这样解析一个Option
 后来发现
pub enum List {
    Empty,
    Elem(i32, Box<List>),
}他这样用来写链表,这里也还好,就是普通俩类型仍然是match
 接下来
impl List {
    pub fn new() -> Self {
        List { head: Link::Empty }
    }
}?
 怎么还能给他实现成员函数?
 经过阅读,大概感觉这个枚举算一个结构体
 new的时候实际还是创建了一个枚举对象
 后面的方法基本靠match self相关的东西来做
impl List {
    pub fn new() -> Self {
        List { head: Link::Empty }
    }
    pub fn push(&mut self, elem: i32) {
        let new_node = Box::new(Node {
            elem: elem,
            next: mem::replace(&mut self.head, Link::Empty),
        });
        self.head = Link::More(new_node);
    }
    pub fn pop(&mut self) -> Option<i32> {
        match mem::replace(&mut self.head, Link::Empty) {
            Link::Empty => None,
            Link::More(node) => {
                self.head = node.next;
                Some(node.elem)
            }
        }
    }
}代码来自圣经
                










