glossa_codegen/
visibility.rs1#[derive(Debug, Clone)]
2pub enum Visibility {
3 Private,
4 PubCrate,
5 Pub,
6 PubSuper,
7 }
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}