Collections
AodhML provides built-in collection types with rich operations and type safety.
Arrays
Fixed-size, homogeneous collections:
let numbers: [i32] = [1, 2, 3, 4, 5]
let first = numbers[0] // 1
let len = numbers.len() // 5
// Array literal with type inference
let inferred = [10, 20, 30] // [i32]
Dynamic Arrays (Lists)
Growable collections:
mut items = [1, 2, 3]
items.push(4)
items.pop() // Removes and returns last element
// Slicing
let slice = items[1..3] // Elements at index 1 and 2
Maps
Key-value associations:
let scores: Map<String, i32> = {
"Alice": 95,
"Bob": 87,
"Carol": 92,
}
let alice_score = scores["Alice"] // 95
scores["Dave"] = 88 // Insert or update
Sets
let unique = Set::from([1, 2, 2, 3, 3, 3])
println(unique.len()) // 3
unique.insert(4)
unique.contains(2) // true
Collection Operations
let nums = [1, 2, 3, 4, 5]
// Filter
let evens = nums.filter(|x| x % 2 == 0) // [2, 4]
// Map
let doubled = nums.map(|x| x * 2) // [2, 4, 6, 8, 10]
// Reduce
let sum = nums.reduce(0, |acc, x| acc + x) // 15
// Chain operations
let result = nums
.filter(|x| x > 2)
.map(|x| x * x)
.collect() // [9, 16, 25]