libgir/config/
parameter_matchable.rs
1use super::{ident::Ident, matchable::Matchable};
2
3pub trait Functionlike {
4 type Parameter;
5
6 fn parameters(&self) -> &[Self::Parameter];
7
8 }
10
11pub trait ParameterMatchable {
12 type Parameter;
13
14 fn matched_parameters(&self, parameter_name: &str) -> Vec<&Self::Parameter>;
15}
16
17impl<U: AsRef<Ident>, T: Functionlike<Parameter = U>> ParameterMatchable for [&T] {
18 type Parameter = U;
19
20 fn matched_parameters(&self, parameter_name: &str) -> Vec<&Self::Parameter> {
21 let mut v = Vec::new();
22 for f in self.iter() {
23 let pars = f.parameters().matched(parameter_name);
24 v.extend_from_slice(&pars);
25 }
26 v
27 }
28}