【发布时间】:2014-07-23 08:15:21
【问题描述】:
我希望能够做到以下几点:
macro_rules! impl_a_method(
($obj:ident, $body:block) => (
fn a_method(foo: Foo, bar: Bar, baz: Baz) -> $obj $body
)
)
// Implementation would look like:
impl_a_method!(MyType, {
MyType {
foo: foo.blah(),
bar: bar.bloo(),
baz: baz.floozy(),
}
})
我的真实示例中的方法具有更大的签名,我必须以独特的方式为 30 多种不同类型实现这些方法。
我已经尝试过类似于上述宏的方法,但是在 rustc 认为 foo、bar 和 baz 扩展站点上未解析的名称时遇到了错误(尽管我确信宏声明在词法上位于前面使用)。
有可能做这样的事情吗?
如果没有,您能否推荐一种可以实现类似效果的方法?
【问题讨论】:
标签: methods macros rust method-signature