Macro runtime_pattern

Source
runtime_pattern!() { /* proc-macro */ }
Expand description

Builds a pattern from a template string at runtime.

It accepts inputs in the form:

// This is not exactly a valid declarative macro, just for intuition.
macro_rules! runtime_pattern {
    ( $template:expr $(,)? ) => {};
    ( $template:expr, $( {$$custom:ident} => $ctor:expr ),+ $(,)? ) => {};
}

The only difference between runtime_pattern! macro and pattern! macro is that pattern! macro only accepts a string literal as the pattern template, while runtime_pattern! macro accepts an expression that can be evaluated to the pattern template string at runtime.

The returen type of runtime_pattern! macro is Result<RuntimePattern, spdlog::Error>. An error will be returned when parsing of the template string fails. If any of the custom patterns given are invalid, a compilation error will be triggered.

For the input formats and more usages, please refer to pattern! macro.

§Example

use spdlog::formatter::{runtime_pattern, PatternFormatter};

let template = String::from("[{level}] {payload} - {$mypat}{eol}");
let pat = runtime_pattern!(&template, {$mypat} => MyPattern::default)?;
let formatter = PatternFormatter::new(pat);