dmesg: modify is_record_in_set to accept Option.

This commit is contained in:
Fuad Ismail
2024-12-11 12:04:15 +07:00
parent fb77a356ca
commit c7ff9cd553

@ -261,17 +261,11 @@ impl Dmesg<'_> {
Ok(()) Ok(())
} }
fn try_filtered_iter(&self) -> UResult<Box<dyn Iterator<Item = UResult<Record>> + '_>> { fn try_filtered_iter(&self) -> UResult<impl Iterator<Item = UResult<Record>> + '_> {
Ok(match (&self.facility_filters, &self.level_filters) { Ok(self
(None, None) => Box::new(self.try_iter()?), .try_iter()?
(None, Some(set)) => Box::new(self.try_iter()?.filter(Self::is_record_in_set(set))), .filter(Self::is_record_in_set(&self.facility_filters))
(Some(set), None) => Box::new(self.try_iter()?.filter(Self::is_record_in_set(set))), .filter(Self::is_record_in_set(&self.level_filters)))
(Some(set_1), Some(set_2)) => Box::new(
self.try_iter()?
.filter(Self::is_record_in_set(set_1))
.filter(Self::is_record_in_set(set_2)),
),
})
} }
fn try_iter(&self) -> UResult<RecordIterator> { fn try_iter(&self) -> UResult<RecordIterator> {
@ -282,17 +276,17 @@ impl Dmesg<'_> {
} }
fn is_record_in_set<T>( fn is_record_in_set<T>(
set: &HashSet<T>, set: &Option<HashSet<T>>,
) -> impl Fn(&Result<Record, Box<dyn UError>>) -> bool + '_ ) -> impl Fn(&Result<Record, Box<dyn UError>>) -> bool + '_
where where
T: TryFrom<u32> + Eq + Hash, T: TryFrom<u32> + Eq + Hash,
{ {
|record: &UResult<Record>| match record { move |record: &UResult<Record>| match (record, set) {
Ok(record) => match T::try_from(record.priority_facility) { (Ok(record), Some(set)) => match T::try_from(record.priority_facility) {
Ok(t) => set.contains(&t), Ok(t) => set.contains(&t),
Err(_) => true, Err(_) => false,
}, },
Err(_) => true, _ => true,
} }
} }
} }