'static is needed to put `W` inside `@mut W`.  And the managed pointer form is needed for a TyVisitor.

StringWriter is separately useful, it's a restriction that I think is useful. It's the smallest needed interface for string-building procedures like repr and tostr.  A Writer interface would allow writing arbitrary bytes, which is not needed in this case.