grass_runtime/property/
name.rs

1use crate::record::RcCowString;
2use std::rc::Rc;
3
4pub trait Named<'a> {
5    fn name(&self) -> &str {
6        "."
7    }
8    fn to_cow(&self) -> RcCowString<'a> {
9        RcCowString::RcOwned(Rc::new(self.name().to_string()))
10    }
11}
12
13impl<'a, T: Named<'a>> Named<'a> for Option<T> {
14    fn name(&self) -> &str {
15        if let Some(inner) = self.as_ref() {
16            inner.name()
17        } else {
18            "."
19        }
20    }
21}
22
23impl<'a, A: Named<'a>, B> Named<'a> for (A, B) {
24    fn name(&self) -> &str {
25        self.0.name()
26    }
27}