macro_rules! assert_ready_err {
    ($cond:expr,) => { ... };
    ($cond:expr) => { ... };
    ($cond:expr, $($arg:tt)+) => { ... };
}
Expand description

Asserts that expression returns Poll::Ready(Err(E)) variant.

This macro is available for Rust 1.36+.

Uses

Assertions are always checked in both debug and release builds, and cannot be disabled. See debug_assert_ready_err! for assertions that are not enabled in release builds by default.

Custom messages

This macro has a second form, where a custom panic message can be provided with or without arguments for formatting. See std::fmt for syntax for this form.

Examples

let res: Poll<Result<i32, ()>> = Poll::Ready(Err(()));

assert_ready_err!(res);

Value of E type from the Poll::Ready(Err(E)) will also be returned from this macro call:

let res: Poll<Result<i32, String>> = Poll::Ready(Err("Something went wrong".to_string()));

let message = assert_ready_err!(res);
assert_eq!("Something went wrong", message);

Both Poll::Ready(Ok(..)) and Poll::Pending variants will cause panic:

let res: Poll<Result<i32, ()>> = Poll::Ready(Ok(42));

assert_ready_err!(res);  // Will panic
let res: Poll<Result<i32, ()>> = Poll::Pending;

assert_ready_err!(res);  // Will panic