Currently the write! macro requires explicitly importing a Write trait. It'd be more practical if it forked the compiler process and just tried to compile with both io::Write and fmt::Write (in whatever libs-team-preferred order), picking the first one that succeeds. This would also allow defining an inherent write_fmt that doesn't conflict with any of the Write traits for write! purposes.
Also forking the compiler process like that is quite useful and we should do more of that.