grass_runtime/property/
name.rs1use 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}