pub fn run_backend(
    config: &TracerConfig,
    channel: TracerChannel,
    trace_data: Arc<RwLock<Trace>>,
) -> anyhow::Result<()> {
    let tracer = Tracer::new(config, move |round| {
        trace_data.write().update_from_round(round);
    });
    Ok(tracer.trace(channel)?)
}
/// Run the tracing backend.
///
/// Note that this implementation blocks the tracer on the `RwLock` and so any delays in the the TUI will delay the
/// next round of the started.
///
/// Note that currently each `Probe` is published individually at the end of a round and so the lock is taken multiple
/// times per round.
Run the tracing backend.
Note that this implementation blocks the tracer on the `RwLock` and so any delays in the the TUI will delay the
next round of the started.

Note that currently each `Probe` is published individually at the end of a round and so the lock is taken multiple
times per round.
Run the tracing backend . Note that this implementation blocks the tracer on the ` RwLock ` and so any delays in the the TUI will delay the next round of the started . Note that currently each ` Probe ` is published individually at the end of a round and so the lock is taken multiple times per round .
pub fn run_backend(
    config: &TracerConfig,
    channel: TracerChannel,
    trace_data: Arc<RwLock<Trace>>,
) -> anyhow::Result<()> {
    let tracer = Tracer::new(config, move |round| {
        trace_data.write().update_from_round(round);
    });
    Ok(tracer.trace(channel)?)
}
pub fn run_backend ( config : & TracerConfig , channel : TracerChannel , trace_data : Arc < RwLock < Trace > > , ) -> anyhow :: Result < ( ) > { let tracer = Tracer :: new ( config , move | round | { trace_data . write ( ) . update_from_round ( round ) ; } ) ; Ok ( tracer . trace ( channel ) ? ) }
Run the tracing backend.
Run the tracing backend .
config
&TracerConfig
channel
TracerChannel
trace_data
Arc<RwLock<Trace>>