1impl Solution {2pub fn odd_even_list(head: Option<Box<ListNode>>) -> Option<Box<ListNode>> {3let mut head = head;4let mut odd = Box::new(ListNode::new(-1));5let mut cur_odd = &mut odd;6let mut even = Box::new(ListNode::new(-1));7let mut cur_even = &mut even;8let mut is_odd = true;9while head.is_some() {10if is_odd {11cur_odd.next = head;12cur_odd = cur_odd.next.as_mut()?;13head = cur_odd.next.take();14} else {15cur_even.next = head;16cur_even = cur_even.next.as_mut()?;17head = cur_even.next.take();18}19is_odd = !is_odd;20}21cur_odd.next = even.next;22return odd.next;23}24}