Repolode
dtolnay

dtolnay/proc-macro-workshop

Практический воркшоп из пяти проектов на Rust procedural macros: в каждом есть заготовка и набор тестов trybuild, которые нужно реализовать.

Звёзды
4,873
Форки
1,216
Открытые issues
3
Последний коммит
3 месяца назад

Что это?

Этот репозиторий — обучающий воркшоп по написанию Rust procedural macros — функций на Rust, которые генерируют код Rust во время компиляции. В нём пять проектов: derive-макрос для паттерна Builder, настраиваемый Debug derive, принимающий строки формата для каждого поля, функциональный макрос seq!, создающий индексированные копии кода, атрибутный макрос #[sorted], который сообщает об отсортированных не по порядку вариантах enum с помощью ошибок компиляции, и атрибут #[bitfield], который упаковывает поля структуры в массив байтов и генерирует геттеры и сеттеры.

Каждый проект поставляется в виде заготовки с набором тестов в каталоге tests. Тесты запускаются с помощью trybuild: он проверяет и успешные раскрытия макросов, и точные сообщения компилятора для кода, который не должен компилироваться. Воркшоп предлагает последовательность обучения: начать с derive(Builder), а затем выбрать один из остальных проектов в зависимости от того, хотите ли вы сосредоточиться на ограничениях трейтов, разборе пользовательского ввода или диагностике.

В репозитории также описаны способы отладки макросов, например использование cargo expand и вывод сгенерированных потоков токенов в stderr.

Ключевые возможности

  • 01Пять проектов разного уровня сложности, посвящённых derive-, функциональным и атрибутным макросам.
  • 02Наборы тестов на основе trybuild, проверяющие точный вывод ошибок компилятора.
  • 03Заготовки кода и пошаговое включение тестов для каждого проекта.
  • 04Рекомендации по отладке с помощью cargo expand и вывода потоков токенов.
  • 05Рекомендуемый порядок обучения с учётом ваших интересов.

Сценарии использования

  • Изучение Rust procedural macros с нуля на практических упражнениях с подсказками.
  • Практика работы с ограничениями трейтов в обобщённых derive-макросах.
  • Подготовка к написанию собственной диагностики ошибок компиляции для библиотеки на Rust.
  • Изучение того, как с помощью макроса можно сгенерировать API структуры с битовой упаковкой.

Быстрый старт

  1. 1

    Клонируйте репозиторий и перейдите в каталог проекта, например builder

  2. 2

    Запустите набор тестов для этого проекта

    cargo test

Темы

#rust#procedural-macros#metaprogramming#learning#workshop#trybuild#code-generation

Частые вопросы

Что такое proc-macro-workshop?
Практический воркшоп из пяти проектов на Rust procedural macros: в каждом есть заготовка и набор тестов trybuild, которые нужно реализовать. Этот репозиторий — обучающий воркшоп по написанию Rust procedural macros — функций на Rust, которые генерируют код Rust во время компиляции. В нём пять проектов: derive-макрос для паттерна Builder, настраиваемый Debug derive, принимающий строки формата для каждого поля, функциональный макрос seq!, создающий индексированные копии кода, атрибутный макрос #[sorted], который сообщает об отсортированных не по порядку вариантах enum с помощью ошибок компиляции, и атрибут #[bitfield], который упаковывает поля структуры в массив байтов и генерирует геттеры и сеттеры.
proc-macro-workshop можно использовать бесплатно? Какая у него лицензия?
proc-macro-workshop распространяется с открытым исходным кодом под лицензией Apache-2.0. Перед использованием в коммерческих продуктах проверьте условия лицензии.
proc-macro-workshop всё ещё поддерживается?
Обновлялся за последние 6 месяцев. Последний коммит в proc-macro-workshop — 6 авг. 2026 г..
Для чего можно использовать proc-macro-workshop?
Изучение Rust procedural macros с нуля на практических упражнениях с подсказками. Практика работы с ограничениями трейтов в обобщённых derive-макросах. Подготовка к написанию собственной диагностики ошибок компиляции для библиотеки на Rust. Изучение того, как с помощью макроса можно сгенерировать API структуры с битовой упаковкой.
Как установить proc-macro-workshop?
Клонируйте репозиторий и перейдите в каталог проекта, например builder Запустите набор тестов для этого проекта: cargo test
Где скачать proc-macro-workshop?
Исходный код и инструкции по установке — на GitHub: https://github.com/dtolnay/proc-macro-workshop

Описание создано ИИ на основе README проекта. Статистика GitHub обновляется ежедневно.

Похожие проекты

Небольшие упражнения по Rust, которые помогают научиться читать и писать код на Rust и рассчитаны на прохождение вместе с официальной книгой по Rust.

64,6 тыс.+72 за неделю11,3 тыс.RustMITАктивно поддерживаетсяОбновлён 12 дней назад