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;
|
use bitflags::bitflags;
|
||||||
|
|
||||||
bitflags!
|
bitflags!
|
||||||
@@ -37,3 +38,38 @@ bitflags!
|
|||||||
const ALL = u16::MAX;
|
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