How would I override the default Debug implementation?

I haven't tried it, but perhaps something like:

#[cfg_attr(not(feature = "release"), derive(Debug))]
struct MySpecialType { /* ... */ }

#[cfg(feature = "release")]
impl fmt::Debug for MySpecialType {
    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
        write!(f, "Nothing to see here...")
    }
}