use darling to parse attributes

the code is much more readable now
This commit is contained in:
2024-08-16 18:14:56 +02:00
parent 96f081b9da
commit aa1b8d9272
4 changed files with 512 additions and 553 deletions

View File

@ -4,7 +4,7 @@ use macroconf::config;
use miniconf::{
Error::Traversal,
IntoKeys, JsonCoreSlash, Path,
Traversal::{Absent, TooLong},
Traversal::{Access, TooLong},
Tree, TreeKey,
};
use serde::{Deserialize, Serialize};
@ -13,11 +13,11 @@ use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Copy, Serialize, Deserialize, Tree)]
struct SubConfig {
skipped: i32,
#[min]
#[config(min)]
min: i32,
#[max]
#[config(max)]
max: i32,
#[default = 0]
#[config(default = "0")]
default: i32,
/// This is a description
description: i32,
@ -94,9 +94,8 @@ fn serialize() {
("/description/value", "5"),
("/description/description", "\"This is a description\""),
] {
let res = config.get_json(input, &mut buffer);
assert_eq!(res, Ok(output.len()));
assert_eq!(from_utf8(&buffer[..output.len()]), Ok(output));
let len = config.get_json(input, &mut buffer).unwrap();
assert_eq!(from_utf8(&buffer[..len]), Ok(output));
}
}
@ -132,7 +131,7 @@ fn deserialize() {
"/description/description",
] {
let res = config.set_json(input, b"10");
assert_eq!(res, Err(Traversal(Absent(1))));
assert_eq!(res, Err(Traversal(Access(1, "Cannot write limits"))));
}
}