impl Drop for List {fn drop(&mut self) {let mut cur_link = mem::replace(&mut self.head, Link::Empty);// `while let` == "do this thing until this pattern doesn't match"while let Link::More(mut boxed_node) = cur_link {cur_link = mem::replace(&mut boxed_node.next, Link::Empty);// boxed_node goes out of scope and gets dropped here;// but its Node's `next` field has been set to Link::Empty// so no unbounded recursion occurs.}}}
