wicked-waifus-rs/common/src/config_util.rs
xavo95 96d1994fe2 Support for Nested combat messages and JSPatch Notify from files (#2)
Reviewed-on: Shorekeeper/Shorekeeper#2
Co-authored-by: xavo95 <xavo95@xeondev.com>
Co-committed-by: xavo95 <xavo95@xeondev.com>
2024-09-14 09:05:17 +00:00

18 lines
436 B
Rust

use serde::de::DeserializeOwned;
pub trait TomlConfig: DeserializeOwned {
const DEFAULT_TOML: &str;
}
pub fn load_or_create<C>(path: &str) -> C
where
C: DeserializeOwned + TomlConfig,
{
std::fs::read_to_string(path).map_or_else(
|_| {
std::fs::write(path, C::DEFAULT_TOML).unwrap();
toml::from_str(C::DEFAULT_TOML).unwrap()
},
|data| toml::from_str(&data).unwrap(),
)
}