use serde::Serialize;
#[derive(Debug, Clone, Copy, Serialize, PartialEq, Eq)]
pub enum HirVisibility {
Public,
Restricted,
Inherited, }
impl From<&syn::Visibility> for HirVisibility {
fn from(value: &syn::Visibility) -> Self {
match value {
syn::Visibility::Public(_) => HirVisibility::Public,
syn::Visibility::Restricted(_) => HirVisibility::Restricted,
syn::Visibility::Inherited => HirVisibility::Inherited,
}
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn converts_each_syn_visibility_variant() {
let public: syn::Visibility = syn::parse_str("pub").unwrap();
let restricted: syn::Visibility = syn::parse_str("pub(crate)").unwrap();
let inherited: syn::Visibility = syn::parse_str("").unwrap();
assert_eq!(HirVisibility::from(&public), HirVisibility::Public);
assert_eq!(HirVisibility::from(&restricted), HirVisibility::Restricted);
assert_eq!(HirVisibility::from(&inherited), HirVisibility::Inherited);
}
}