macro_rules! enum_unwrap {
    ($ex: expr, $Enum: path $(,)*) => { ... };
    ($ex: expr, $Enum: path :( $Cons: path :(_) ) $(,)*) => { ... };
    ($ex: expr, $Enum: path :( $Cons: path :( $Cons2: path :(_) ) ) $(,)*) => { ... };
    ($ex: expr, $Enum: path {$($fields: ident $(,)*)*}) => { ... };
}
Expand description

Supports up to double unwrap : is a dummy token to bypass restrictions

use erg_common::Str;
let i: i32 = enum_unwrap!(Some(1), Some);
let s: &str = enum_unwrap!(Some(Str::ever("a")), Some:(Str::Static:(_)));