Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- use crate::item::Item;
- use std::borrow::{Borrow, BorrowMut};
- use std::cell::RefCell;
- use std::fmt::Display;
- use std::ops::Deref;
- use std::rc::Rc;
- fn insert_item<T>(start: &mut Option<Box<Item<T>>>, value: T, insert_before: fn(&Item<T>, &Item<T>) -> bool) where T: PartialEq + Display {
- println!("Creating item: {}", value);
- let mut item = Item::new(value);
- let mut current = &*start;
- let mut previous = &None;
- while current.is_some() && !insert_before(&item, current.as_ref().unwrap()) {
- previous = current;
- current = ¤t.as_ref().unwrap().next;
- }
- item.next = *current;
- let mut item = Some(Box::new(item));
- if previous.is_some() {
- previous.as_mut().unwrap().next = item
- }
- else {
- *start = item
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement