#[derive(PartialEq, Eq, Clone, Debug)] pub struct ListNode { pub val: i32, pub next: Option> } // impl ListNode { #[inline] pub fn new(val: i32) -> Self { ListNode { next: None, val } } } pub fn vector2list(vec: Vec) -> Option> { let mut result: Option> = None; for i in 0..vec.len() { let mut new_result = Some(Box::new(ListNode::new(vec[vec.len() - i - 1]))); new_result.as_mut().unwrap().next = result; result = new_result; } result } pub fn list2vector(lst: Option>) -> Vec { let mut result: Vec = Vec::new(); let mut cur = &lst; loop { match cur { None => break, Some(node) => { result.push(node.val); cur = &node.next; }, } } result }