А как так получается, что parse_macro_input требует, чтобы input был

того же типа, что и тип, который возвращает функция, из которой я его вызываю?

Если заменить на fn test(input: TokenStream) -> TokenStream то почему-то все компилируется:

fn test(input: TokenStream) {
let input = parse_macro_input!(input as LitStr);
}

238 | let input = parse_macro_input!(input as LitStr);
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected (), found struct proc_macro::TokenStream

3 ответов

14 просмотров

Это из библиотеки syn?

Valentin- Автор вопроса

В итоге я заюзал крейт litrs, для простой интроспекции литералов это то, что доктор прописал. Немного странно, конечно, что в дефолтный API TokenStream не завезли столь базовые вещи

Там есть нормальное что-то

Похожие вопросы

Обсуждают сегодня

Карта сайта