///|
#warnings("-deprecated")
fn main {
println("--- Moon Collections Examples ---")
// Example 1: BitSet
println("\n[BitSet Example]")
let bs1 = @bitset.BitSet::new()
bs1.set(10)
bs1.set(100)
println("BitSet 1 contains 10? " + bs1.contains(10).to_string())
println("BitSet 1 contains 99? " + bs1.contains(99).to_string())
println("BitSet 1 count of set bits: " + bs1.count().to_string())
let bs2 = @bitset.BitSet::new()
bs2.set(100)
bs2.set(200)
bs1.union(bs2)
println("After union with bs2, set bits index: \{bs1.iter().to_array()}")
println("JSON representation of bs1: " + bs1.to_json().stringify())
// Example 2: IndexMap
println("\n[IndexMap Example]")
let map : @indexmap.IndexMap[String, Int] = @indexmap.IndexMap::new()
let _ = map.set("first", 1)
let _ = map.set("second", 2)
let _ = map.set("third", 3)
println("IndexMap size: " + map.size().to_string())
println("Iteration order (keys): \{map.keys().to_array()}")
// swap_remove
let _ = map.swap_remove("first")
println("After swap_remove('first'), keys: \{map.keys().to_array()}")
println("JSON representation of map: " + map.to_json().stringify())
// Example 3: Deque
println("\n[Deque Example]")
let deque : @deque.Deque[String] = @deque.Deque::new(2)
deque.push_back("middle")
deque.push_front("first")
deque.push_back("last")
println("Deque order: \{deque.to_array()}")
// Example 4: Graph dependency order
println("\n[Graph Example]")
let graph : @graph.Graph[String] = @graph.Graph::new(true)
let _ = graph.add_edge("parse", "typecheck")
let _ = graph.add_edge("typecheck", "codegen")
println("Build order: \{graph.topological_sort()}")
println("Shortest path: \{graph.shortest_path("parse", "codegen")}")
// Example 5: Disjoint-set connectivity
println("\n[DisjointSet Example]")
let connectivity = @disjoint_set.DisjointSet::new(5)
let _ = connectivity.union(0, 1)
let _ = connectivity.union(1, 2)
println("0 connected to 2? " + connectivity.connected(0, 2).to_string())
println("Components: \{connectivity.components()}")
}