From e13ad0afae5124efec3b522ebc04062ee06464c8 Mon Sep 17 00:00:00 2001 From: crupest Date: Fri, 20 Sep 2019 20:11:27 +0800 Subject: import(solutions): ... --- works/solutions/src/add_two_numbers.rs | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) (limited to 'works/solutions/src') diff --git a/works/solutions/src/add_two_numbers.rs b/works/solutions/src/add_two_numbers.rs index 3e3122a..d2ca858 100644 --- a/works/solutions/src/add_two_numbers.rs +++ b/works/solutions/src/add_two_numbers.rs @@ -20,30 +20,29 @@ use std::ptr::NonNull; struct List { head: Option>, - tail: NonNull>>, + tail: Option>>, } impl List { fn new() -> List { - let mut result = List { + List { head: None, - tail: NonNull::dangling(), - }; - result.tail = NonNull::from(&mut result.head); - return result; + tail: None, + } } fn append(&mut self, val: i32) { let node = Some(Box::new(ListNode::new(val))); unsafe { - match self.tail.as_mut() { + match self.tail { None => { self.head = node; - self.tail = NonNull::from(&mut self.head); + self.tail = Some(NonNull::from(self.head.as_mut().unwrap())); } - Some(t) => { - t.next = node; - self.tail = NonNull::from(&mut t.next); + Some(mut t) => { + let last_node = t.as_mut(); + last_node.next = node; + self.tail = Some(NonNull::from(last_node.next.as_mut().unwrap())); } } } @@ -149,7 +148,8 @@ mod test { #[test] fn test() { assert_eq!( - Solution::add_two_numbers(vec![2, 4, 3].into_list(), vec![5, 6, 4].into_list()).into_vec(), + Solution::add_two_numbers(vec![2, 4, 3].into_list(), vec![5, 6, 4].into_list()) + .into_vec(), vec![7, 0, 8] ); assert_eq!( -- cgit v1.2.3