arch_pkg_text/desc/misc/
derive_query_mut.rs

1use super::ReuseAdvice;
2use crate::desc::{ParsedField, Query, QueryMut};
3
4/// Wrapper struct to permit [`QueryMut`] on a struct that only implements [`Query`].
5#[derive(Debug, Default, Clone, Copy)]
6pub struct DeriveQueryMut<Querier: ?Sized>(pub Querier);
7
8impl<'a, Querier: Query<'a> + ?Sized> Query<'a> for DeriveQueryMut<Querier> {
9    fn query_raw_text(&self, field: ParsedField) -> Option<&'a str> {
10        self.0.query_raw_text(field)
11    }
12}
13
14impl<'a, Querier: Query<'a> + ?Sized> QueryMut<'a> for DeriveQueryMut<Querier> {
15    fn query_raw_text_mut(&mut self, field: ParsedField) -> Option<&'a str> {
16        self.query_raw_text(field)
17    }
18}
19
20impl<Querier: ReuseAdvice + ?Sized> ReuseAdvice for DeriveQueryMut<Querier> {
21    type ShouldReuse = Querier::ShouldReuse;
22}