use core::fmt::{self, Display};
#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub enum Visibility {
Public,
Private,
Protected,
Package,
}
impl Display for Visibility {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
Visibility::Public => write!(f, "+"),
Visibility::Private => write!(f, "-"),
Visibility::Protected => write!(f, "#"),
Visibility::Package => write!(f, "~"),
}
}
}
#[cfg(test)]
mod tests {
use alloc::string::ToString;
use super::*;
#[test]
fn test_visibility_display() {
assert_eq!(Visibility::Public.to_string(), "+");
assert_eq!(Visibility::Private.to_string(), "-");
assert_eq!(Visibility::Protected.to_string(), "#");
assert_eq!(Visibility::Package.to_string(), "~");
}
}