18.6 Selecting the Appropriate Collection

  • Vec<T>: When you need a dynamic array-like structure, with random indexing by usize, and efficient appending at the end.
  • String: For owned, mutable text data.
  • HashMap<K, V>: For fast lookups by arbitrary keys, remembering to use std::collections::HashMap.
  • BTreeMap<K, V>: For sorted key-value storage and O(log n) complexity.
  • HashSet<T> and BTreeSet<T>: For maintaining unique items.
  • VecDeque<T>: For efficient insertion/removal at both ends.
  • LinkedList<T>: For specific insertion/removal patterns where linked-list semantics are necessary.