https://github.com/cosmichorrordev/smart-debug
Derive macro for `Debug` with easy manipulation of fields
https://github.com/cosmichorrordev/smart-debug
Last synced: about 1 year ago
JSON representation
Derive macro for `Debug` with easy manipulation of fields
- Host: GitHub
- URL: https://github.com/cosmichorrordev/smart-debug
- Owner: CosmicHorrorDev
- License: apache-2.0
- Created: 2023-07-23T20:21:19.000Z (almost 3 years ago)
- Default Branch: main
- Last Pushed: 2023-11-05T23:19:42.000Z (over 2 years ago)
- Last Synced: 2025-02-28T07:04:27.391Z (over 1 year ago)
- Language: Rust
- Size: 31.3 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE-APACHE
Awesome Lists containing this project
README
**⚠️ !!This is currently pre-alpha software!! ⚠️**
Allows for easy manipulation of debug formatting through a derive macro
```rust
use smart_debug::SmartDebug;
use std::fmt;
#[derive(SmartDebug, Default)]
#[debug(skip_defaults)]
struct Text {
#[debug(no_skip)]
text: &'static str,
#[debug("0x{:06x}")]
color: u32,
#[debug(wrapper = DebugInline)]
hyperlink: Option<&'static str>,
is_bold: bool,
is_italics: bool,
}
// Wrapper that displays inline even when using pretty formatting (`{:#?}`)
struct DebugInline<'inner, T>(pub &'inner T);
impl fmt::Debug for DebugInline<'_, T> {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
f.write_fmt(format_args!("{:?}", self.0))
}
}
const HYPERLINK: &str = r#"
Text {
text: "Look! A link",
color: 0x005cc5,
hyperlink: Some("https://example.org"),
is_italics: true,
..
}
"#;
fn main() {
let hyperlink = Text {
text: "Look! A link",
hyperlink: Some("https://example.org"),
color: 0x00_5c_c5,
is_italics: true,
..Text::default()
};
let formatted = format!("\n{hyperlink:#?}\n");
assert_eq!(formatted, HYPERLINK);
}
```