make miniconf serialization and deserialization obey limits
This commit is contained in:
parent
9fb96bd2c3
commit
09043598ba
10
src/lib.rs
10
src/lib.rs
@ -467,7 +467,7 @@ fn generate_tree_serialize(ident: &Ident, consts: &[Ident]) -> TokenStream2 {
|
|||||||
let matches = consts.iter().enumerate().map(|(i, ident)| {
|
let matches = consts.iter().enumerate().map(|(i, ident)| {
|
||||||
let index = i + 1;
|
let index = i + 1;
|
||||||
quote! {
|
quote! {
|
||||||
#index => ::miniconf::Serialize::serialize(&Self::#ident, ser).map_err(|err| ::miniconf::Error::Inner(0, err))?,
|
#index => Self::#ident.serialize(ser).map_err(|err| ::miniconf::Error::Inner(0, err))?,
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
quote! {
|
quote! {
|
||||||
@ -483,7 +483,7 @@ fn generate_tree_serialize(ident: &Ident, consts: &[Ident]) -> TokenStream2 {
|
|||||||
{
|
{
|
||||||
let ::core::result::Result::Ok(key) = keys.next::<Self>() else {
|
let ::core::result::Result::Ok(key) = keys.next::<Self>() else {
|
||||||
return ::miniconf::Error::increment_result({
|
return ::miniconf::Error::increment_result({
|
||||||
::miniconf::Serialize::serialize(&self.0, ser).map_err(|err| ::miniconf::Error::Inner(0, err))?;
|
self.serialize(ser).map_err(|err| ::miniconf::Error::Inner(0, err))?;
|
||||||
::core::result::Result::Ok(0)
|
::core::result::Result::Ok(0)
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
@ -493,7 +493,7 @@ fn generate_tree_serialize(ident: &Ident, consts: &[Ident]) -> TokenStream2 {
|
|||||||
}
|
}
|
||||||
::miniconf::Error::increment_result({
|
::miniconf::Error::increment_result({
|
||||||
match index {
|
match index {
|
||||||
0 => ::miniconf::Serialize::serialize(&self.0, ser).map_err(|err| ::miniconf::Error::Inner(0, err))?,
|
0 => self.serialize(ser).map_err(|err| ::miniconf::Error::Inner(0, err))?,
|
||||||
#(#matches)*
|
#(#matches)*
|
||||||
_ => unreachable!(),
|
_ => unreachable!(),
|
||||||
};
|
};
|
||||||
@ -517,7 +517,7 @@ fn generate_tree_deserialize(ident: &Ident, num_keys: usize) -> TokenStream2 {
|
|||||||
D: ::serde::Deserializer<'de>,
|
D: ::serde::Deserializer<'de>,
|
||||||
{
|
{
|
||||||
let ::core::result::Result::Ok(key) = keys.next::<Self>() else {
|
let ::core::result::Result::Ok(key) = keys.next::<Self>() else {
|
||||||
self.0 = ::miniconf::Deserialize::deserialize(de).map_err(|err| ::miniconf::Error::Inner(0, err))?;
|
*self = Self::deserialize(de).map_err(|err| ::miniconf::Error::Inner(0, err))?;
|
||||||
return ::core::result::Result::Ok(0);
|
return ::core::result::Result::Ok(0);
|
||||||
};
|
};
|
||||||
let index = ::miniconf::Key::find::<Self>(&key).ok_or(::miniconf::Traversal::NotFound(1))?;
|
let index = ::miniconf::Key::find::<Self>(&key).ok_or(::miniconf::Traversal::NotFound(1))?;
|
||||||
@ -526,7 +526,7 @@ fn generate_tree_deserialize(ident: &Ident, num_keys: usize) -> TokenStream2 {
|
|||||||
}
|
}
|
||||||
match index {
|
match index {
|
||||||
0 => ::miniconf::Error::increment_result((||{
|
0 => ::miniconf::Error::increment_result((||{
|
||||||
self.0 = ::miniconf::Deserialize::deserialize(de).map_err(|err| ::miniconf::Error::Inner(0, err))?;
|
*self = Self::deserialize(de).map_err(|err| ::miniconf::Error::Inner(0, err))?;
|
||||||
Ok(0)
|
Ok(0)
|
||||||
})()),
|
})()),
|
||||||
1..=#num_keys => ::core::result::Result::Err(::miniconf::Traversal::Absent(0))?,
|
1..=#num_keys => ::core::result::Result::Err(::miniconf::Traversal::Absent(0))?,
|
||||||
|
Loading…
Reference in New Issue
Block a user