История изменений
Исправление 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, и никаких хаков через гайды не нужно.