It's not a huge deal, but GzDecoder::new() has a heap allocation and if you're decompressing disjoint chunks from many readers, not being able to simply reset an existing decoder is a bit depressing, especially given that it's possible for DeflateDecoder. Wonder if it would make sense to add GzDecoder::reset(reader) method?