webwire_cli/schema/
fqtn.rs

1use crate::idl;
2
3use super::namespace::Namespace;
4
5/// Fully qualified type name
6#[derive(Clone, Debug, Eq, Hash, PartialEq)]
7pub struct FQTN {
8    pub ns: Vec<String>,
9    pub name: String,
10}
11
12impl FQTN {
13    pub fn new(name: &str, ns: &Namespace) -> Self {
14        Self {
15            ns: ns.path.clone(),
16            name: name.to_owned(),
17        }
18    }
19    pub fn from_idl(ityperef: &idl::TypeRef, ns: &Namespace) -> Self {
20        if ityperef.abs {
21            Self {
22                ns: ityperef.ns.clone(),
23                name: ityperef.name.clone(),
24            }
25        } else {
26            let mut ns = ns.path.clone();
27            ns.extend_from_slice(&ityperef.ns);
28            Self {
29                ns,
30                name: ityperef.name.clone(),
31            }
32        }
33    }
34}