Templates are IMO the simplest form of metaprogramming in Nim as it's just code substitution.
If you're concerned with debugging you can add an extra piece of complile-time logic into the templates that only executes / gets put into the resulting binary when you define something like `debugging`. Don't shy away from templates!
