yellowstone-block-machine 0.9.0

State machine for reconstructing Solana blocks from Geyser events
Documentation
use tracing_subscriber::{
    EnvFilter,
    layer::SubscriberExt,
    util::{SubscriberInitExt, TryInitError},
};

pub fn setup_tracing_test(module: &str) -> Result<(), TryInitError> {
    let io_layer = tracing_subscriber::fmt::layer()
        .with_ansi(true)
        .with_line_number(true);

    let level_layer = EnvFilter::builder()
        .with_default_directive(format!("{module}=trace").parse().expect("invalid module"))
        .from_env_lossy();
    tracing_subscriber::registry()
        .with(io_layer)
        .with(level_layer)
        .try_init()?;
    Ok(())
}

pub fn setup_tracing_test_many(
    modules: impl IntoIterator<Item = &'static str>,
) -> Result<(), TryInitError> {
    let io_layer = tracing_subscriber::fmt::layer()
        .with_ansi(true)
        .with_line_number(true);

    let directives = modules
        .into_iter()
        .fold(EnvFilter::default(), |filter, module| {
            filter.add_directive(format!("{module}=trace").parse().expect("invalid module"))
        });

    tracing_subscriber::registry()
        .with(io_layer)
        .with(directives)
        .try_init()?;
    Ok(())
}