pub trait ProtoValidation {
type Target: ?Sized;
type Stored: Borrow<Self::Target>;
type Validator: Validator<Self, Target = Self::Target> + Clone + Default;
type ValidatorBuilder: ValidatorBuilderFor<Self, Validator = Self::Validator>;
// Provided methods
fn validator_builder() -> Self::ValidatorBuilder { ... }
fn validator_from_closure<F, FinalBuilder>(config_fn: F) -> Self::Validator
where F: FnOnce(Self::ValidatorBuilder) -> FinalBuilder,
FinalBuilder: ValidatorBuilderFor<Self, Validator = Self::Validator> { ... }
}Expand description
Trait implemented by targets of proto validators.
Implemented automatically with the proto_message, proto_oneof and proto_enum macros.
The actual target of the validation is in a dedicated associated Type
because this trait is sometimes implemented by wrappers/proxies like Sint32.
Required Associated Types§
Sourcetype Stored: Borrow<Self::Target>
type Stored: Borrow<Self::Target>
The Stored type is needed for compatibility with the RepeatedValidator
and MapValidator. It is the same as the Target in most cases, but
not for String specifically, because the Target is str, but Stored is String.
Sourcetype Validator: Validator<Self, Target = Self::Target> + Clone + Default
type Validator: Validator<Self, Target = Self::Target> + Clone + Default
Represent the default validator for this type.
Sourcetype ValidatorBuilder: ValidatorBuilderFor<Self, Validator = Self::Validator>
type ValidatorBuilder: ValidatorBuilderFor<Self, Validator = Self::Validator>
Represent the builder for the default validator of this type, to enable the utility methods
validator_builder and
validator_from_closure.
Provided Methods§
Sourcefn validator_builder() -> Self::ValidatorBuilder
fn validator_builder() -> Self::ValidatorBuilder
Returns the default validator builder for this type.
§Example
use protify::*;
assert_eq!(StringValidator::builder(), String::validator_builder());Sourcefn validator_from_closure<F, FinalBuilder>(config_fn: F) -> Self::Validatorwhere
F: FnOnce(Self::ValidatorBuilder) -> FinalBuilder,
FinalBuilder: ValidatorBuilderFor<Self, Validator = Self::Validator>,
fn validator_from_closure<F, FinalBuilder>(config_fn: F) -> Self::Validatorwhere
F: FnOnce(Self::ValidatorBuilder) -> FinalBuilder,
FinalBuilder: ValidatorBuilderFor<Self, Validator = Self::Validator>,
Builds the default validator for this type from a closure which receives the validator builder as the argument.
§Example
use protify::*;
let validator = String::validator_from_closure(|v| v.min_len(3));
let validator2 = StringValidator::builder().min_len(3).build();
assert_eq!(validator, validator2);Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.
Implementations on Foreign Types§
impl ProtoValidation for CalendarPeriod
common-types only.impl ProtoValidation for DayOfWeek
common-types only.impl ProtoValidation for Month
common-types only.impl ProtoValidation for Code
Source§impl ProtoValidation for bool
impl ProtoValidation for bool
Source§impl ProtoValidation for f32
impl ProtoValidation for f32
type Validator = FloatValidator<f32>
type ValidatorBuilder = FloatValidatorBuilder<f32>
Source§impl ProtoValidation for f64
impl ProtoValidation for f64
type Validator = FloatValidator<f64>
type ValidatorBuilder = FloatValidatorBuilder<f64>
Source§impl ProtoValidation for i32
impl ProtoValidation for i32
type Validator = IntValidator<i32>
type ValidatorBuilder = IntValidatorBuilder<i32>
Source§impl ProtoValidation for i64
impl ProtoValidation for i64
type Validator = IntValidator<i64>
type ValidatorBuilder = IntValidatorBuilder<i64>
Source§impl ProtoValidation for u32
impl ProtoValidation for u32
type Validator = IntValidator<u32>
type ValidatorBuilder = IntValidatorBuilder<u32>
Source§impl ProtoValidation for u64
impl ProtoValidation for u64
type Validator = IntValidator<u64>
type ValidatorBuilder = IntValidatorBuilder<u64>
impl ProtoValidation for ()
Source§impl ProtoValidation for String
impl ProtoValidation for String
impl ProtoValidation for Color
common-types only.impl ProtoValidation for Date
common-types only.impl ProtoValidation for DateTime
common-types only.impl ProtoValidation for Decimal
common-types only.impl ProtoValidation for Expr
common-types only.impl ProtoValidation for Fraction
common-types only.impl ProtoValidation for Interval
common-types only.impl ProtoValidation for LatLng
common-types only.impl ProtoValidation for LocalizedText
common-types only.impl ProtoValidation for Money
common-types only.impl ProtoValidation for PhoneNumber
common-types only.impl ProtoValidation for PostalAddress
common-types only.impl ProtoValidation for Quaternion
common-types only.impl ProtoValidation for TimeOfDay
common-types only.impl ProtoValidation for TimeZone
common-types only.impl ProtoValidation for Empty
Source§impl ProtoValidation for Any
impl ProtoValidation for Any
Source§impl ProtoValidation for Duration
impl ProtoValidation for Duration
Source§impl ProtoValidation for FieldMask
impl ProtoValidation for FieldMask
Source§impl ProtoValidation for Timestamp
impl ProtoValidation for Timestamp
impl ProtoValidation for FieldViolation
rpc-types only.impl ProtoValidation for Link
rpc-types only.impl ProtoValidation for Violation
rpc-types only.impl ProtoValidation for Violation
rpc-types only.impl ProtoValidation for BadRequest
rpc-types only.impl ProtoValidation for DebugInfo
rpc-types only.impl ProtoValidation for ErrorInfo
rpc-types only.impl ProtoValidation for Help
rpc-types only.impl ProtoValidation for HttpHeader
rpc-types only.impl ProtoValidation for HttpRequest
rpc-types only.impl ProtoValidation for HttpResponse
rpc-types only.impl ProtoValidation for LocalizedMessage
rpc-types only.impl ProtoValidation for PreconditionFailure
rpc-types only.impl ProtoValidation for QuotaFailure
rpc-types only.impl ProtoValidation for RequestInfo
rpc-types only.impl ProtoValidation for ResourceInfo
rpc-types only.impl ProtoValidation for RetryInfo
rpc-types only.