Как я могу перечислить все реализованные черты для данного типа во время компиляции в макросе? - PullRequest
0 голосов
/ 19 сентября 2018

Я ищу способ найти все черты, реализованные для данного типа, во время компиляции, для использования в макросе.

Мой пример использования: я хотел бы написать макрос, который создаетnewtype структурирует и реализует все черты внутреннего типа или, по крайней мере, их подмножество.

1 Ответ

0 голосов
/ 19 сентября 2018

Вы не можете.

Драйвер Rustc :

[…] основные этапы компилятора:

  1. Ввод анализа: начальный синтаксический анализ ящика
  2. Настройка и расширение: разрешение #[cfg] атрибутов, разрешение имен и расширение макросов
  3. Выполнение аналитических проходов: Выполнить разрешение черт, проверку типов , проверку области и другие разные анализы на ящике
  4. Перевести на LLVM: преобразовать в форму LLVM IR в памяти и превратить ее в исполняемые / объектные файлы

(выделено моё)

Макросы раскрываются до разрешения черты, поэтому во время раскрытия макроса информация о типе неизвестна.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...