- Just a wrapper of Serde and 100% compatible,
- implementing
serde::{Serialize, Deserialize}for your structs, - with providing
#[serde(validate = "...")]for declarative validation in#[derive(Deserialize)].
Example (closure.rs)
[]
= "0.3"
= "1.0"
use ;
Of course, you can use it in combination with some validation tools like validator! ( working example: validator.rs )
Attribute
-
#[serde(validate = "function")]Automatically validate the deserialized struct by the
function. Thefunctionmust be an expression that is callable as typefn(&self) -> Result<(), impl Display>(of course the error type must be known at compile time).(expression: an inlined closure as above, or name/path to a
fnor a method, or even a block expression or function calling or anything that are finally evaluated asfn(&self) -> Result<(), impl Display>)Errors are internally converted to a
Stringand passed toserde::de::Error::custom. -
#[serde(validate(by = "function", error = "Type"))]Using given
Typefor the validation error, without conversion. Thefunctionsignature must befn(&self) -> Result<(), Type>.This will be preferred in no-std use, or, maybe when you need better performance in error cases.
Both "function" and "Type" above accept path like "crate::util::validate".
Additionally, #[serdev(crate = "path::to::serdev")] is supported for reexport from another crate.
License
Licensed under MIT LICENSE ( LICENSE or https://opensource.org/licenses/MIT ).