4
このように適用できるマクロcallme
を定義したいと思います。文法的な事例を扱うマクロを定義することはできますか?
fn main() {
let a=4;
let b=5;
callme!(
a (b) => { a+b } ;
a (b) => { a*b } ;
a (b) ~ C
);
}
私はcallme
のために働いてマクロ定義を取得する方法がわかりません。現在、私は次のようなものを試しています。
macro_rules! callme {
(
$($A: ident ($B: ident) => {$E: expr}) ; *
) => (
$(
println!("{:?} {:?} {:?}", $A, $B, $E);
) *
);
(
$($A: ident ($B: ident) ~ $Q: ident) ; *
) => (
$(
println!("We got {:?} . {:?} . {:?}", $A, $B, $Q);
) *
);
}
私は一度に両方の構文を使うことができないので、これはうまくいきません。
ありがとうございます。これは動作します!あなたの答えは、私に錆のマクロのトークンストリームを理解させる助けになりました。残念ながら、あなたの答えはまだ+1できません。 – Leonard7E