1use crate::Item;
2
3#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
5pub enum Visibility {
6 Public,
8 Package,
10 Private,
12}
13
14impl Visibility {
15 pub const fn is_public(&self) -> bool {
16 matches!(self, Self::Public)
17 }
18
19 pub const fn is_package(&self) -> bool {
20 matches!(self, Self::Package)
21 }
22
23 pub const fn is_private(&self) -> bool {
24 matches!(self, Self::Private)
25 }
26}
27
28impl Item {
29 pub const fn visibility(&self) -> Visibility {
30 let Some(vis) = &self.vis else {
31 return Visibility::Private;
32 };
33 if vis.modifier.is_some() {
34 Visibility::Package
35 } else {
36 Visibility::Public
37 }
38 }
39}