microcad_lang/syntax/
visibility.rs1use crate::syntax::*;
7
8#[derive(Clone, Default, PartialEq)]
13pub enum Visibility {
14 #[default]
16 Private,
17 PrivateUse(QualifiedName),
19 Public,
21 Deleted,
23}
24
25impl std::fmt::Display for Visibility {
26 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
27 match self {
28 Visibility::Private => Ok(()),
29 Visibility::PrivateUse(_) => Ok(()),
30 Visibility::Public => write!(f, "pub "),
31 Visibility::Deleted => write!(f, "(deleted) "),
32 }
33 }
34}
35
36impl std::fmt::Debug for Visibility {
37 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
38 match self {
39 Visibility::Private => Ok(()),
40 Visibility::PrivateUse(name) => write!(f, "«{name}» "),
41 Visibility::Public => write!(f, "pub "),
42 Visibility::Deleted => write!(f, "❌ "),
43 }
44 }
45}