tgoop.com/random_rust_dev/226
Last Update:
Вот еще один Rust Tip
Делайте derive макросы для своих трейтов.
Если из структуры типа примерно понятно, как реализовать трейт - этот трейт отличный кандидат для derive
.
Это значительно уменьшит количество бойлерплейта и уменьшит вероятность глупых ошибок, что мы можем допустить при ручной реализации трейта.
Процедурные макросы могут показаться довольно сложными сначала. Надо парсить и генерировать код.
На самом деле все просто, так как у нас есть крейты syn
и quote
.
С помощью syn
можно без труда распарсить код на Rust, который передается в процедурный макрос. А с помощью иных крейтов можно и содержимое аттрибутов распарсить как по волшебству.
А quote
поможет сгенерировать код реализации трейта из шаблона с подстановками.
Не забудьте при генерации Rust кода устанавливать корректные Span
-ы. Это поможет пользователю макроса найти причину ошибки.
Так же существует множество надстроек, что делают процедурные макросы вовсе тривиальными. Хотя каждая обладает своими ограничениями.
BY Random Rust Dev
Share with your friend now:
tgoop.com/random_rust_dev/226