You could wrap the entirety of your file in a monster macro but you'd still have to assign the macro result to a variable you need to register, which doesn't sound viable to me at least.
Maybe you can use a script that would extract all the trait implementations and create the boilerplate glue code for you, something like this:
grep --recursive --only-matching "impl PluginFunction for \w*" functions/ | sed --quiet "s/functions\/\(.*\)\.rs:impl PluginFunction for \(\w*\)/crate::functions::\1::\2{}.register(\&mut functions_map)/p"
I tried to recreate your situation locally but it may not match perfectly, maybe you'll have to adjust it a little. When I run it on my file tree which looks like this
functions
├── attr.rs
├── export.rs
└── render.rs
1 directory, 3 files
where every file has a content like this
// comment
pub struct MyAttrStructName {}
impl PluginFunction for MyAttrStructName {
}
Then I receive the following output:
crate::functions::attr::MyAttrStructName{}.register(&mut functions_map)
crate::functions::export::MyExportStructName{}.register(&mut functions_map)
crate::functions::render::MyRenderStructName{}.register(&mut functions_map)
@[email protected] @[email protected] @[email protected]
Sorry for the tags, but otherwise I would have had to respond to all your comments individually.
I also wanted to read on, so I searched for the book and found a page where it was possible to 'read a preview'