I'm still uneasy about defining all these redundant macros. If there isn't enough plumbing to suit particular use-cases, then that's what needs to change in my opinion instead of adding redundant expanders. I'd rather see just `func!` which returns `Trait::method` inside of a trait, `Type::method` when in a type, and `function` when just inside of a function. I don't think that it needs to be incredibly fancy, this isn't a precision name for a function because there isn't really one that exists (that's what file/line are for).

As for worrying about allocations, I think that if you're printing to the console, they probably don't matter that much, but regardless I'm of the opinion that we should have a method of statically concatenating strings instead of resorting to these duplicate macros.