rorm-macro-impl 0.10.0

Macro implementations for rorm.
Documentation
use quote::ToTokens;
use syn::{VisRestricted, Visibility};

pub mod model;

pub fn vis_to_display(vis: &Visibility) -> impl std::fmt::Display + '_ {
    DisplayableVisibility(vis)
}
struct DisplayableVisibility<'a>(&'a Visibility);
impl std::fmt::Display for DisplayableVisibility<'_> {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        match self.0 {
            Visibility::Public(_) => f.write_str("pub "),
            Visibility::Restricted(VisRestricted {
                pub_token: _,
                paren_token: _,
                in_token,
                path,
            }) => {
                write!(
                    f, "pub({in}{path}) ",
                    in = if in_token.is_some() { "in " } else { "" },
                    path = path.to_token_stream())
            }
            Visibility::Inherited => Ok(()),
        }
    }
}