rcal_macros 3.0.0

Procedural macros for the rcal OMS Critical Abstraction Layer
Documentation
use rcal_macros::{init_test_logger, rcal_trace};
use slog::{Logger, info, o};

#[init_test_logger]
#[test]
fn test_empty() {
    info!(logger, "A test log message");
}

struct Traced {
    logger: Logger,
}

#[rcal_trace]
impl Traced {
    fn method_one(&self) {}
    fn method_two(&self) -> i32 {
        42
    }
}

impl Traced {
    #[rcal_trace]
    fn single_method(&self) {}

    #[rcal_trace(logger = self.logger)]
    fn explicit_logger(&self) {}
}

#[rcal_trace]
fn bare_fn(logger: &Logger) {
    let _ = logger;
}

#[init_test_logger]
#[test]
fn test_rcal_trace_impl() {
    let t = Traced {
        logger: logger.new(o!()),
    };
    t.method_one();
    assert_eq!(t.method_two(), 42);
    t.single_method();
    t.explicit_logger();
    bare_fn(&t.logger);
}