Sorry about the tabs, I should be more careful when coding at night.
The implementations here are for the things that we actually use in rust-compress. Ideally, we'd want it to be implemented by default on every Writer, and just write specialization implementations for things like ```~FiniteWriter```. AFAIK, there is no analogue of C++ template specialization in Rust, is there?

Yes that code was required in order to work around the destructor limitations. I'm not an IO guru, so any insights from you would be very welcome.