-
-
Notifications
You must be signed in to change notification settings - Fork 191
Closed
Description
I'm proposing an option to disable fmt::Debug, mainly to reduce executable sizes, and to thoroughly strip symbol names from executables.
When testing it, it quickly became apparent that thiserror uses fmt::Debug, and this is a common pattern in proc macros.
impl ToTokens for Trait {
fn to_tokens(&self, tokens: &mut TokenStream) {
let trait_name = format_ident!("{}", format!("{:?}", self));
tokens.extend(quote!(::core::fmt::#trait_name));
}
}I wanted to check how you feel about an option "breaking" fmt::Debug. Shall fmt::Debug be guaranteed to work in proc-macros? Would you be okay changing the implementation to use something else to stringify enums? (strum's Display, or manual match … => "…"). I'm also proposing to add #[cfg(debug_fmt_detail = "full")] to let crates use fmt::Debug when it's on, and fall back to something else when it's a no-op.
Metadata
Metadata
Assignees
Labels
No labels