Trace one Rust execution that starts in a client module, calls a worker module, and returns a response to the caller.

Project Entry

Play the program to watch execution move from request_client.rs into request_worker.rs and then back to the entry file.

request_client.rs
mod request_worker;

fn main() {
    let command = ;
    let request_id = 42;
    let response = request_worker::handle_request(command);
    let ticket = request_id + command.len();

    println!("ticket={}", ticket);
    println!("body={}", response);
}
mod request_worker;

fn main() {
    let command = ;
    let request_id = 42;
    let response = request_worker::handle_request(command);
    let ticket = request_id + command.len();

    println!("ticket={}", ticket);
    println!("body={}", response);
}
mod request_worker;

fn main() {
    let command = ;
    let request_id = 42;
    let response = request_worker::handle_request(command);
    let ticket = request_id + command.len();

    println!("ticket={}", ticket);
    println!("body={}", response);
}
source panels Each Rust source file has its own panel because both files participate in the same traced execution.
data flow The Variables panel is derived from the trace: the selected command moves into the worker function, the worker chooses a response, and the caller prints it.
variants The command selector rebuilds the traced project for each option, so the source and replay both reflect the selected command.