arch_pkg_db/single/iter/
queriers.rs1use crate::QueryDatabase;
2use core::iter::FusedIterator;
3use std::collections::hash_map::{Values, ValuesMut};
4
5#[derive(Debug, Clone)]
7pub struct Queriers<'r, 'name, Querier> {
8 internal: Values<'r, &'name str, Querier>,
9}
10
11impl<'r, Querier> Iterator for Queriers<'r, '_, Querier> {
12 type Item = &'r Querier;
13
14 fn next(&mut self) -> Option<Self::Item> {
15 self.internal.next()
16 }
17
18 fn size_hint(&self) -> (usize, Option<usize>) {
19 self.internal.size_hint()
20 }
21
22 fn count(self) -> usize {
23 self.internal.count()
24 }
25}
26
27impl<Querier> ExactSizeIterator for Queriers<'_, '_, Querier> {
28 fn len(&self) -> usize {
29 self.internal.len()
30 }
31}
32
33impl<Querier> FusedIterator for Queriers<'_, '_, Querier> {}
34
35#[derive(Debug)]
37pub struct QueriersMut<'r, 'name, Querier> {
38 internal: ValuesMut<'r, &'name str, Querier>,
39}
40
41impl<'r, Querier> Iterator for QueriersMut<'r, '_, Querier> {
42 type Item = &'r mut Querier;
43
44 fn next(&mut self) -> Option<Self::Item> {
45 self.internal.next()
46 }
47
48 fn size_hint(&self) -> (usize, Option<usize>) {
49 self.internal.size_hint()
50 }
51
52 fn count(self) -> usize {
53 self.internal.count()
54 }
55}
56
57impl<Querier> ExactSizeIterator for QueriersMut<'_, '_, Querier> {
58 fn len(&self) -> usize {
59 self.internal.len()
60 }
61}
62
63impl<Querier> FusedIterator for QueriersMut<'_, '_, Querier> {}
64
65impl<'a, Querier> QueryDatabase<'a, Querier> {
66 pub fn queriers(&self) -> Queriers<'_, 'a, Querier> {
68 Queriers {
69 internal: self.internal.values(),
70 }
71 }
72
73 pub fn queriers_mut(&mut self) -> QueriersMut<'_, 'a, Querier> {
75 QueriersMut {
76 internal: self.internal.values_mut(),
77 }
78 }
79}