Rust 如何提供可选泛型作为宏规则参数?
我想使用Rust 如何提供可选泛型作为宏规则参数?,rust,macros,rust-macros,Rust,Macros,Rust Macros,我想使用macro\u规则为trait创建一个实现。类型应作为宏参数提供。但是,其中一些类型可能包含生命周期,因此我需要它们。我还有一个宏内部的泛型类型。结果应该是这样的 impl<T> Foo<T> for MyType { .. } // Or with lifetime: impl<'a, 'b, T> Foo<T> for LifetimeType<'a, 'b> { .. } impl Foo for MyType{..}
macro\u规则
为trait创建一个实现。类型应作为宏参数提供。但是,其中一些类型可能包含生命周期,因此我需要它们。我还有一个宏内部的泛型类型。结果应该是这样的
impl<T> Foo<T> for MyType { .. }
// Or with lifetime:
impl<'a, 'b, T> Foo<T> for LifetimeType<'a, 'b> { .. }
impl Foo for MyType{..}
//或使用寿命:
生命周期类型{..}的impl Foo
如何构造宏以及如何调用宏?您可以使用
生存期
说明符匹配宏参数中的生存期:
trait Foo{}
macro_rules!impl_foo {
($($l:lifetime),*; $t:tt) => { impl<$($l),*> Foo for $t<$($l),*> {} };
($t:ty) => { impl Foo for $t {} };
}
请注意,我能找到的唯一谈论捕获的生存期说明符的地方是。尤其明显的是,尽管它在2016年被合并,但它在
impl_foo!(A);
impl_foo!('a, 'b; B);