LINUX.ORG.RU

История изменений

Исправление Siborgium, (текущая версия) :

Про наследование – чёт не верится.

https://internals.rust-lang.org/t/why-not-inheritance/5738

метапрограммированием – может только человек, метапрограммирования вообще не видевший

Уродливость крестового метапрограммирования в целом вытекает из отсутствия рефлексии в стандарте. Впрочем, рассматриваемый код и обязан быть уродливым – на практике он реализуется через компиляторное __is_base_of, и никаких хаков через гайды не нужно.

Конкретно AST-макросы – хорошая вещь, вот только в Rust не они. В Rust используются «обычные» макросы и proc_macro – функции на Rust, оперирующие потоками токенов. Это уже лучше, чем замена по голому тексту, но все еще убого.

https://doc.rust-lang.org/book/ch19-06-macros.html

https://doc.rust-lang.org/reference/procedural-macros.html

https://doc.rust-lang.org/proc_macro/enum.TokenTree.html

Макросы в целом плохи тем, что это отдельный язык, к исходному языку отношения не имеющий. Крестовое метапрограммирование, при его визуальной уродливости, является полноправным членом основного языка.

Исправление Siborgium, :

Про наследование – чёт не верится.

https://internals.rust-lang.org/t/why-not-inheritance/5738

метапрограммированием – может только человек, метапрограммирования вообще не видевший

Уродливость крестового метапрограммирования в целом вытекает из отсутствия рефлексии в стандарте. Впрочем, рассматриваемый код и обязан быть уродливым – на практике он реализуется через компиляторное __is_base_of, и никаких хаков через гайды не нужно.

Конкретно AST-макросы – хорошая вещь, вот только в Rust не они. В Rust используются «обычные» макросы и proc_macro – функции на Rust, оперирующие потоками токенов. Это уже лучше, чем замена по тексту, но все еще убого.

https://doc.rust-lang.org/book/ch19-06-macros.html

https://doc.rust-lang.org/reference/procedural-macros.html

Макросы в целом плохи тем, что это отдельный язык, к исходному языку отношения не имеющий. Крестовое метапрограммирование, при его визуальной уродливости, является полноправным членом основного языка.

Исправление Siborgium, :

Про наследование – чёт не верится.

https://internals.rust-lang.org/t/why-not-inheritance/5738

метапрограммированием – может только человек, метапрограммирования вообще не видевший

Уродливость крестового метапрограммирования в целом вытекает из отсутствия рефлексии в стандарте. Впрочем, рассматриваемый код и обязан быть уродливым – на практике он реализуется через компиляторное __is_base_of, и никаких хаков через гайды не нужно.

Конкретно AST-макросы – хорошая вещь, вот только в Rust не они. В Rust используются «обычные» макросы и proc_macro, оперирующие токенами. Это уже лучше, чем замена по тексту, но все еще убого.

https://doc.rust-lang.org/book/ch19-06-macros.html

https://doc.rust-lang.org/reference/procedural-macros.html

Макросы в целом плохи тем, что это отдельный язык, к исходному языку отношения не имеющий. Крестовое метапрограммирование, при его визуальной уродливости, является полноправным членом основного языка.

Исходная версия Siborgium, :

Про наследование – чёт не верится.

https://internals.rust-lang.org/t/why-not-inheritance/5738

метапрограммированием – может только человек, метапрограммирования вообще не видевший

Уродливость крестового метапрограммирования в целом вытекает из отсутствия рефлексии в стандарте. Впрочем, рассматриваемый код и обязан быть уродливым – на практике он реализуется через компиляторное __is_base_of, и никаких хаков через гайды не нужно.