Plugx Input (work-in-progress)
A simple and flexible data-structure for configuration and state manipulation of plugins.
Package | Documentation | Repository
Demo
use Input;
let mut map = new_map;
map.map_mut.insert;
let inner_list = map
.map_mut // &mut Hashmap<String, Input>
.get_mut // Option<&mut Input>
.unwrap // &mut Input (which is a list)
.list_mut; // &mut Vec<Input>
*inner_list.get_mut.unwrap = 3.14.into;
*inner_list.get_mut.unwrap = true.into;
*inner_list.get_mut.unwrap = "hello world".into;
println!;
// prints:
// {"key": [3.14, true, "hello world"]}
Features
Diff
use Input;
use ;
let mut map = new_map; // {}
map.map_mut.insert; // {"foo": {}}
map // {"foo": {"bar": [50, 60, 70]}}
.map_mut
.get_mut.unwrap
.map_mut
.insert;
let mut map2 = map.clone; // {"foo": {"bar": [50, 60, 70]}}
*map2 // {"foo": {"bar": [100, 60, 70]}}
.map_mut
.get_mut.unwrap
.map_mut
.get_mut.unwrap
.list_mut
.get_mut.unwrap
.int_mut = 100;
diff;
// prints:
// value [foo][bar][0] increased by 50
Merge
use Input;
use merge;
let mut map = new_map; // {}
map.map_mut.insert; // {"foo": {}}
map // {"foo": {"bar": false}}
.map_mut
.get_mut.unwrap
.map_mut
.insert;
let mut map2 = new_map; // {}
map2.map_mut.insert; // {"foo": {}}
map2 // {"foo": {"baz": true}}
.map_mut
.get_mut.unwrap
.map_mut
.insert;
merge;
println!;
// prints:
// {"foo": {"bar": false, "baz": true}}
Cargo features
- default: Nothing!
- schema: Enables schema and validation
Input
. - logging: Enables logging via log crate.
- tracing: Enables logging via tracing crate.
To contributors
I ❤️ PR from everyone, and I appreciate your help but before opening a PR, file an issue and describe your feature, fix, etc.