Collection members разделяют безопасное чтение, explicit mutators, ordered snapshots, key constraints, порядок callback и faulting operations вместо использования host container как спецификации.
Канонический контракт
Array surface включает push, get, length, slice, join, search, sorting, higher-order methods, stack, insert/remove, reverse, retain, clear. Map даёт insert/get/getOr/remove, ordered keys/values/entries snapshots, size, membership, update, mapValues, filter, clear. Set даёт add/remove/contains, size, ordered toArray, union/intersection/difference и clear.
Публичная поверхность
Для мутирующих Array push/pop/clear/reverse/insert/removeAt/sort/sortBy/retain, Map insert/remove/clear/update и Set add/remove/clear нужен let mut. Чтения с возможным отсутствием возвращают Option. Map keys и Set elements следуют recursive keyability. Higher-order operations сохраняют заданный iteration order.
Наблюдаемое поведение
arr.get даёт None вне границ, direct index — fault. map.keys, values и entries — snapshots в insertion order; поздняя mutation их не меняет. Remove и reinsertion перемещают key/element в конец, update существующего Map value сохраняет порядок. Set algebra и sorting следуют объявленным constraints, не host hashing.
Текущая поддержка
Компилятор проверяет перечисленные члены Array, Map и Set: обобщённые типы, параметры, функции обратного вызова, результаты, свойства и требования к изменяемости. Методы языка среды не добавляются автоматически.
Ограничения и исключения
Выход за границы при прямом индексировании, неподходящие типы ключей Map и Set, изменение неизменяемой привязки, несовместимая функция обратного вызова, x in map, строковое .length и неизвестные члены являются ошибками. Методы коллекций не добавляют общее равенство для Map и Set.
Пример
let mut scores: Map<string, int> = Map.new()
scores.insert("ada", 10)
scores.insert("lin", 12)
let ada = scores.get("ada")
let missing = scores.get("missing")
let keys = scores.keys
print("{ada}:{missing}:{keys}")