pub struct ZString { /* private fields */ }Expand description
Schema for string validation. Created via vld::string().
§Example
use vld::prelude::*;
let schema = vld::string().min(3).max(20).email();Implementations§
Source§impl ZString
impl ZString
Sourcepub fn email_msg(self, msg: impl Into<String>) -> ZString
pub fn email_msg(self, msg: impl Into<String>) -> ZString
Must be a valid email address.
With a custom error message.
Sourcepub fn url_msg(self, msg: impl Into<String>) -> ZString
pub fn url_msg(self, msg: impl Into<String>) -> ZString
Must be a valid URL (http/https).
With a custom error message.
Sourcepub fn uuid_msg(self, msg: impl Into<String>) -> ZString
pub fn uuid_msg(self, msg: impl Into<String>) -> ZString
Must be a valid UUID.
With a custom error message.
Sourcepub fn ip_msg(self, msg: impl Into<String>) -> ZString
pub fn ip_msg(self, msg: impl Into<String>) -> ZString
Must be a valid IP address (IPv4 or IPv6).
With a custom error message.
Sourcepub fn slug_msg(self, msg: impl Into<String>) -> ZString
pub fn slug_msg(self, msg: impl Into<String>) -> ZString
Must be a URL-friendly slug ([a-z0-9-]).
With a custom error message.
Sourcepub fn color_msg(self, msg: impl Into<String>) -> ZString
pub fn color_msg(self, msg: impl Into<String>) -> ZString
Must be a color (#RRGGBB, #RRGGBBAA, rgb(...), hsl(...)).
With a custom error message.
Sourcepub fn currency_code(self) -> ZString
pub fn currency_code(self) -> ZString
Must be a currency code (ISO-4217-like uppercase 3 letters).
Sourcepub fn currency_code_msg(self, msg: impl Into<String>) -> ZString
pub fn currency_code_msg(self, msg: impl Into<String>) -> ZString
Must be a currency code (ISO-4217-like uppercase 3 letters).
With a custom error message.
Sourcepub fn country_code(self) -> ZString
pub fn country_code(self) -> ZString
Must be a country code (ISO-3166 alpha-2).
Sourcepub fn country_code_msg(self, msg: impl Into<String>) -> ZString
pub fn country_code_msg(self, msg: impl Into<String>) -> ZString
Must be a country code (ISO-3166 alpha-2).
With a custom error message.
Sourcepub fn locale_msg(self, msg: impl Into<String>) -> ZString
pub fn locale_msg(self, msg: impl Into<String>) -> ZString
Must be a locale (ll or ll-RR, example: en, en-US).
With a custom error message.
Sourcepub fn cron_msg(self, msg: impl Into<String>) -> ZString
pub fn cron_msg(self, msg: impl Into<String>) -> ZString
Must be a cron expression (5 or 6 fields).
With a custom error message.
Sourcepub fn ipv4_msg(self, msg: impl Into<String>) -> ZString
pub fn ipv4_msg(self, msg: impl Into<String>) -> ZString
Must be a valid IPv4 address.
With a custom error message.
Sourcepub fn ipv6_msg(self, msg: impl Into<String>) -> ZString
pub fn ipv6_msg(self, msg: impl Into<String>) -> ZString
Must be a valid IPv6 address (IPv4-mapped forms included).
With a custom error message.
Sourcepub fn cidr_msg(self, msg: impl Into<String>) -> ZString
pub fn cidr_msg(self, msg: impl Into<String>) -> ZString
Must be a valid CIDR block (IPv4/IPv6 with a decimal prefix).
With a custom error message.
Sourcepub fn mac_msg(self, msg: impl Into<String>) -> ZString
pub fn mac_msg(self, msg: impl Into<String>) -> ZString
Must be a valid MAC address (xx:xx:xx:xx:xx:xx).
With a custom error message.
Sourcepub fn hex_msg(self, msg: impl Into<String>) -> ZString
pub fn hex_msg(self, msg: impl Into<String>) -> ZString
Must contain only hexadecimal characters.
With a custom error message.
Sourcepub fn credit_card(self) -> ZString
pub fn credit_card(self) -> ZString
Must be a valid credit card number: digits with optional spaces/dashes, 12-19 digits, Luhn check.
Sourcepub fn credit_card_msg(self, msg: impl Into<String>) -> ZString
pub fn credit_card_msg(self, msg: impl Into<String>) -> ZString
Must be a valid credit card number: digits with optional spaces/dashes, 12-19 digits, Luhn check.
With a custom error message.
Sourcepub fn phone(self) -> ZString
pub fn phone(self) -> ZString
Must be an international phone number: leading +, 8-15 digits, optional spaces, dashes and parentheses.
Sourcepub fn phone_msg(self, msg: impl Into<String>) -> ZString
pub fn phone_msg(self, msg: impl Into<String>) -> ZString
Must be an international phone number: leading +, 8-15 digits, optional spaces, dashes and parentheses.
With a custom error message.
Sourcepub fn semver(self) -> ZString
pub fn semver(self) -> ZString
Must be a semantic version (MAJOR.MINOR.PATCH, optional v prefix).
Sourcepub fn semver_msg(self, msg: impl Into<String>) -> ZString
pub fn semver_msg(self, msg: impl Into<String>) -> ZString
Must be a semantic version (MAJOR.MINOR.PATCH, optional v prefix).
With a custom error message.
Sourcepub fn jwt(self) -> ZString
pub fn jwt(self) -> ZString
Must be a JWT-like token (header.payload.signature, base64url parts).
Sourcepub fn jwt_msg(self, msg: impl Into<String>) -> ZString
pub fn jwt_msg(self, msg: impl Into<String>) -> ZString
Must be a JWT-like token (header.payload.signature, base64url parts).
With a custom error message.
Sourcepub fn ascii_msg(self, msg: impl Into<String>) -> ZString
pub fn ascii_msg(self, msg: impl Into<String>) -> ZString
Must contain only ASCII characters.
With a custom error message.
Sourcepub fn alpha_msg(self, msg: impl Into<String>) -> ZString
pub fn alpha_msg(self, msg: impl Into<String>) -> ZString
Must contain only alphabetic ASCII characters.
With a custom error message.
Sourcepub fn alphanumeric(self) -> ZString
pub fn alphanumeric(self) -> ZString
Must contain only ASCII alphanumeric characters.
Sourcepub fn alphanumeric_msg(self, msg: impl Into<String>) -> ZString
pub fn alphanumeric_msg(self, msg: impl Into<String>) -> ZString
Must contain only ASCII alphanumeric characters.
With a custom error message.
Sourcepub fn lowercase_msg(self, msg: impl Into<String>) -> ZString
pub fn lowercase_msg(self, msg: impl Into<String>) -> ZString
Must already be lowercase.
With a custom error message.
Sourcepub fn uppercase_msg(self, msg: impl Into<String>) -> ZString
pub fn uppercase_msg(self, msg: impl Into<String>) -> ZString
Must already be uppercase.
With a custom error message.
Sourcepub fn base64_msg(self, msg: impl Into<String>) -> ZString
pub fn base64_msg(self, msg: impl Into<String>) -> ZString
Must be a valid (padded) Base64 string.
With a custom error message.
Sourcepub fn base64url(self) -> ZString
pub fn base64url(self) -> ZString
Must be a valid Base64URL string (-/_ alphabet, padding optional).
Sourcepub fn base64url_msg(self, msg: impl Into<String>) -> ZString
pub fn base64url_msg(self, msg: impl Into<String>) -> ZString
Must be a valid Base64URL string (-/_ alphabet, padding optional).
With a custom error message.
Sourcepub fn json_msg(self, msg: impl Into<String>) -> ZString
pub fn json_msg(self, msg: impl Into<String>) -> ZString
Must be a string containing one valid JSON document.
With a custom error message.
Sourcepub fn iso_date(self) -> ZString
pub fn iso_date(self) -> ZString
Must be a valid ISO 8601 calendar date (YYYY-MM-DD, real day of month).
Sourcepub fn iso_date_msg(self, msg: impl Into<String>) -> ZString
pub fn iso_date_msg(self, msg: impl Into<String>) -> ZString
Must be a valid ISO 8601 calendar date (YYYY-MM-DD, real day of month).
With a custom error message.
Sourcepub fn iso_datetime(self) -> ZString
pub fn iso_datetime(self) -> ZString
Must be a valid ISO 8601 datetime: YYYY-MM-DDTHH:MM:SS[.frac] (seconds required, T/t) with optional Z/z / ±HH:MM — the same grammar as vld::chrono::datetime() & co.
Sourcepub fn iso_datetime_msg(self, msg: impl Into<String>) -> ZString
pub fn iso_datetime_msg(self, msg: impl Into<String>) -> ZString
Must be a valid ISO 8601 datetime: YYYY-MM-DDTHH:MM:SS[.frac] (seconds required, T/t) with optional Z/z / ±HH:MM — the same grammar as vld::chrono::datetime() & co.
With a custom error message.
Sourcepub fn iso_time_msg(self, msg: impl Into<String>) -> ZString
pub fn iso_time_msg(self, msg: impl Into<String>) -> ZString
Must be a valid ISO 8601 time (HH:MM[:SS[.frac]]).
With a custom error message.
Sourcepub fn hostname_msg(self, msg: impl Into<String>) -> ZString
pub fn hostname_msg(self, msg: impl Into<String>) -> ZString
Must be a valid hostname.
With a custom error message.
Sourcepub fn cuid2(self) -> ZString
pub fn cuid2(self) -> ZString
Must be a valid CUID2 (2-32 lowercase alphanumerics, starting with a letter).
Sourcepub fn cuid2_msg(self, msg: impl Into<String>) -> ZString
pub fn cuid2_msg(self, msg: impl Into<String>) -> ZString
Must be a valid CUID2 (2-32 lowercase alphanumerics, starting with a letter).
With a custom error message.
Sourcepub fn ulid_msg(self, msg: impl Into<String>) -> ZString
pub fn ulid_msg(self, msg: impl Into<String>) -> ZString
Must be a valid ULID (26-char Crockford Base32).
With a custom error message.
Sourcepub fn nanoid_msg(self, msg: impl Into<String>) -> ZString
pub fn nanoid_msg(self, msg: impl Into<String>) -> ZString
Must be a valid Nano ID (alphanumeric + _ + -).
With a custom error message.
Source§impl ZString
impl ZString
Sourcepub fn type_error(self, msg: impl Into<String>) -> ZString
pub fn type_error(self, msg: impl Into<String>) -> ZString
Set a custom error message for type mismatch (when the input is not a string).
§Example
use vld::prelude::*;
let schema = vld::string().type_error("Must be text!");
let err = schema.parse("42").unwrap_err();
assert!(err.issues[0].message.contains("Must be text!"));Sourcepub fn with_messages<F>(self, f: F) -> ZString
pub fn with_messages<F>(self, f: F) -> ZString
Override error messages in bulk by check key.
The closure receives the check key (e.g. "too_small", "invalid_email")
and should return Some(new_message) to replace, or None to keep the original.
Keys: "too_small", "too_big", "invalid_length", "non_empty",
"invalid_regex", "invalid_starts_with", "invalid_ends_with",
"invalid_contains", and "invalid_<format>" for every format check
("invalid_email", "invalid_url", "invalid_uuid", "invalid_ip",
"invalid_currency", "invalid_phone_e164", …).
The closure is consulted when an issue is built, so it covers checks
added before and after this call; a per-check message
(*_msg(...)) takes precedence over it. A later call replaces it.
§Example
use vld::prelude::*;
let schema = vld::string().min(3).email()
.with_messages(|key| match key {
"too_small" => Some("Too short!".into()),
"invalid_email" => Some("Bad email!".into()),
_ => None,
});Sourcepub fn min_msg(self, len: usize, msg: impl Into<String>) -> ZString
pub fn min_msg(self, len: usize, msg: impl Into<String>) -> ZString
Minimum string length with custom message.
Sourcepub fn max_msg(self, len: usize, msg: impl Into<String>) -> ZString
pub fn max_msg(self, len: usize, msg: impl Into<String>) -> ZString
Maximum string length with custom message.
Sourcepub fn len_msg(self, len: usize, msg: impl Into<String>) -> ZString
pub fn len_msg(self, len: usize, msg: impl Into<String>) -> ZString
Exact string length with custom message.
Sourcepub fn rule(self, rule: impl Rule<str>) -> ZString
pub fn rule(self, rule: impl Rule<str>) -> ZString
Check with a reusable Rule on the string
(keeps the ZString builder; see vld::rules).
Sourcepub fn rule_msg(self, rule: impl Rule<str>, msg: impl Into<String>) -> ZString
pub fn rule_msg(self, rule: impl Rule<str>, msg: impl Into<String>) -> ZString
rule with a custom message.
Sourcepub fn starts_with(self, prefix: impl Into<String>) -> ZString
pub fn starts_with(self, prefix: impl Into<String>) -> ZString
Must start with the given prefix.
Sourcepub fn starts_with_msg(
self,
prefix: impl Into<String>,
msg: impl Into<String>,
) -> ZString
pub fn starts_with_msg( self, prefix: impl Into<String>, msg: impl Into<String>, ) -> ZString
Must start with the given prefix, with custom message.
Sourcepub fn ends_with_msg(
self,
suffix: impl Into<String>,
msg: impl Into<String>,
) -> ZString
pub fn ends_with_msg( self, suffix: impl Into<String>, msg: impl Into<String>, ) -> ZString
Must end with the given suffix, with custom message.
Sourcepub fn contains_msg(
self,
sub: impl Into<String>,
msg: impl Into<String>,
) -> ZString
pub fn contains_msg( self, sub: impl Into<String>, msg: impl Into<String>, ) -> ZString
Must contain the given substring, with custom message.
Sourcepub fn non_empty_msg(self, msg: impl Into<String>) -> ZString
pub fn non_empty_msg(self, msg: impl Into<String>) -> ZString
Must not be empty, with custom message.
Sourcepub fn to_lowercase(self) -> ZString
pub fn to_lowercase(self) -> ZString
Convert to lowercase before validation.
Sourcepub fn to_uppercase(self) -> ZString
pub fn to_uppercase(self) -> ZString
Convert to uppercase before validation.
Trait Implementations§
Source§impl VldSchema for ZString
impl VldSchema for ZString
Source§fn parse_value(&self, value: &Value) -> Result<String, VldError>
fn parse_value(&self, value: &Value) -> Result<String, VldError>
serde_json::Value.Source§fn parse_missing(&self) -> Result<Self::Output, VldError>
fn parse_missing(&self) -> Result<Self::Output, VldError>
Source§fn parse<I>(&self, input: &I) -> Result<Self::Output, VldError>
fn parse<I>(&self, input: &I) -> Result<Self::Output, VldError>
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,
Source§fn is_valid<T>(&self, value: &T) -> boolwhere
T: Serialize,
fn is_valid<T>(&self, value: &T) -> boolwhere
T: Serialize,
Source§fn optional(self) -> ZOptional<Self>
fn optional(self) -> ZOptional<Self>
None.Source§fn with_default(self, value: Self::Output) -> ZDefault<Self>
fn with_default(self, value: Self::Output) -> ZDefault<Self>
Source§fn refine<F>(self, check: F, message: &str) -> ZRefine<Self, F>
fn refine<F>(self, check: F, message: &str) -> ZRefine<Self, F>
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>
Source§fn catch(self, fallback: Self::Output) -> ZCatch<Self>
fn catch(self, fallback: Self::Output) -> ZCatch<Self>
Source§fn pipe<S>(self, next: S) -> ZPipe<Self, S>
fn pipe<S>(self, next: S) -> ZPipe<Self, S>
Source§fn describe(self, description: &str) -> ZDescribe<Self>
fn describe(self, description: &str) -> ZDescribe<Self>
Source§fn super_refine<F>(self, check: F) -> ZSuperRefine<Self, F>
fn super_refine<F>(self, check: F) -> ZSuperRefine<Self, F>
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,
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,
Auto Trait Implementations§
impl !RefUnwindSafe for ZString
impl !UnwindSafe for ZString
impl Forget for ZString
impl Freeze for ZString
impl Send for ZString
impl Sync for ZString
impl Unpin for ZString
impl UnsafeUnpin for ZString
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
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> ⓘ
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> ⓘ
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