Function spirit::extension::immutable_cfg [−][src]
pub fn immutable_cfg<Ext, R, E, N>(extractor: E, name: N) -> impl Extension<Ext> where
Ext: Extensible,
E: for<'a> Fn(&'a Ext::Config) -> &R + Send + 'static,
R: Clone + PartialEq + Send + 'static,
N: Display + Send + 'static,
Expand description
An extension to warn about changes to configuration that can’t be updated at runtime.
This is similar to immutable_cfg_init
except that there’s no callback called at the first
load.
Examples
use serde::Deserialize;
use spirit::{Empty, Spirit};
use spirit::prelude::*;
use spirit::extension;
#[derive(Clone, Debug, Default, Deserialize)]
struct Cfg {
#[serde(default)]
msg: String,
}
impl Cfg {
fn msg(&self) -> &String {
&self.msg
}
}
fn main() {
Spirit::<Empty, Cfg>::new()
// This prints a warning if the message is ever changed during runtime ‒ we can't take
// it back and change it after it got printed in the body.
.with(extension::immutable_cfg(Cfg::msg, "message"))
.run(|spirit| {
println!("{}", spirit.config().msg);
Ok(())
});
}