use crate::level::LogLevel;
pub struct LogMetadata {
pub level: LogLevel,
pub fmt_str: &'static str,
pub file: &'static str,
pub line: u32,
pub module_path: &'static str,
pub arg_count: u8,
}
unsafe impl Sync for LogMetadata {}
#[cfg(test)]
mod tests {
use super::*;
const FIXTURE: LogMetadata = LogMetadata {
level: LogLevel::Info,
fmt_str: "user {} logged in",
file: "src/main.rs",
line: 42,
module_path: "my_crate::auth",
arg_count: 1,
};
#[test]
fn fields_are_accessible() {
assert_eq!(FIXTURE.level, LogLevel::Info);
assert_eq!(FIXTURE.fmt_str, "user {} logged in");
assert_eq!(FIXTURE.file, "src/main.rs");
assert_eq!(FIXTURE.line, 42);
assert_eq!(FIXTURE.module_path, "my_crate::auth");
assert_eq!(FIXTURE.arg_count, 1);
}
#[test]
fn is_sync() {
fn assert_sync<T: Sync>() {}
assert_sync::<LogMetadata>();
}
#[test]
fn static_metadata_is_valid() {
static META: LogMetadata = LogMetadata {
level: LogLevel::Error,
fmt_str: "fatal: {}",
file: file!(),
line: line!(),
module_path: module_path!(),
arg_count: 1,
};
assert_eq!(META.level, LogLevel::Error);
assert_eq!(META.arg_count, 1);
}
}