Implement Display trait for Target in pmp-macro-misc to enhance flag formatting and readability

This commit is contained in:
2026-03-05 21:32:37 +01:00
parent a238b63e51
commit b4543efaeb

View File

@@ -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(())
}
}