macro_rules! impl_redacted_fmt {
($type:ty) => {
impl std::fmt::Debug for $type {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
write!(f, "<redacted>")
}
}
impl std::fmt::Display for $type {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
write!(f, "<redacted>")
}
}
};
}
pub(crate) use impl_redacted_fmt;
#[cfg(test)]
mod tests {
use super::*;
#[allow(dead_code)]
struct Test {
x: i32,
}
impl_redacted_fmt!(Test);
#[test]
fn redacted_debug() {
let obj = Test { x: 42 };
assert_eq!(format!("{:?}", obj), "<redacted>");
}
#[test]
fn redacted_display() {
let obj = Test { x: 42 };
assert_eq!(format!("{obj}"), "<redacted>");
}
}