logo
pub fn try_with<'v, V, F, T, E>(value: V, f: F) -> Result<'v, ()> where
    F: FnOnce(V) -> Result<T, E>,
    E: Display
Expand description

Try With validator: succeeds when an arbitrary function or closure does.

Along with with, this is the most generic validator. It succeeds excactly when f returns Ok and fails otherwise.

On failure, returns a validation error with the message in the Err variant converted into a string.

Example

Assuming Token has a from_str method:

use std::str::FromStr;

#[derive(FromForm)]
#[field(validate = try_with(|s| Token::from_str(s)))]
struct Token<'r>(&'r str);

#[derive(FromForm)]
#[field(validate = try_with(|s| s.parse::<Token>()))]
struct Token2<'r>(&'r str);