Why does this have to have a ``static` bound? It would be awesome for `ReprVisitor` to rather contain `&mut W` to avoid just one more allocation.

Regardless, I think `Writer` might be a better bound (similar to below) than `StringWriter`