Let's write a macro in Rust
hackeryarn.com
Let's write a macro in Rust
1–10 of 50 posts
Re: Let's write a macro in Rust
#2Re: Let's write a macro in Rust
#3Re: Let's write a macro in Rust
#4They should try writing a spellchecker first, I found the article difficult to read because of the high frequency of typos.
Re: Let's write a macro in Rust
#5Also the whole "don't write macros" is such a hilarious statement given that entire Rust ecosystem is built on them.
Re: Let's write a macro in Rust
#6Having done some Rust macros, the entire thing is such a huge hidden wart. Even very simple meta-programming in Rust need to be in their separate crate and has to use very complex syntax and invocation. Also the whole "don't write macros" is such a hilarious statement given that entire Rust ecosystem is built on them.
> given that entire Rust ecosystem is built on them.
I don't think the people saying "don't write macros" are the same people building an entire ecosystem on top of them
The iced crate has virtually zero macros by design.
Re: Let's write a macro in Rust
#7Having done some Rust macros, the entire thing is such a huge hidden wart. Even very simple meta-programming in Rust need to be in their separate crate and has to use very complex syntax and invocation. Also the whole "don't write macros" is such a hilarious statement given that entire Rust ecosystem is built on them.
Re: Let's write a macro in Rust
#8Re: Let's write a macro in Rust
#9Having done some Rust macros, the entire thing is such a huge hidden wart. Even very simple meta-programming in Rust need to be in their separate crate and has to use very complex syntax and invocation. Also the whole "don't write macros" is such a hilarious statement given that entire Rust ecosystem is built on them.
C++26 reflection will make this much easier, without having to depend in stuff like the syn crate.
I wonder if going with two macro systems, each with its own syntax and approach, was such a good idea.
Re: Let's write a macro in Rust
#10Sometimes the macros are for large chunks of code that uses a different type in a key place, or sometimes they're for cleaning up verbose function calls that will be made multiple times, so the important parts (e.g. the params) are obvious, instead of being mixed with boilerplate. In general, they're nice for papering over boilerplate. In particular, there's a pattern in embedded that involves a long expression with `try_into().unwrap()` for parsing bytes that I have a macro for. And another for managing RefCell>> locks.
I prompt the LLM with the working, but repetitive or boilerplate-laden code, and it macros it: "Please write a macro that stops the repetition in this code block: ```rust ```. Here's a example of calling it: `do_thing!(a, b, c)`
Works every time!