Rust:
Imprimiendo salida de depuración
How to: (Cómo hacerlo:)
fn main() {
let variable_debug = "Rust es genial!";
println!("Debug: {:?}", variable_debug);
}
Salida:
Debug: "Rust es genial!"
Para estructuras de datos más complejas, derivamos Debug
:
#[derive(Debug)]
struct Estructura {
campo: i32,
}
fn main() {
let mi_estructura = Estructura { campo: 42 };
println!("Debug de estructura: {:?}", mi_estructura);
}
Salida:
Debug de estructura: Estructura { campo: 42 }
Usa {:#?}
para un formato más bonito:
println!("Debug bonito: {:#?}", mi_estructura);
Salida:
Debug bonito: Estructura {
campo: 42,
}
Deep Dive (Inmersión Profunda)
Históricamente, imprimir debug ha sido una herramienta elemental en la programación. En Rust, se utiliza el trait std::fmt::Debug
para añadir funcionalidad de impresión a tipos de datos personalizados. No todos los tipos son imprimibles por defecto; los tipos básicos ya implementan Debug
, pero para estructuras personalizadas, necesitas derivarlo explícitamente.
Hay alternativas como log
para outputs más controlados y especializados, y macros como debug!
que puedes habilitar o deshabilitar en producción. Implementar el trait Display
personalizado proporciona control total sobre la salida, pero no está específicamente diseñado para depurar.
Rust también introduce una forma bonita e indolora de inspeccionar variables con la macro dbg!
. Te muestra el valor y la ubicación del código al mismo tiempo:
let x = dbg!(42 * 2);
Salida:
[src/main.rs:1] 42 * 2 = 84