Enum frunk::validated::Validated[][src]

pub enum Validated<T, E> where
    T: HList
{ Ok(T), Err(Vec<E>), }

A Validated is either an Ok holding an HList or an Err, holding a vector of collected errors.

Variants

Methods

impl<T, E> Validated<T, E> where
    T: HList
[src]

Returns true if this validation is Ok, false otherwise

Examples

use frunk::Validated;
use frunk::prelude::*;

let r1: Result<String, String> = Result::Ok(String::from("hello"));
let v = r1.into_validated();
assert!(v.is_ok());Run

Returns true if this validation is Err, false otherwise

Examples

use frunk::prelude::*;

let r1: Result<String, i32> = Result::Err(32);
let v = r1.into_validated();
assert!(v.is_err());Run

Turns this Validated into a Result.

If this Validated is Ok, it will become a Result::Ok, holding an HList of all the accumulated results. Otherwise, it will become a Result::Err with a list of all accumulated errors.

Examples

#[macro_use] extern crate frunk;

use frunk::Validated;
use frunk::prelude::*;

#[derive(PartialEq, Eq, Debug)]
struct Person {
    age: i32,
    name: String,
}

fn get_name() -> Result<String, String> {
    Result::Ok("James".to_owned())
}

fn get_age() -> Result<i32, String> {
    Result::Ok(32)
}

let v = get_name().into_validated() + get_age();
let person = v.into_result()
               .map(|hlist_pat!(name, age)| {
                    Person {
                        name: name,
                        age: age,
                    }
                });

 assert_eq!(person.unwrap(),
            Person {
                name: "James".to_owned(),
                age: 32,
            });Run

Trait Implementations

impl<T: PartialEq, E: PartialEq> PartialEq for Validated<T, E> where
    T: HList
[src]

This method tests for self and other values to be equal, and is used by ==. Read more

This method tests for !=.

impl<T: Debug, E: Debug> Debug for Validated<T, E> where
    T: HList
[src]

Formats the value using the given formatter. Read more

impl<T: Eq, E: Eq> Eq for Validated<T, E> where
    T: HList
[src]

impl<T: Clone, E: Clone> Clone for Validated<T, E> where
    T: HList
[src]

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

impl<T: PartialOrd, E: PartialOrd> PartialOrd for Validated<T, E> where
    T: HList
[src]

This method returns an ordering between self and other values if one exists. Read more

This method tests less than (for self and other) and is used by the < operator. Read more

This method tests less than or equal to (for self and other) and is used by the <= operator. Read more

This method tests greater than (for self and other) and is used by the > operator. Read more

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more

impl<T: Ord, E: Ord> Ord for Validated<T, E> where
    T: HList
[src]

This method returns an Ordering between self and other. Read more

Compares and returns the maximum of two values. Read more

Compares and returns the minimum of two values. Read more

impl<T: Hash, E: Hash> Hash for Validated<T, E> where
    T: HList
[src]

Feeds this value into the given [Hasher]. Read more

Feeds a slice of this type into the given [Hasher]. Read more

impl<T, E, T2> Add<Result<T2, E>> for Validated<T, E> where
    T: HList + Add<HCons<T2, HNil>>,
    <T as Add<HCons<T2, HNil>>>::Output: HList
[src]

Implements Add for the current Validated with a Result, returning a new Validated.

Examples

use frunk::Validated;
use frunk::prelude::*;

let r1: Result<String, String> = Result::Ok(String::from("hello"));
let r2: Result<i32, String> = Result::Ok(1);
let v = r1.into_validated() + r2;
assert_eq!(v, Validated::Ok(hlist!(String::from("hello"), 1)))Run

The resulting type after applying the + operator.

Performs the + operation.

impl<T, E, T2> Add<Validated<T2, E>> for Validated<T, E> where
    T: HList + Add<T2>,
    T2: HList,
    <T as Add<T2>>::Output: HList
[src]

Implements Add for the current Validated with another Validated, returning a new Validated.

Examples

use frunk::Validated;
use frunk::prelude::*;

let r1: Result<String, String> = Result::Ok(String::from("hello"));
let r2: Result<i32, String> = Result::Ok(1);
let v1 = r1.into_validated();
let v2 = r2.into_validated();
let v3 = v1 + v2;
assert_eq!(v3, Validated::Ok(hlist!(String::from("hello"), 1)))Run

The resulting type after applying the + operator.

Performs the + operation.

Auto Trait Implementations

impl<T, E> Send for Validated<T, E> where
    E: Send,
    T: Send

impl<T, E> Sync for Validated<T, E> where
    E: Sync,
    T: Sync