2つの式と識別子に一致するマクロを作成しています。私はそれが必要でない場合、識別子を無視することができるようにしたいと思いますが、私は_
を使用すると、コンパイラは文句を言うようです。マクロでidentの代わりにアンダースコアを一致させる
マイマクロ:私が何をしたいのですがどのような
macro_rules! if_some {
($x:expr, $id:ident, $expr:expr) => {
match $x {
None => None,
Some($id) => Some($expr),
}
};
}
:
if_some!(obtain_an_option(), x, do_something_with(x))
と
if_some!(obtain_an_option(), _, do_something())
2回目の呼び出しが失敗しました。
私は識別子を受け取っていない2番目のマクロif_some_!
を定義していました(2番目のパターンも使用できませんでした)。私はここで、識別子またはちょうど_
を受け入れる」と言うする方法はありだと確信しています。
は、たぶん、すでにこのためのマクロ/機能(のようなOption::map
が、今私はそれについて考える)...それにもかかわらず、それがいいと思いますがあります今