2014-10-27 15 views
2

В macro_rules! вы можете указать различные типы вещей для разбора после двоеточия (например, $ x: ident для идентификаторов или $ y: ty для типов), однако я смущен тем, как объявить, что хочу захватить всю жизнь, как «a» или «статический». Возможно ли это сейчас?Захват жизни в ржавчине macro_rules

ответ

1

Вы можете записать их как $ exprs.

+0

Я пробовал это сделать, и это, похоже, не работает для меня. Вот манеж: [http://is.gd/dNaiiS](http://is.gd/dNaiiS). Я что-то делаю с этим? – Mystor

+0

Это должно быть уже определенное время жизни для работы. Нет никакой реальной цели предоставить конкретное имя для жизни в этом экземпляре, поскольку оно просто используется как общий параметр. Если уже определено время жизни (как метка для цикла), то $ expr отлично работает. Я могу представить, что это полезно, если у вас есть свойство или структура, параметризованные на протяжении всей жизни, и, действительно, я не уверен, есть ли способ сделать это (мне никогда не нужно было это делать). –

+1

Вот пример, где это было бы полезно: http://is.gd/9Qj1H3. Я хотел использовать это, так как у меня был макрос, который бы генерировал функцию, которая была общей в течение жизни <'a>, поскольку она приняла аргумент, параметризованный этим временем жизни. В моем случае тело функции обычно хотело вернуть произвольное значение, но иногда оно хотело бы вернуть значение, извлеченное из аргумента, которое будет жить только для данного времени жизни. – Mystor