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

See Also (Consulta También)