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    // TODO: result
9}
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}