arch_pkg_db/single/iter/
owned.rs1use super::Entry;
2use crate::QueryDatabase;
3use core::iter::FusedIterator;
4use std::collections::hash_map;
5
6#[derive(Debug)]
8pub struct OwnedEntries<'name, Querier> {
9 internal: hash_map::IntoIter<&'name str, Querier>,
10}
11
12impl<'name, Querier> Iterator for OwnedEntries<'name, Querier> {
13 type Item = Entry<'name, Querier>;
14
15 fn next(&mut self) -> Option<Self::Item> {
16 let (name, querier) = self.internal.next()?;
17 Some(Entry::new_unchecked(name, querier))
18 }
19
20 fn size_hint(&self) -> (usize, Option<usize>) {
21 self.internal.size_hint()
22 }
23
24 fn count(self) -> usize {
25 self.internal.count()
26 }
27}
28
29impl<Querier> ExactSizeIterator for OwnedEntries<'_, Querier> {
30 fn len(&self) -> usize {
31 self.internal.len()
32 }
33}
34
35impl<Querier> FusedIterator for OwnedEntries<'_, Querier> {}
36
37impl<'a, Querier> IntoIterator for QueryDatabase<'a, Querier> {
38 type IntoIter = OwnedEntries<'a, Querier>;
39 type Item = Entry<'a, Querier>;
40 fn into_iter(self) -> Self::IntoIter {
41 OwnedEntries {
42 internal: self.internal.into_iter(),
43 }
44 }
45}