glossa_codegen/
visibility.rs

1#[derive(Debug, Clone)]
2pub enum Visibility {
3  Private,
4  PubCrate,
5  Pub,
6  PubSuper,
7  // Custom(MiniStr),
8}
9
10impl From<&str> for Visibility {
11  fn from(value: &str) -> Self {
12    use Visibility::*;
13    match value {
14      "" => Private,
15      "pub" => Pub,
16      "pub(super)" => PubSuper,
17      "pub(crate)" => PubCrate,
18      _ => PubCrate,
19    }
20  }
21}
22
23impl Visibility {
24  pub const fn as_str(&self) -> &str {
25    use Visibility::*;
26    match self {
27      Private => "",
28      PubCrate => "pub(crate)",
29      Pub => "pub",
30      PubSuper => "pub(super)",
31    }
32  }
33}
34
35impl AsRef<str> for Visibility {
36  fn as_ref(&self) -> &str {
37    self.as_str()
38  }
39}
40
41impl Default for Visibility {
42  fn default() -> Self {
43    Self::PubCrate
44  }
45}