sophia_api/term/matcher/
_term_matcher_gn.rs

1use super::*;
2
3/// Wrapper type returned by [`TermMatcher::gn`]
4#[derive(Clone, Copy, Debug)]
5pub struct TermMatcherGn<T>(pub(super) T);
6
7impl<M> GraphNameMatcher for TermMatcherGn<M>
8where
9    M: TermMatcher,
10{
11    type Term = M::Term;
12
13    fn matches<T2: Term + ?Sized>(&self, graph_name: GraphName<&T2>) -> bool {
14        match graph_name {
15            Some(term) => self.0.matches(term),
16            None => false,
17        }
18    }
19    fn constant(&self) -> Option<GraphName<&Self::Term>> {
20        self.0.constant().map(Some)
21    }
22}
23
24impl<'a, T: GraphNameMatcher + ?Sized> GraphNameMatcher for MatcherRef<'a, T> {
25    type Term = T::Term;
26
27    fn matches<T2: Term + ?Sized>(&self, graph_name: GraphName<&T2>) -> bool {
28        self.0.matches(graph_name)
29    }
30
31    fn constant(&self) -> Option<GraphName<&Self::Term>> {
32        self.0.constant()
33    }
34}