2014-10-27 49 views
2

在macro_rules!你可以声明不同类型的东西在冒号后解析(比如$ x:ident用于标识符,或者$ y:ty用于类型),但是我很困惑我将如何声明我想要捕获一个生命周期,像'一个或'静态。这可能吗?在生锈macro_rules捕获生存期

回答

1

您可以将它们捕获为$ exprs。

+0

我试过这样做,它似乎并没有为我工作。以下是围栏:[http://is.gd/dNaiiS](http://is.gd/dNaiiS)。我做错了吗? – Mystor 2014-11-07 07:20:42

+0

它需要是一个已经定义的工作时间。在这个例子中,在一生中提供一个特定的名字没有真正的目的,因为它只是被用作一个通用参数。如果生命周期已经定义(例如作为循环的标签),那么$ expr可以正常工作。但是我可以想象,如果你在一生中有一个参数化的特征或结构,它会很有用,但实际上我不确定是否有办法做到这一点(我从来不需要这样做)。 – 2014-11-07 21:19:18

+1

下面是一个很有用的例子:http://is.gd/9Qj1H3。我想用这个,因为我有一个宏,它会生成一个通用的函数,这个函数在一生中是一样的,因为它接受了一个参数化的参数。在我的情况下,函数的主体通常希望返回一个任意值,但有时它会返回一个从参数中提取的值,它只能在给定的生命周期中生存。 – Mystor 2014-11-09 22:40:05