4个版本
0.1.3 | 2020年6月8日 |
---|---|
0.1.2 | 2020年4月23日 |
0.1.1 | 2020年4月17日 |
0.1.0 | 2020年4月16日 |
#1705 in 过程宏
9KB
183 行
不可反驳
过程宏,将可反驳的let表达式转换为不可反驳的。
示例
panic
#![feature(proc_macro_hygiene)]
use irrefutable::irrefutable;
#[irrefutable(panic("The cause."))]
let Some((a, b)) = Some(("a", "b"));
展开为
let (a, b) = if let Some((a, b)) = Some(("a", "b")) {
(a, b)
} else {
panic!("The cause.");
};
return
#![feature(proc_macro_hygiene)]
use irrefutable::irrefutable;
#[irrefutable(return)]
let Some((a, b)) = Some(("a", "b"));
展开为
let (a, b) = if let Some((a, b)) = Some(("a", "b")) {
(a, b)
} else {
return;
};
unreachable
#![feature(proc_macro_hygiene)]
use irrefutable::irrefutable;
#[irrefutable(unreachable)]
let Some((a, b)) = Some(("a", "b"));
展开为
let (a, b) = if let Some((a, b)) = Some(("a", "b")) {
(a, b)
} else {
unreachable!();
};
依赖
~1.5MB
~35K SLoC