sophia_api/term/matcher/
_term_matcher_gn.rs1use super::*;
2
3#[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}