I don't think macros are all that bad myself... I'd say complex lifetimes are probably the hardest thing to grok when reading rust and that you can avoid a lot of that depending on how your code is structured.