Rust:
Skriva ut felsökningsdata
Hur man gör:
För att skriva ut debugginfo i Rust, använd println! med debug-flaggan {:?}:
fn main() {
let my_data = vec![1, 2, 3];
println!("Debug-info: {:?}", my_data);
}Utskrift skulle se ut så här:
Debug-info: [1, 2, 3]Om du vill ha en mer detaljerad och formaterad utskrift, kan du använda # tillsammans med debug-flaggan:
fn main() {
let my_data = vec![1, 2, 3];
println!("Detaljerad debug-info: {:#?}", my_data);
}Det skulle ge denna detaljerade utskrift:
Detaljerad debug-info: [
1,
2,
3,
]Kom ihåg att din typ måste implementera Debug trait för att använda {:?} eller {:#?}.
Deep Dive
I Rusts barndom insåg man att att skriva ut debug-information var kritiskt, så Debug trait implementerades tidigt i språkets utveckling. Det finns alternativ till println!, såsom att logga med bibliotek som log eller env_logger för mer kontroll och förmågan att hantera olika loggnivåer.
Display är en annan trait som liknar Debug, men den är avsedd för användarvänlig utskrift snarare än debug-utskrift. Display behöver en mer manuell implementering där du bestämmer formatet, medan Debug oftast kan använda en derivat-deklaration för automatisk implementering.
std::fmt modulen i Rust standardbiblioteket hanterar formattering. Det finns många andra traits i denna modul som kan användas för att anpassa utskrift utöver Debug och Display.
Se även
- Rusts officiella dokumentation för
std::fmt: https://doc.rust-lang.org/std/fmt/ - Rust By Example om Custom Types och Debug: https://doc.rust-lang.org/stable/rust-by-example/hello/print/print_debug.html
logcrate: https://crates.io/crates/logenv_loggercrate: https://crates.io/crates/env_logger