Skip to main content

basics/
basics.rs

1use lessvec::prelude::*;
2
3fn main() {
4    // Basic push/pop
5    println!(">>> Executing: push(1); push(2)");
6    let mut v = LessVec::new();
7    v.push(1);
8    v.push(2);
9    println!("initial: {:?}", v.as_slice());
10    println!();
11
12    // Reserve capacity
13    println!(">>> Executing: reserve(8) and then print len/capacity");
14    v.reserve(8);
15    println!("len = {}, capacity = {}", v.len(), v.capacity());
16    println!();
17
18    // Insert / remove
19    println!(">>> Executing: insert(1, 5); remove(1)");
20    v.insert(1, 5);
21    println!("after insert: {:?}", v.as_slice());
22    let removed = v.remove(1);
23    println!("removed element = {}", removed);
24    println!();
25
26    // Mutate via as_mut_slice
27    println!(">>> Executing: as_mut_slice()[0] = 42");
28    v.as_mut_slice()[0] = 42;
29    println!("after mutation: {:?}", v.as_slice());
30    println!();
31
32    // Drain elements
33    println!(">>> Executing: push(100); drain()");
34    v.push(100);
35    let drained: Vec<_> = v.drain().collect();
36    println!("drained: {:?}", drained);
37    println!(
38        "after drain: len = {}, capacity = {}",
39        v.len(),
40        v.capacity()
41    );
42    println!();
43
44    // Consume via into_iter
45    println!(">>> Executing: into_iter()");
46    let mut v2 = LessVec::new();
47    v2.push(10);
48    v2.push(20);
49    let collected: Vec<_> = v2.into_iter().collect();
50    println!("into_iter collected: {:?}", collected);
51    println!();
52
53    // Macro example - 1
54    println!(">>> Macro example 1 - Executing: lessvec![1, 2, 3]");
55    let v_macro = lessvec![1, 2];
56    println!("macro created: {:?}", v_macro.as_slice());
57    println!();
58
59    // Macro example - 2
60    println!(">>> Macro example 2 - Executing: lessvec![0; 2]");
61    let v_macro = lessvec![0; 2];
62    println!("macro created: {:?}", v_macro.as_slice());
63}