mirror of
https://github.com/roc-lang/roc.git
synced 2025-09-30 15:21:12 +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> {
|
impl<K: PartialEq, V> VecMap<K, V> {
|
||||||
pub fn with_capacity(capacity: usize) -> Self {
|
pub fn with_capacity(capacity: usize) -> Self {
|
||||||
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 {
|
pub fn is_empty(&self) -> bool {
|
||||||
debug_assert_eq!(self.keys.len(), self.values.len());
|
debug_assert_eq!(self.keys.len(), self.values.len());
|
||||||
self.keys.is_empty()
|
self.keys.is_empty()
|
||||||
|
@ -95,10 +97,6 @@ impl<K: PartialEq, V> VecMap<K, V> {
|
||||||
self.keys.iter().zip(self.values.iter())
|
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> {
|
pub fn keys(&self) -> impl ExactSizeIterator<Item = &K> {
|
||||||
self.keys.iter()
|
self.keys.iter()
|
||||||
}
|
}
|
||||||
|
@ -157,6 +155,7 @@ impl<K, V> IntoIterator for VecMap<K, V> {
|
||||||
|
|
||||||
fn into_iter(self) -> Self::IntoIter {
|
fn into_iter(self) -> Self::IntoIter {
|
||||||
IntoIter {
|
IntoIter {
|
||||||
|
len: self.len(),
|
||||||
keys: self.keys.into_iter(),
|
keys: self.keys.into_iter(),
|
||||||
values: self.values.into_iter(),
|
values: self.values.into_iter(),
|
||||||
}
|
}
|
||||||
|
@ -164,6 +163,7 @@ impl<K, V> IntoIterator for VecMap<K, V> {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub struct IntoIter<K, V> {
|
pub struct IntoIter<K, V> {
|
||||||
|
len: usize,
|
||||||
keys: std::vec::IntoIter<K>,
|
keys: std::vec::IntoIter<K>,
|
||||||
values: std::vec::IntoIter<V>,
|
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