diff options
Diffstat (limited to 'syntax/map.rs')
-rw-r--r-- | syntax/map.rs | 46 |
1 files changed, 19 insertions, 27 deletions
diff --git a/syntax/map.rs b/syntax/map.rs index 526b793b..4a2db0b8 100644 --- a/syntax/map.rs +++ b/syntax/map.rs @@ -3,9 +3,9 @@ use std::hash::Hash; use std::ops::Index; use std::slice; -pub use self::ordered::OrderedMap; -pub use self::unordered::UnorderedMap; -pub use std::collections::hash_map::Entry; +pub(crate) use self::ordered::OrderedMap; +pub(crate) use self::unordered::UnorderedMap; +pub(crate) use std::collections::hash_map::Entry; mod ordered { use super::{Entry, Iter, UnorderedMap}; @@ -13,24 +13,25 @@ mod ordered { use std::hash::Hash; use std::mem; - pub struct OrderedMap<K, V> { + pub(crate) struct OrderedMap<K, V> { map: UnorderedMap<K, usize>, vec: Vec<(K, V)>, } impl<K, V> OrderedMap<K, V> { - pub fn new() -> Self { + pub(crate) fn new() -> Self { OrderedMap { map: UnorderedMap::new(), vec: Vec::new(), } } - pub fn iter(&self) -> Iter<K, V> { + pub(crate) fn iter(&self) -> Iter<K, V> { Iter(self.vec.iter()) } - pub fn keys(&self) -> impl Iterator<Item = &K> { + #[allow(dead_code)] // only used by cxx-build, not cxxbridge-macro + pub(crate) fn keys(&self) -> impl Iterator<Item = &K> { self.vec.iter().map(|(k, _v)| k) } } @@ -39,7 +40,7 @@ mod ordered { where K: Copy + Hash + Eq, { - pub fn insert(&mut self, key: K, value: V) -> Option<V> { + pub(crate) fn insert(&mut self, key: K, value: V) -> Option<V> { match self.map.entry(key) { Entry::Occupied(entry) => { let i = &mut self.vec[*entry.get()]; @@ -53,22 +54,13 @@ mod ordered { } } - pub fn contains_key<Q>(&self, key: &Q) -> bool + pub(crate) fn contains_key<Q>(&self, key: &Q) -> bool where K: Borrow<Q>, Q: ?Sized + Hash + Eq, { self.map.contains_key(key) } - - pub fn get<Q>(&self, key: &Q) -> Option<&V> - where - K: Borrow<Q>, - Q: ?Sized + Hash + Eq, - { - let i = *self.map.get(key)?; - Some(&self.vec[i].1) - } } impl<'a, K, V> IntoIterator for &'a OrderedMap<K, V> { @@ -88,10 +80,10 @@ mod unordered { // Wrapper prohibits accidentally introducing iteration over the map, which // could lead to nondeterministic generated code. - pub struct UnorderedMap<K, V>(HashMap<K, V>); + pub(crate) struct UnorderedMap<K, V>(HashMap<K, V>); impl<K, V> UnorderedMap<K, V> { - pub fn new() -> Self { + pub(crate) fn new() -> Self { UnorderedMap(HashMap::new()) } } @@ -100,11 +92,11 @@ mod unordered { where K: Hash + Eq, { - pub fn insert(&mut self, key: K, value: V) -> Option<V> { + pub(crate) fn insert(&mut self, key: K, value: V) -> Option<V> { self.0.insert(key, value) } - pub fn contains_key<Q>(&self, key: &Q) -> bool + pub(crate) fn contains_key<Q>(&self, key: &Q) -> bool where K: Borrow<Q>, Q: ?Sized + Hash + Eq, @@ -112,7 +104,7 @@ mod unordered { self.0.contains_key(key) } - pub fn get<Q>(&self, key: &Q) -> Option<&V> + pub(crate) fn get<Q>(&self, key: &Q) -> Option<&V> where K: Borrow<Q>, Q: ?Sized + Hash + Eq, @@ -120,12 +112,12 @@ mod unordered { self.0.get(key) } - pub fn entry(&mut self, key: K) -> Entry<K, V> { + pub(crate) fn entry(&mut self, key: K) -> Entry<K, V> { self.0.entry(key) } #[allow(dead_code)] // only used by cxx-build, not cxxbridge-macro - pub fn remove<Q>(&mut self, key: &Q) -> Option<V> + pub(crate) fn remove<Q>(&mut self, key: &Q) -> Option<V> where K: Borrow<Q>, Q: ?Sized + Hash + Eq, @@ -133,7 +125,7 @@ mod unordered { self.0.remove(key) } - pub fn keys(&self) -> UnorderedSet<K> + pub(crate) fn keys(&self) -> UnorderedSet<K> where K: Copy, { @@ -146,7 +138,7 @@ mod unordered { } } -pub struct Iter<'a, K, V>(slice::Iter<'a, (K, V)>); +pub(crate) struct Iter<'a, K, V>(slice::Iter<'a, (K, V)>); impl<'a, K, V> Iterator for Iter<'a, K, V> { type Item = (&'a K, &'a V); |