struct LinkedListNode { next : Option>, data : i32 } struct LinkedList { head : Option> } impl LinkedList { fn new() -> LinkedList { LinkedList {head: None} } fn insert(&mut self, new_data : i32) { if self.head.is_none() { self.head = Some(Box::new(LinkedListNode {next: None, data: new_data})); return; } let mut current = &mut self.head; while let Some(ref mut node) = *current { current = &mut node.next; } *current = Some(Box::new(LinkedListNode {next: None, data: new_data})); } fn print(self){ if self.head.is_none() { println!(""); return; } let mut current = & self.head; while let Some(ref node) = current { println!(" {} ", node.data); current = &node.next; } } } fn main(){ let mut llist = LinkedList::new(); llist.insert(2); llist.insert(4); llist.insert(6); llist.insert(8); llist.print(); }