Skip to main content

Metadata

Struct Metadata 

Source
#[non_exhaustive]
pub struct Metadata<'a> { pub level: Level, pub target: &'a str, pub file: Option<&'a str>, pub line: Option<u32>, pub timestamp_unix_nanos: Option<u128>, }
Expand description

Metadata describing the origin and severity of a record.

level and target are required; the rest is best-effort context. The logging macros populate file and line automatically and the crate::Logger fills in timestamp_unix_nanos when timestamps are enabled.

The struct is #[non_exhaustive] so new metadata can be added in a minor release. Build it with Metadata::new and the with_* methods; every field stays publicly readable.

§Examples

use log_io::{Level, Metadata};

let meta = Metadata::new(Level::Warn, "app::db")
    .with_location("src/db.rs", 42)
    .with_timestamp(1_700_000_000_000_000_000);
assert_eq!(meta.target, "app::db");
assert_eq!(meta.line, Some(42));

Fields (Non-exhaustive)§

This struct is marked as non-exhaustive
Non-exhaustive structs could have additional fields added in future. Therefore, non-exhaustive structs cannot be constructed in external crates using the traditional Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.
§level: Level

Severity of the record.

§target: &'a str

Logical target. Typically the module path, but callers are free to use a domain-specific identifier for filtering.

§file: Option<&'a str>

Source file path, if known.

§line: Option<u32>

Source line number, if known.

§timestamp_unix_nanos: Option<u128>

Nanoseconds since the Unix epoch, if known. Populated by the logger when std is available and timestamps are enabled. None means the consumer should supply its own clock (typical in no_std builds).

Implementations§

Source§

impl<'a> Metadata<'a>

Source

pub const fn new(level: Level, target: &'a str) -> Self

Build minimal metadata containing only level and target. All optional fields are None.

Source

pub const fn with_location(self, file: &'a str, line: u32) -> Self

Replace the source location.

Source

pub const fn with_timestamp(self, ts_unix_nanos: u128) -> Self

Replace the timestamp (nanoseconds since the Unix epoch).

Trait Implementations§

Source§

impl<'a> Clone for Metadata<'a>

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<'a> Copy for Metadata<'a>

Source§

impl<'a> Debug for Metadata<'a>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'a> PartialEq for Metadata<'a>

Source§

fn eq(&self, other: &Self) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl<'a> StructuralPartialEq for Metadata<'a>

Auto Trait Implementations§

§

impl<'a> Freeze for Metadata<'a>

§

impl<'a> RefUnwindSafe for Metadata<'a>

§

impl<'a> Send for Metadata<'a>

§

impl<'a> Sync for Metadata<'a>

§

impl<'a> Unpin for Metadata<'a>

§

impl<'a> UnsafeUnpin for Metadata<'a>

§

impl<'a> UnwindSafe for Metadata<'a>

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.