ayun_config/support/
mod.rs1use 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}