pub struct ZTryTransform<T, F, U> { /* private fields */ }Expand description
Transforms the output with a fallible function: an Err becomes a
validation issue (IssueCode::Custom { code: "transform" }, the error’s
text as the message).
Created via VldSchema::try_transform().
use vld::prelude::*;
let port = vld::string().try_transform(|s| s.parse::<u16>());
assert_eq!(port.parse(r#""8080""#).unwrap(), 8080);
let err = port.parse(r#""99999""#).unwrap_err();
assert_eq!(err.issues[0].code.key(), "transform");
assert_eq!(err.issues[0].message, "number too large to fit in target type");Implementations§
Source§impl<T, F, U> ZTryTransform<T, F, U>
impl<T, F, U> ZTryTransform<T, F, U>
Sourcepub fn new(inner: T, transform_fn: F) -> ZTryTransform<T, F, U>
pub fn new(inner: T, transform_fn: F) -> ZTryTransform<T, F, U>
Create the schema (the same as VldSchema::try_transform).
Sourcepub fn inner_schema(&self) -> &T
pub fn inner_schema(&self) -> &T
Access the inner schema.
Trait Implementations§
Source§impl<T, F, U, E> VldSchema for ZTryTransform<T, F, U>
impl<T, F, U, E> VldSchema for ZTryTransform<T, F, U>
Source§fn parse_value(&self, value: &Value) -> Result<U, VldError>
fn parse_value(&self, value: &Value) -> Result<U, VldError>
Parse and validate a
serde_json::Value.Source§fn parse_missing(&self) -> Result<U, VldError>
fn parse_missing(&self) -> Result<U, 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 try_transform<F, U, E>(self, f: F) -> ZTryTransform<Self, F, U>
fn try_transform<F, U, E>(self, f: F) -> ZTryTransform<Self, F, U>
Transform the output with a fallible function; an
Err becomes a
validation issue (Custom { code: "transform" }, message = the error). Read moreSource§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, F, U> Forget for ZTryTransform<T, F, U>
impl<T, F, U> Freeze for ZTryTransform<T, F, U>
impl<T, F, U> RefUnwindSafe for ZTryTransform<T, F, U>
impl<T, F, U> Send for ZTryTransform<T, F, U>
impl<T, F, U> Sync for ZTryTransform<T, F, U>
impl<T, F, U> Unpin for ZTryTransform<T, F, U>
impl<T, F, U> UnsafeUnpin for ZTryTransform<T, F, U>
impl<T, F, U> UnwindSafe for ZTryTransform<T, F, U>
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> 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