Macro rocket::form::validate::msg

source ·
pub macro msg {
    ($e:expr) => { ... },
    ($($arg:tt)*) => { ... },
}
Expand description

A helper macro for custom validation error messages.

The macro works similar to std::format!. It generates a form Validation error message. While useful in other contexts, it is designed to be chained to validation results in derived FromForm #[field] attributes via .or_else() and .and_then().

§Example

use rocket::form::FromForm;

#[derive(FromForm)]
struct Person<'r> {
    #[field(validate = len(3..).or_else(msg!("that's a short name...")))]
    name: &'r str,
    #[field(validate = contains('f').and_then(msg!("please, no `f`!")))]
    non_f_name: &'r str,
}

Note: this macro never needs to be imported when used with a FromForm derive; all items in form::validate are automatically in scope in FromForm derive attributes.

See the top-level docs for more examples.

§Syntax

The macro has the following “signatures”:

§Variant 1

fn msg<'a, T, P, E: Expr>(expr: E) -> impl Fn(P) -> form::Result<'a, T>

Takes any expression and returns a function that takes any argument type and evaluates to a form::Result with an Ok of any type. The Result is guaranteed to be an Err of kind Validation with expr as the message.

§Variant 2

fn msg<'a, T, P, A: Args>(fmt: &str, args: A) -> impl Fn(P) -> form::Result<'a, T>

Invokes the first variant as msg!(format!(fmt, args)).