The enumx crate has been upgraded to version 0.3.1 to support "type as pattern matching" feature for anonymous enums.
use enumx::*;
fn foo() -> Enum!( String, &'static str, Option<i32> );
#[enumx]
fn bar() {
#[ty_pat] match foo() {
Option::<i32>( i ) => (),
String( s ) => (),
TyPat::<&'static str>( s ) => (),
}
}
The cex crate has been upgraded to version 0.4.0 to support this feature too.
And more macros Result!()
, ret!()
, and throw!()
added for emulating checked exception:
struct SomeError;
#[cex] fn foo() -> Result!( i32 throws String, &'static str, SomeError ) {/**/}
#[cex] fn bar() {
let _f = #[cex] || -> Result!( i32 throws String ) {/**/}
}
#[cex] fn baz() {
#[cex] let v: Result!( i32 throws String ) = try {/**/};
}