To si myslím že je něco jiného - resp. vynecháním mut skutečně zabráním modifikaci vnitřku kolekce - ale mám k dispozici operace pro vytváření nových immutable struktur ze starých?
Tedy něco jako
let s1 = Set::empty()
let s2 = s1.add("foo")
let s3 = s2.add("bar")
let s4 = s3.remove("foo")
?
To myslím immutable variantami kolekcí (přičemž immutable kolekce by vůbec neměly mít metody upravující existující instanci kolekce, jen vytváření nových instancí ze starých, pokud možno s maximálním využitím structural sharingu, který je tímto umožněný)