wast_encoder/symbols/identifiers/
mod.rs

1use super::*;
2
3mod convert;
4mod display;
5
6#[derive(Clone, PartialEq, Eq, Ord, PartialOrd, Hash)]
7pub struct Identifier {
8    pub namespace: Vec<Arc<str>>,
9    pub name: Arc<str>,
10}
11
12impl Default for Identifier {
13    fn default() -> Self {
14        Self { namespace: Vec::new(), name: Arc::from("") }
15    }
16}
17
18impl Identifier {
19    pub fn is_anonymous(&self) -> bool {
20        self.name.is_empty()
21    }
22    pub(crate) fn wasi_name(&self) -> String {
23        self.name.as_ref().to_case(Case::Kebab)
24    }
25    pub(crate) fn wasi_id(&self) -> String {
26        encode_id(&format!("{self:#}"))
27    }
28}
29
30impl Identifier {
31    pub fn new<S>(name: S) -> Self
32    where
33        S: Into<Arc<str>>,
34    {
35        Self { namespace: Vec::new(), name: name.into() }
36    }
37}