arch_pkg_db/multi/iter/
repositories.rs1use crate::{
2 multi::{MultiQuerier, WithVersion},
3 value::RepositoryName,
4};
5use std::{collections::hash_map::Keys, iter::FusedIterator};
6
7#[derive(Debug, Clone)]
9pub struct RepositoryNames<'r, 'query, Querier> {
10 internal: Keys<'r, &'query str, WithVersion<'query, Querier>>,
11}
12
13impl<'query, Querier> Iterator for RepositoryNames<'_, 'query, Querier> {
14 type Item = RepositoryName<'query>;
15
16 fn next(&mut self) -> Option<Self::Item> {
17 self.internal.next().copied().map(RepositoryName)
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 RepositoryNames<'_, '_, Querier> {
30 fn len(&self) -> usize {
31 self.internal.len()
32 }
33}
34
35impl<Querier> FusedIterator for RepositoryNames<'_, '_, Querier> {}
36
37impl<'a, Querier> MultiQuerier<'a, Querier> {
38 pub fn repositories(&self) -> RepositoryNames<'_, 'a, Querier> {
39 RepositoryNames {
40 internal: self.internal.keys(),
41 }
42 }
43}