Skip list is a kind of ordered map and can store any value inside. See skip list wikipedia page to learn more about this data structure.
rust
fn main() {
let mut list = Skiplist::new(10, false);
list.set(10, "helloworld");
if let Some(t) = list.find(&10) {
println!("{}", t.as_ref());
}
list.remove(&10);
if let Some(t) = list.find(&10) {
println!("{}", t.as_ref());
} else {
println!("not found");
}
}
```rust
pub struct Order { id: i32, name: String, }
impl Order { pub fn new(id: i32, name: String) -> Order { Order { id, name, } } }
impl Display for Order { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { write!(f, "({}, {})", self.id, self.name) } }
impl Drop for Order { fn drop(&mut self) { println!("order destory, id:{}, name:{}", self.id, self.name); } }
fn main() { let mut list = Skiplist::new(10, false); for i in 0..500 { list.set(i, Order::new(i, format!("order {}", i))); }
if let Some(t) = list.find(&15) {
println!("value is {}", t.as_ref().name);
}
list.set(15, Order::new(666, format!("new order 666")));
if let Some(t) = list.find(&15) {
println!("new value {}", t.as_ref().name);
}
println!("\r\n\r\ndelete 25");
list.remove(&30);
list.to_string();
} ```
This library is licensed under MIT license. See LICENSE for details.