Struct Valid

Source
pub struct Valid<T: Validator>(/* private fields */);
Expand description

Valid is a wrapper for any type that implements Validator it permit to ensure at compile time that the inner type as been verified.

With the serde feature, Valid can be serialized and deserialized with validity check.

use type_rules::prelude::*;

#[derive(Validator)]
struct NewUser {
    #[rule(MinMaxLength(3, 50))]
    username: String,
    #[rule(MinMaxLength(8, 100))]
    password: String,
}

fn do_something(user: Valid<NewUser>) {
    // No need to check if user is valid
}

let new_user = NewUser {
    username: "example".to_string(),
    password: "OPw$5%hJJ".to_string(),
};
do_something(Valid::new(new_user).unwrap());

Implementations§

Source§

impl<T: Validator> Valid<T>

Source

pub fn new(val: T) -> Result<Self, String>

Source

pub fn into_inner(self) -> T

Trait Implementations§

Source§

impl<T: Debug + Validator> Debug for Valid<T>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<T: Validator> Deref for Valid<T>

Source§

type Target = T

The resulting type after dereferencing.
Source§

fn deref(&self) -> &Self::Target

Dereferences the value.
Source§

impl<'a, T: Validator + Deserialize<'a>> Deserialize<'a> for Valid<T>

Available on crate feature serde only.
Source§

fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where D: Deserializer<'a>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl<T: Validator + Display> Display for Valid<T>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<T: Validator + Serialize> Serialize for Valid<T>

Available on crate feature serde only.
Source§

fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where S: Serializer,

Serialize this value into the given Serde serializer. Read more

Auto Trait Implementations§

§

impl<T> Freeze for Valid<T>
where T: Freeze,

§

impl<T> RefUnwindSafe for Valid<T>
where T: RefUnwindSafe,

§

impl<T> Send for Valid<T>
where T: Send,

§

impl<T> Sync for Valid<T>
where T: Sync,

§

impl<T> Unpin for Valid<T>
where T: Unpin,

§

impl<T> UnwindSafe for Valid<T>
where T: UnwindSafe,

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<P, T> Receiver for P
where P: Deref<Target = T> + ?Sized, T: ?Sized,

Source§

type Target = T

🔬This is a nightly-only experimental API. (arbitrary_self_types)
The target type on which the method may be called.
Source§

impl<T> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,