ayun_config/support/
mod.rs

1use crate::error::Error;
2use ayun_core::{support::app, traits::ErrorTrait, Result};
3
4mod config;
5mod instance;
6
7pub fn config<T: serde::de::DeserializeOwned>(key: &str) -> Result<T> {
8    use crate::traits::ConfigurationTrait;
9    use ayun_core::traits::ErrorTrait;
10
11    app()
12        .resolve::<crate::Config>()?
13        .get(key)
14        .map_err(Error::wrap)
15}
16
17pub fn default<T: serde::de::DeserializeOwned>() -> Result<T> {
18    let default = toml::from_str::<toml::Value>("").map_err(Error::wrap)?;
19
20    default.try_into::<T>().map_err(Error::wrap)
21}
22
23pub fn string_to_toml(string: String) -> toml::Value {
24    if let Ok(value) = string.parse::<bool>() {
25        return toml::Value::Boolean(value);
26    }
27
28    if let Ok(value) = string.parse::<i64>() {
29        return toml::Value::Integer(value);
30    }
31
32    if let Ok(value) = string.parse::<f64>() {
33        return toml::Value::Float(value);
34    }
35
36    if let Ok(value) = string.parse::<toml::value::Datetime>() {
37        return toml::Value::Datetime(value);
38    }
39
40    toml::Value::String(string.clone())
41}