2 unstable releases
0.2.0 | Dec 22, 2023 |
---|---|
0.1.0 | Oct 30, 2023 |
#1891 in Encoding
Used in labelmaker
63KB
891 lines
GitHub | crates.io | Documentation | Issues | Changelog
cfgfifo
is a Rust library for serializing & deserializing various common
configuration file formats (JSON, JSON5, RON, TOML, and
YAML), including autodetecting the format of a file based on its file
extension. It's good for application authors who want to support multiple
configuration file formats but don't want to write out a bunch of boilerplate.
cfgfifo
has already written that boilerplate for you, so let it (de)serialize
your files!
Example
use serde::Deserialize;
#[derive(Clone, Debug, Deserialize, Eq, PartialEq)]
struct AppConfig {
#[serde(default)]
enable_foo: bool,
#[serde(default)]
bar_type: BarType,
#[serde(default)]
flavor: Option<String>,
}
#[derive(Clone, Debug, Default, Deserialize, Eq, PartialEq)]
enum BarType {
#[default]
Open,
Closed,
Clopen,
}
fn main() -> anyhow::Result<()> {
let Some(cfgpath) = std::env::args().nth(1) else {
anyhow::bail!("No configuration file specified");
};
// cfgfifo identifies the format used by the file `cfgpath` based on its
// file extension and deserializes it appropriately:
let cfg: AppConfig = cfgfifo::load(cfgpath)?;
println!("You specified the following configuration:");
println!("{cfg:#?}");
Ok(())
}
Dependencies
~3–4.5MB
~92K SLoC