Implement Display trait for Target in pmp-macro-misc to enhance flag formatting and readability
This commit is contained in:
@@ -1,3 +1,4 @@
|
||||
use std::fmt::{ Display, Formatter };
|
||||
use bitflags::bitflags;
|
||||
|
||||
bitflags!
|
||||
@@ -37,3 +38,38 @@ bitflags!
|
||||
const ALL = u16::MAX;
|
||||
}
|
||||
}
|
||||
|
||||
impl Display for Target
|
||||
{
|
||||
fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result
|
||||
{
|
||||
let mut first = true;
|
||||
|
||||
macro_rules! write_flag
|
||||
{
|
||||
($flag:ident) =>
|
||||
{
|
||||
if self.contains(Target::$flag)
|
||||
{
|
||||
if !first { write!(f, " | ")?; }
|
||||
write!(f, "Target::{}", stringify!($flag))?;
|
||||
first = false;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
write_flag!(CLASS);
|
||||
write_flag!(INTERFACE);
|
||||
write_flag!(TRAIT);
|
||||
write_flag!(ENUM);
|
||||
write_flag!(METHOD);
|
||||
write_flag!(FUNCTION);
|
||||
write_flag!(PROPERTY);
|
||||
write_flag!(CONSTANT);
|
||||
write_flag!(PARAMETER);
|
||||
|
||||
if first { write!(f, "Target::ALL")?; }
|
||||
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user