arch_pkg_db/single/iter/
names.rs1use crate::QueryDatabase;
2use arch_pkg_text::value::Name;
3use core::iter::FusedIterator;
4use std::collections::hash_map::Keys;
5
6#[derive(Debug, Clone)]
8pub struct Names<'r, 'name, Querier> {
9 internal: Keys<'r, &'name str, Querier>,
10}
11
12impl<'name, Querier> Iterator for Names<'_, 'name, Querier> {
13 type Item = Name<'name>;
14
15 fn next(&mut self) -> Option<Self::Item> {
16 self.internal.next().copied().map(Name)
17 }
18
19 fn size_hint(&self) -> (usize, Option<usize>) {
20 self.internal.size_hint()
21 }
22
23 fn count(self) -> usize {
24 self.internal.count()
25 }
26}
27
28impl<Querier> ExactSizeIterator for Names<'_, '_, Querier> {
29 fn len(&self) -> usize {
30 self.internal.len()
31 }
32}
33
34impl<Querier> FusedIterator for Names<'_, '_, Querier> {}
35
36impl<'a, Querier> QueryDatabase<'a, Querier> {
37 pub fn names(&self) -> Names<'_, 'a, Querier> {
39 Names {
40 internal: self.internal.keys(),
41 }
42 }
43}