Rust:
Debug-output afdrukken

Hoe:

Om iets eenvoudigs te printen, gebruik println!. Als je een waarde voor debugging moet printen, komt dbg! goed van pas.

fn main() {
    let mut vec = vec![1, 2, 3];
    
    // Basis printen
    println!("Hallo, Rustaceans!");

    // Debugformatting met println! gebruikmakend van `{:?}`
    println!("{:?}", vec);

    // Debuggen met `dbg!`, print naar stderr en retourneert de waarde
    dbg!(&vec);

    // Wijzigen van vec na het gebruik van `dbg!`
    vec.push(4);
    dbg!(vec);
}

Voorbeelduitvoer:

Hallo, Rustaceans!
[1, 2, 3]
[src/main.rs:9] &vec = [
    1,
    2,
    3,
]
[src/main.rs:13] vec = [
    1,
    2,
    3,
    4,
]

Dieper ingaan

Het printen van debugoutput is al sinds de vroege dagen van programmeren een eenvoudige onderdeel. De eenvoud maakt het vaak de go-to keuze voor het snel diagnosticeren van problemen.

In Rust is println! geweldig voor het weergeven van gebruiksvriendelijke berichten. De magie komt met dbg!, geïntroduceerd in Rust 1.32, dat zowel de waarde als zijn locatie in de code print. Het output naar standaardfout (stderr), dus het zal niet mengen met de standaardoutput (stdout) en kan indien nodig apart worden omgeleid.

Voor complexe typen kun je de Debug trait afleiden om automatisch een formaat te creëren dat println! en dbg! kunnen gebruiken. Dat is wat de annotatie #[derive(Debug)] doet boven je structs en enums.

Wat betreft alternatieven, er bestaan degelijke loggers zoals log en env_logger, en als je meer gedetailleerde controle nodig hebt, overweeg dan een debugger zoals gdb of lldb, die werken met Rust via integraties zoals rust-gdb of rust-lldb.

Zie ook

Voor meer over Rust’s debugprinten en formatteeropties: