motorcortex-rust 0.5.0

Motorcortex Rust: a Rust client for the Motorcortex Core real-time control system (async + blocking).
Documentation
#[derive(Debug, Clone, Copy, PartialEq)]
pub enum LogLevel {
    None,
    Debug,
    Info,
    Warn,
    Error,
}

pub fn init_logger(log_level: LogLevel) {
    // SAFETY: both NNG log functions mutate global logger state
    // and take no caller-owned pointers. Idempotent and
    // thread-safe per NNG docs.
    unsafe {
        nng_c_sys::nng_log_set_logger(Some(nng_c_sys::nng_stderr_logger));
        match log_level {
            LogLevel::None => nng_c_sys::nng_log_set_level(nng_c_sys::nng_log_level::NNG_LOG_NONE),
            LogLevel::Debug => {
                nng_c_sys::nng_log_set_level(nng_c_sys::nng_log_level::NNG_LOG_DEBUG)
            }
            LogLevel::Info => nng_c_sys::nng_log_set_level(nng_c_sys::nng_log_level::NNG_LOG_INFO),
            LogLevel::Warn => nng_c_sys::nng_log_set_level(nng_c_sys::nng_log_level::NNG_LOG_WARN),
            LogLevel::Error => nng_c_sys::nng_log_set_level(nng_c_sys::nng_log_level::NNG_LOG_ERR),
        };
    }
}

pub fn init_debug_logger() {
    init_logger(LogLevel::Debug);
}