logo
unwrap!() { /* proc-macro */ }
Expand description

Unwraps an Option or Result, panicking if it is None or Err.

This macro is roughly equivalent to {Option,Result}::{expect,unwrap} but invocation looks a bit different because this is a macro and not a method. The other difference is that unwrap!-ing a Result<T, E> value requires that the error type E implements the Format trait

The following snippet shows the differences between core’s unwrap method and defmt’s unwrap macro:

use defmt::unwrap;

let x = option.unwrap();
let x = unwrap!(option);

let x = result.unwrap();
let x = unwrap!(result);

let x = value.expect("text");
let x = unwrap!(value, "text");

let x = value.expect(&format!("text {:?}", arg));
let x = unwrap!(value, "text {:?}", arg); // arg must be implement `Format`

If used, the format string must follow the defmt syntax (documented in the manual)