diff options
| author | Nicholas Nethercote <nnethercote@mozilla.com> | 2020-07-14 10:31:54 +1000 |
|---|---|---|
| committer | Nicholas Nethercote <nnethercote@mozilla.com> | 2020-07-14 10:31:54 +1000 |
| commit | c492ca40a288d8a85353ba112c4d38fe87ef453e (patch) | |
| tree | 62edd73b34bd8f44542d039314fb561f9c309ab9 /src | |
| parent | 9d09331e00b02f81c714b0c41ce3a38380dd36a2 (diff) | |
Use `ArrayVec` in `SparseBitSet`.
Instead of `SmallVec`, because the maximum size is known.
Diffstat (limited to 'src')
| -rw-r--r-- | src/librustc_index/Cargo.toml | 2 | ||||
| -rw-r--r-- | src/librustc_index/bit_set.rs | 11 |
2 files changed, 6 insertions, 7 deletions
diff --git a/src/librustc_index/Cargo.toml b/src/librustc_index/Cargo.toml index f0422b1af1b..00b23760182 100644 --- a/src/librustc_index/Cargo.toml +++ b/src/librustc_index/Cargo.toml @@ -11,4 +11,4 @@ doctest = false [dependencies] rustc_serialize = { path = "../librustc_serialize" } -smallvec = { version = "1.0", features = ["union", "may_dangle"] } +arrayvec = "0.5.1" diff --git a/src/librustc_index/bit_set.rs b/src/librustc_index/bit_set.rs index cb8b30830c5..3e1d4b68c6f 100644 --- a/src/librustc_index/bit_set.rs +++ b/src/librustc_index/bit_set.rs @@ -1,5 +1,5 @@ use crate::vec::{Idx, IndexVec}; -use smallvec::SmallVec; +use arrayvec::ArrayVec; use std::fmt; use std::iter; use std::marker::PhantomData; @@ -355,20 +355,19 @@ where const SPARSE_MAX: usize = 8; /// A fixed-size bitset type with a sparse representation and a maximum of -/// `SPARSE_MAX` elements. The elements are stored as a sorted `SmallVec` with -/// no duplicates; although `SmallVec` can spill its elements to the heap, that -/// never happens within this type because of the `SPARSE_MAX` limit. +/// `SPARSE_MAX` elements. The elements are stored as a sorted `ArrayVec` with +/// no duplicates. /// /// This type is used by `HybridBitSet`; do not use directly. #[derive(Clone, Debug)] pub struct SparseBitSet<T: Idx> { domain_size: usize, - elems: SmallVec<[T; SPARSE_MAX]>, + elems: ArrayVec<[T; SPARSE_MAX]>, } impl<T: Idx> SparseBitSet<T> { fn new_empty(domain_size: usize) -> Self { - SparseBitSet { domain_size, elems: SmallVec::new() } + SparseBitSet { domain_size, elems: ArrayVec::new() } } fn len(&self) -> usize { |
