wast_encoder/symbols/identifiers/
mod.rs1use 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}