INNER CODE UNIT · Rust
set
gosub-io/gosub-engine · crates/gosub_config/src/lib.rs:115
pub fn set(&self, key: &str, value: Setting) -> Result<()> {
// Mutate under the lock, collect the callbacks to fire, then release the lock *before*
// invoking them so callbacks can freely re-enter the store.
let fire = {
let store = self.0.write();
store.set(key, value)?.map(|value| {
let callbacks = store.matching_callbacks(key);
(value, callbacks)
})
};
if let Some((value, callbacks)) = fire {
for callback in callbacks {
callback(key, &value);
}
}
Ok(())
}