Advertisement
tomdodd4598

Untitled

Jun 6th, 2021
1,500
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Rust 0.74 KB | None | 0 0
  1. use crate::item::Item;
  2.  
  3. use std::borrow::{Borrow, BorrowMut};
  4. use std::cell::RefCell;
  5. use std::fmt::Display;
  6. use std::ops::Deref;
  7. use std::rc::Rc;
  8.  
  9. fn insert_item<T>(start: &mut Option<Box<Item<T>>>, value: T, insert_before: fn(&Item<T>, &Item<T>) -> bool) where T: PartialEq + Display {
  10.     println!("Creating item: {}", value);
  11.     let mut item = Item::new(value);
  12.     let mut current = &*start;
  13.     let mut previous = &None;
  14.    
  15.     while current.is_some() && !insert_before(&item, current.as_ref().unwrap()) {
  16.         previous = current;
  17.         current = &current.as_ref().unwrap().next;
  18.     }
  19.    
  20.     item.next = *current;
  21.     let mut item = Some(Box::new(item));
  22.    
  23.     if previous.is_some() {
  24.         previous.as_mut().unwrap().next = item
  25.     }
  26.     else {
  27.         *start = item
  28.     }
  29. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement