pub struct ZOptional<T: VldSchema> { /* private fields */ }Expand description
Wraps a schema to make it optional.
If the value is null or missing, returns Ok(None).
Otherwise, delegates to the inner schema and wraps the result in Some.
Implementations§
Trait Implementations§
Source§impl<T: VldSchema> VldSchema for ZOptional<T>
impl<T: VldSchema> VldSchema for ZOptional<T>
Source§type Output = Option<<T as VldSchema>::Output>
type Output = Option<<T as VldSchema>::Output>
The Rust type produced by this schema after successful parsing.
Source§fn parse_value(&self, value: &Value) -> Result<Option<T::Output>, VldError>
fn parse_value(&self, value: &Value) -> Result<Option<T::Output>, VldError>
Parse and validate a
serde_json::Value.Source§fn parse<I: VldInput + ?Sized>(
&self,
input: &I,
) -> Result<Self::Output, VldError>
fn parse<I: VldInput + ?Sized>( &self, input: &I, ) -> Result<Self::Output, VldError>
Parse from any supported input (JSON string, file path,
serde_json::Value, etc.)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 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: VldSchema>(self, next: S) -> ZPipe<Self, S>
fn pipe<S: VldSchema>(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: VldSchema>(self, other: B) -> ZUnion2<Self, B>
fn or<B: VldSchema>(self, other: B) -> ZUnion2<Self, B>
Create a union: this schema or another. Returns
Either<Self::Output, B::Output>.Source§fn and<B: VldSchema>(self, other: B) -> ZIntersection<Self, B>
fn and<B: VldSchema>(self, other: B) -> ZIntersection<Self, B>
Create an intersection: input must satisfy both schemas.
Auto Trait Implementations§
impl<T> Freeze for ZOptional<T>where
T: Freeze,
impl<T> RefUnwindSafe for ZOptional<T>where
T: RefUnwindSafe,
impl<T> Send for ZOptional<T>where
T: Send,
impl<T> Sync for ZOptional<T>where
T: Sync,
impl<T> Unpin for ZOptional<T>where
T: Unpin,
impl<T> UnsafeUnpin for ZOptional<T>where
T: UnsafeUnpin,
impl<T> UnwindSafe for ZOptional<T>where
T: UnwindSafe,
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