我试图?在宏中使用,匹配任意关键字:
#![feature(macro_at_most_once_rep)]
macro_rules! foo {
(
pub fn $name:ident (
& $m : $( mut )? self
)
) => (
pub fn $name (
& $m self
) {}
)
}
struct Foo;
impl Foo {
foo!( pub fn bar(&mut self) );
foo!( pub fn baz(&self) );
}
fn main() {}
Run Code Online (Sandbox Code Playgroud)
我尝试了不同的语法,但都失败了.这该怎么做?
一种技巧是插入带有虚拟标记的重复。
#![feature(macro_at_most_once_rep)]
macro_rules! foo {
(
pub fn $name:ident (
& $( $(@$m:tt)* mut )? self
)
) => (
pub fn $name (
& $( $(@$m)* mut )? self
) {}
)
}
struct Foo;
impl Foo {
foo!( pub fn bar(&mut self) );
foo!( pub fn baz(&self) );
}
fn main() {
(&mut Foo).bar();
(&mut Foo).baz();
// (&Foo).bar(); //~ERROR cannot borrow
(&Foo).baz();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
161 次 |
| 最近记录: |