kana 1.1.0

Quantum mechanics simulation — state vectors, operators, entanglement, quantum circuits
Documentation
//! Structured logging for kana via `KANA_LOG` env var.

/// Initialize logging with the default level ("info").
///
/// Uses `KANA_LOG` env var to override. Safe to call multiple times.
pub fn init() {
    init_with_level("info");
}

/// Initialize logging with a custom default level.
///
/// The `KANA_LOG` env var takes precedence over `default_level`.
pub fn init_with_level(default_level: &str) {
    use tracing_subscriber::EnvFilter;
    use tracing_subscriber::fmt;
    use tracing_subscriber::prelude::*;

    let filter =
        EnvFilter::try_from_env("KANA_LOG").unwrap_or_else(|_| EnvFilter::new(default_level));

    let _ = tracing_subscriber::registry()
        .with(fmt::layer().with_target(true).with_thread_ids(true))
        .with(filter)
        .try_init();
}

#[cfg(test)]
mod tests {
    use super::*;

    #[test]
    fn init_does_not_panic() {
        init();
        init();
    }
}