use utls::containers::prelude::*;
fn main() {
println!("CircularBuffer Example:");
let mut int_buffer = CircularBuffer::new(5).unwrap();
for i in 0..4 {
int_buffer.push(i).expect("Buffer full");
}
println!("Buffer contents: {:?}", int_buffer.iter().collect::<Vec<_>>());
println!("Peek first element: {:?}", int_buffer.peek());
println!("Pop first element: {:?}", int_buffer.pop());
println!("Available space: {}", int_buffer.free_space());
assert!(int_buffer.push(5).is_ok());
println!("Available space after push: {}", int_buffer.free_space());
assert!(int_buffer.push(6).is_err());
println!("\nCircularBuffer with Strings:");
let mut string_buffer = CircularBuffer::new(3).unwrap();
string_buffer.push(String::from("Hello")).unwrap();
string_buffer.push(String::from("World")).unwrap();
for s in string_buffer.iter() {
println!("Buffer contains: {}", s);
}
println!("\nSorted Container Example:");
let desc_sort = DefaultSorts::random();
let mut sorted_numbers = SortedList::new(desc_sort);
sorted_numbers.push(5);
sorted_numbers.push(2);
sorted_numbers.push(8);
sorted_numbers.push(1);
println!("Sorted numbers (random):");
for i in 0..4 {
if let Some(num) = sorted_numbers.get(i) {
println!("Position {}: {}", i, num);
}
}
sorted_numbers.set_sort(DefaultSorts::ascending());
sorted_numbers.man_sort();
println!("Sorted numbers (ascending):");
for i in 0..4 {
if let Some(num) = sorted_numbers.get(i) {
println!("Position {}: {}", i, num);
}
}
println!("\nSorted Strings Example:");
let string_sort = |slice: &[String]| {
let mut vec = slice.to_vec();
vec.sort();
vec
};
let mut sorted_strings = SortedList::new(string_sort);
sorted_strings.push_no_sort(String::from("zebra"));
sorted_strings.push_no_sort(String::from("apple"));
sorted_strings.push_no_sort(String::from("banana"));
println!("Unsorted strings:");
for i in 0..3 {
if let Some(s) = sorted_strings.get(i) {
println!("Position {}: {}", i, s);
}
}
sorted_strings.man_sort();
println!("Sorted strings (alphabetical):");
for i in 0..3 {
if let Some(s) = sorted_strings.get(i) {
println!("Position {}: {}", i, s);
}
}
}