Looks like you'll need W: Write + Seek for ZipWriter, so stdout won't work (no Seek) but there are in-memory writers you can use. For example Cursor::new(Vec::new()) should work (using std::io::Cursor).
You might see Seek and wonder how to solve it, but you can always hit that doc page and see what implementors there are.