Pull to refresh

Comments 6

.map(|meta| EndpointAttrs::from_nested_meta(&&meta))

А тут точно двойной референс нужен?

Да, это явно случайно вышло, странно, что clippy не выругался в этом случае.

многие вполне обоснованно побаиваются пользоваться этим инструментом, в основном из-за того, что разбор синтаксического дерева и атрибутов макроса зачастую превращается в «закат солнца вручную», так как задачу приходится решать на очень низком уровне.

Нужен автоматизированный мощный тулс для разборки макросов, иначе есть риск получить такой же ПЕСЕЦ размером с белого медведя как и в C++.

Ну так, собственно, инфраструктура развивается, те же самые darling/syn/quote тому доказательством. Уже вот даже watt появился, который это добро в WASM тащит.


Мне кажется, преимущество процедурных макросов по отношению к шаблонной магии плюсов в том, что макросы просто дают низкоуровневый доступ к абстракциям языка (при этом ничего нового, по сути, не появляется, мы просто вмешиваемся в работу компилятора), а шаблоны со всякой сфинаёй — это наслоение поверх существующих правил.


Поэтому, имхо, появление инфраструктуры, которая позволит писать процедурные макросы с тем же удобством, что и обычный код — вопрос времени.

Еще строгая проверка типов с понятными ошибками. В плюсах же придется писать огромную кучу бойлерплейта только чтобы типы стали строже. Не говоря уже про ограниченность трейтов C++.

Еще конечно есть проблемы с поддержкой макросов в IDE, но кажется, что watt и тут бы значительно помог бы, можно было бы просто подгружать wasm модули в ide и по сути напрямую исполнять оригинальные макросы.
Хотя сейчас есть костыли в виде cargo expand, но они не очень удобны.

Sign up to leave a comment.

Articles