Rust Collections
Table of Contents
1. Rust Collections
1.1. Vec
1.1.1. 访问数据
- &v[0] 返回一个引用
- v[0] 返回一个 copy
- &v[1..3] 返回一个 slice
- v.as_slice() 返回一个 slice
- v.first(), v.last(), v.get(index) 返回 Option<&T>
- v.first_mut(), v.last_mut(), v.get_mut(index) 返回 Option<&mut T>
- slice.to_vec() / slice.to_owned() 生成一个 vec
1.1.2. iteration
- v.into_iter()
- v.iter()
- v.iter_mut()
- iter.collect::<Vec<i32>>()
1.1.3. 基本操作
- vec![0;10]
- v.push(T)
- v.pop() -> Option<T>
- v.len()
- v.is_empty()
- v.insert()
- v.remove(index)
- v.resize(len,value)
- v.truncate(len)
- v.clear()
- v.extend()
- v.drain()
- v.retain()
- v.dedup()
- v.swap()
- v.swap_remove()
1.1.4. split
- v.split_at()
- v.split()
- v.chunks()
- v.windows()
- v.join()
1.1.5. sort
- v.sort()
- v.sort_by()
- v.sort_by_key()
- v.reverse()
1.1.6. compare
- v1 == v2
- v1 > v2
- v1.starts_with(v2)
- v1.ends_with(v2)
1.2. VecDeq
- v.push_front()
- v.pop_front()
- v.push_back()
- v.pop_back()
- v.front()
- v.back()
- v.front_mut()
- v.back_mut()
- v.from(vec![1,2,3])
1.3. BinaryHeap
- q.from(vec![1,2,3])
- q.push()
- q.pop()
- q.peek() -> Option<&T>
1.4. HashMap
1.4.1. 基本操作
- iter.collect::<HashMap<i32,i32>>(), 其中 iter 是 (k,v) 的 iterator
- map.contains_key(&K)
- map.get(&K) -> Option<&V>
- map.get_mut(&K)
- &map[&K]
- map.insert(k,v)
- map.extend()
- map.remove(&K)
- map.retain(fn)
- map.entry(k).or_insert(v)
- map.entry(k).or_default()
- map.entry(k).or_insert_with(fn)
1.4.2. iterator
- for (k,v) in map
- for (k,v) in map.iter()
- map.keys()
- map.values()
- map.values_mut()
1.5. BTreeMap
- map.range(1..4)
- map.range_mut(1..4)
1.6. HashSet
1.6.1. 基本操作
- iter.collect::<HashSet<i32>>()
- set.contains()
- set.insert()
- set.remove()
1.6.2. set
- set1.intersaction(&set2)
- &set1 & &set2
- set1.union(&set2)
- &set | & set2
- set1.difference(&set2)
- &set1 - &set2
- set1.symmetric_difference(&set2)
- &set ^ &set2
- set1.is_disjoint(&set2)
- set1.is_subset(&set2)
- set1.is_superset(&set2)
- set1 == set2
- set1 != set2
1.7. BTreeSet
- set.range(1..4)