validate_all_async

Function validate_all_async 

Source
pub async fn validate_all_async<T, E, Fut, I>(
    validations: I,
) -> Validation<E, Vec<T>>
where I: IntoIterator<Item = Fut>, Fut: Future<Output = Validation<E, T>>,
Expand description

Runs multiple async validations sequentially and collects all errors.

Unlike Result which short-circuits on the first error, this function executes all validations and accumulates any errors that occur.

§Note

Validations are executed sequentially (not in parallel) to maintain runtime neutrality. For parallel execution, use a runtime-specific combinator like futures::join_all or tokio::join!.

§Example

use error_rail::prelude_async::*;

async fn validate_user(user: &User) -> Validation<ValidationError, ()> {
    validate_all_async([
        validate_email(&user.email),
        validate_username(&user.username),
        check_user_exists(&user.id),
    ])
    .await
    .map(|_| ())
}