mirror of
https://github.com/roc-lang/roc.git
synced 2025-09-29 14:54:47 +00:00
impl ExactSizeIterator for VecMap
This commit is contained in:
parent
abb9bb8169
commit
a0950e9321
1 changed files with 15 additions and 9 deletions
|
@ -13,6 +13,13 @@ impl<K, V> Default for VecMap<K, V> {
|
|||
}
|
||||
}
|
||||
|
||||
impl<K, V> VecMap<K, V> {
|
||||
pub fn len(&self) -> usize {
|
||||
debug_assert_eq!(self.keys.len(), self.values.len());
|
||||
self.keys.len()
|
||||
}
|
||||
}
|
||||
|
||||
impl<K: PartialEq, V> VecMap<K, V> {
|
||||
pub fn with_capacity(capacity: usize) -> Self {
|
||||
Self {
|
||||
|
@ -21,11 +28,6 @@ impl<K: PartialEq, V> VecMap<K, V> {
|
|||
}
|
||||
}
|
||||
|
||||
pub fn len(&self) -> usize {
|
||||
debug_assert_eq!(self.keys.len(), self.values.len());
|
||||
self.keys.len()
|
||||
}
|
||||
|
||||
pub fn is_empty(&self) -> bool {
|
||||
debug_assert_eq!(self.keys.len(), self.values.len());
|
||||
self.keys.is_empty()
|
||||
|
@ -95,10 +97,6 @@ impl<K: PartialEq, V> VecMap<K, V> {
|
|||
self.keys.iter().zip(self.values.iter())
|
||||
}
|
||||
|
||||
pub fn into_iter(self) -> impl ExactSizeIterator<Item = (K, V)> {
|
||||
self.keys.into_iter().zip(self.values.into_iter())
|
||||
}
|
||||
|
||||
pub fn keys(&self) -> impl ExactSizeIterator<Item = &K> {
|
||||
self.keys.iter()
|
||||
}
|
||||
|
@ -157,6 +155,7 @@ impl<K, V> IntoIterator for VecMap<K, V> {
|
|||
|
||||
fn into_iter(self) -> Self::IntoIter {
|
||||
IntoIter {
|
||||
len: self.len(),
|
||||
keys: self.keys.into_iter(),
|
||||
values: self.values.into_iter(),
|
||||
}
|
||||
|
@ -164,6 +163,7 @@ impl<K, V> IntoIterator for VecMap<K, V> {
|
|||
}
|
||||
|
||||
pub struct IntoIter<K, V> {
|
||||
len: usize,
|
||||
keys: std::vec::IntoIter<K>,
|
||||
values: std::vec::IntoIter<V>,
|
||||
}
|
||||
|
@ -178,3 +178,9 @@ impl<K, V> Iterator for IntoIter<K, V> {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl<K, V> ExactSizeIterator for IntoIter<K, V> {
|
||||
fn len(&self) -> usize {
|
||||
self.len
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue