pub struct ZFromSerde<T> { /* private fields */ }Expand description
Schema that deserializes the JSON value into any T: DeserializeOwned.
Created via vld::from_serde().
A serde error becomes one parse_error issue whose message is the serde
message. JSON Schema is {} (any) unless set with schema.
§Example
use vld::prelude::*;
#[derive(Debug, PartialEq, serde::Deserialize)]
#[serde(rename_all = "lowercase")]
enum Role { Admin, User }
let role = vld::from_serde::<Role>();
assert_eq!(role.parse(r#""admin""#).unwrap(), Role::Admin);
let err = role.parse(r#""root""#).unwrap_err();
assert!(err.issues[0].message.contains("unknown variant"));Implementations§
Source§impl<T> ZFromSerde<T>
impl<T> ZFromSerde<T>
Sourcepub fn new() -> ZFromSerde<T>
pub fn new() -> ZFromSerde<T>
Create the schema (the same as its vld:: constructor function).
Sourcepub fn schema(self, schema: Value) -> ZFromSerde<T>
pub fn schema(self, schema: Value) -> ZFromSerde<T>
JSON Schema to report for this type (default {}).
Trait Implementations§
Source§impl<T> Clone for ZFromSerde<T>
impl<T> Clone for ZFromSerde<T>
Source§fn clone(&self) -> ZFromSerde<T>
fn clone(&self) -> ZFromSerde<T>
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl<T> Default for ZFromSerde<T>
impl<T> Default for ZFromSerde<T>
Source§fn default() -> ZFromSerde<T>
fn default() -> ZFromSerde<T>
Returns the “default value” for a type. Read more
Source§impl<T> VldSchema for ZFromSerde<T>where
T: DeserializeOwned,
impl<T> VldSchema for ZFromSerde<T>where
T: DeserializeOwned,
Source§fn parse_value(&self, value: &Value) -> Result<T, VldError>
fn parse_value(&self, value: &Value) -> Result<T, VldError>
Parse and validate a
serde_json::Value.Source§fn parse_missing(&self) -> Result<Self::Output, VldError>
fn parse_missing(&self) -> Result<Self::Output, VldError>
Parse an object field whose key is absent. Read more
Source§fn parse<I>(&self, input: &I) -> Result<Self::Output, VldError>
fn parse<I>(&self, input: &I) -> Result<Self::Output, VldError>
Parse from any supported input (JSON string, file path,
serde_json::Value, etc.)Source§fn validate<T>(&self, value: &T) -> Result<Self::Output, VldError>where
T: Serialize,
fn validate<T>(&self, value: &T) -> Result<Self::Output, VldError>where
T: Serialize,
Validate an existing Rust value against this schema. Read more
Source§fn is_valid<T>(&self, value: &T) -> boolwhere
T: Serialize,
fn is_valid<T>(&self, value: &T) -> boolwhere
T: Serialize,
Check if an existing Rust value passes this schema’s validation. Read more
Source§fn optional(self) -> ZOptional<Self>
fn optional(self) -> ZOptional<Self>
Make this field optional. Missing or null values become
None.Source§fn with_default(self, value: Self::Output) -> ZDefault<Self>
fn with_default(self, value: Self::Output) -> ZDefault<Self>
Provide a default value when the field is missing or null.
Source§fn refine<F>(self, check: F, message: &str) -> ZRefine<Self, F>
fn refine<F>(self, check: F, message: &str) -> ZRefine<Self, F>
Add a custom refinement check without changing the output type.
Source§fn rule_msg<R>(self, rule: R, msg: impl Into<String>) -> ZRule<Self, R>
fn rule_msg<R>(self, rule: R, msg: impl Into<String>) -> ZRule<Self, R>
rule with a custom error message.Source§fn transform<F, U>(self, f: F) -> ZTransform<Self, F, U>
fn transform<F, U>(self, f: F) -> ZTransform<Self, F, U>
Transform the output value after successful parsing.
Source§fn catch(self, fallback: Self::Output) -> ZCatch<Self>
fn catch(self, fallback: Self::Output) -> ZCatch<Self>
Return a fallback value on ANY validation error.
Source§fn pipe<S>(self, next: S) -> ZPipe<Self, S>
fn pipe<S>(self, next: S) -> ZPipe<Self, S>
Chain this schema’s output into another schema. Read more
Source§fn describe(self, description: &str) -> ZDescribe<Self>
fn describe(self, description: &str) -> ZDescribe<Self>
Attach a human-readable description/label to this schema. Read more
Source§fn super_refine<F>(self, check: F) -> ZSuperRefine<Self, F>
fn super_refine<F>(self, check: F) -> ZSuperRefine<Self, F>
Add a custom refinement that can produce multiple errors. Read more
Source§fn or<B>(self, other: B) -> ZUnion2<Self, B>where
B: VldSchema,
fn or<B>(self, other: B) -> ZUnion2<Self, B>where
B: VldSchema,
Create a union: this schema or another. Returns
Either<Self::Output, B::Output>.Source§fn and<B>(self, other: B) -> ZIntersection<Self, B>where
B: VldSchema,
fn and<B>(self, other: B) -> ZIntersection<Self, B>where
B: VldSchema,
Create an intersection: input must satisfy both schemas.
Auto Trait Implementations§
impl<T> Forget for ZFromSerde<T>
impl<T> Freeze for ZFromSerde<T>
impl<T> RefUnwindSafe for ZFromSerde<T>
impl<T> Send for ZFromSerde<T>
impl<T> Sync for ZFromSerde<T>
impl<T> Unpin for ZFromSerde<T>
impl<T> UnsafeUnpin for ZFromSerde<T>
impl<T> UnwindSafe for ZFromSerde<T>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more