3个版本
0.1.2 | 2019年12月4日 |
---|---|
0.1.1 | 2019年12月4日 |
0.1.0 | 2019年12月4日 |
#2102 in 过程宏
7KB
99 行
guard_let
为Rust编写的guard let
用法
use guard_let::guard_let;
enum Enum {
A(String),
B(usize),
C(Struct),
}
struct Struct {
foo: String,
}
fn eat_string(_: String) {}
#[guard_let]
fn simple_ident() {
let v = Enum::A(String::from(""));
guard_let!(v as Enum::A(s), {
// Type of v is Enum at here.
println!("v is not A: {:?}", v);
return;
});
// Type of s is String
eat_string(s)
}
#[guard_let]
fn pattern() {
let v = Enum::A(String::from(""));
guard_let!(v as Enum::C(Struct { foo }), {
// Type of v is Enum at here.
println!("v is not C: {:?}", v);
return;
});
// Type of s is String
eat_string(foo)
}
许可
MIT
依赖
~1.5MB
~36K SLoC