Skip to main content

move_syn/
vis.rs

1use crate::Item;
2
3/// Visibility options of a Move [`Item`].
4#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
5pub enum Visibility {
6    /// `public`
7    Public,
8    /// `public(package)`
9    Package,
10    /// No visibility modifier
11    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}