Rusty Config File Parser.
```rust use esyn::{Esyn, EsynDe};
fn main() { let config = r#" fn testexample() { let a = Config { name: "hi", map: Map::Down, map2: Map::Any("llll"), map3: Map::Named { a: 1, _color: Color { fg: 32, bg: 12 }, }, invertmouse: false, font: Some("abc"), window: Window { color: Color { fg: 32 }, }, tuple: (1, ("hi"), 2), _optenum: None, };
a.window = Window {
borderless: true,
topmost: true,
};
a.window.borderless = false;
a.window.color = Color { bg: 12 };
}
"#; let esyn = esyn::Esyn::new(&config).unwrap();
#[derive(Debug, PartialEq, EsynDe)]
enum Map {
Any(String),
Named { a: u8, _color: Color },
Down,
Up,
}
#[derive(Debug, PartialEq, EsynDe)]
struct Window {
borderless: bool,
topmost: bool,
color: Color,
}
#[derive(Debug, PartialEq, EsynDe)]
struct Color {
bg: u8,
fg: u8,
}
#[derive(Debug, PartialEq, EsynDe)]
struct Config {
name: String,
invert_mouse: bool,
font: Option<String>,
window: Window,
_opt_enum: Option<Color>,
map: Map,
map2: Map,
map3: Map,
_tuple: (u8, String, u32),
}
let list = esyn.get::<Config>("test_example").unwrap();
let a = &list[0];
assert_eq!(a.name, "hi".to_string());
assert_eq!(a.map, Map::Down);
assert_eq!(a.font, Some("abc".to_string()));
assert_eq!(a.window.borderless, false);
assert_eq!(a.window.topmost, true);
dbg!(a);
}
```
```rust u8 u16 u32 u64 u128 usize i8 i16 i32 i64 i128 isize f32 f64 bool char String
Option
Struct Enum
```