-
Notifications
You must be signed in to change notification settings - Fork 161
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Recommend MultiGzDecoder over GzDecoder in docs #324
Changes from all commits
7d5856d
7cfdd4e
a232574
e21986e
1e09571
955728b
f0bf8a6
fc30d9e
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
|
@@ -90,13 +90,22 @@ impl<R: Read + Write> Write for GzEncoder<R> { | |||||||||||
} | ||||||||||||
} | ||||||||||||
|
||||||||||||
/// A gzip streaming decoder | ||||||||||||
/// A decoder for the first member of a [gzip file]. | ||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Same changes as for bufread |
||||||||||||
/// | ||||||||||||
/// This structure exposes a [`Read`] interface that will consume compressed | ||||||||||||
/// data from the underlying reader and emit uncompressed data. | ||||||||||||
/// Use [`MultiGzDecoder`] if your file has multiple streams. | ||||||||||||
/// | ||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||||||||
/// [`Read`]: https://doc.rust-lang.org/std/io/trait.Read.html | ||||||||||||
/// After reading a single member of the gzip data this reader will return | ||||||||||||
/// Ok(0) even if there are more bytes available in the underlying reader. | ||||||||||||
/// `GzDecoder` may have read additional bytes past the end of the gzip data. | ||||||||||||
/// If you need the following bytes, wrap the `Reader` in a `std::io::BufReader` | ||||||||||||
/// and use `bufread::GzDecoder` instead. | ||||||||||||
/// | ||||||||||||
/// To handle gzip files that may have multiple members, see [`MultiGzDecoder`] | ||||||||||||
/// or read more | ||||||||||||
/// [in the introduction](../index.html#about-multi-member-gzip-files). | ||||||||||||
/// | ||||||||||||
/// [gzip file]: https://www.rfc-editor.org/rfc/rfc1952#page-5 | ||||||||||||
/// | ||||||||||||
/// # Examples | ||||||||||||
/// | ||||||||||||
|
@@ -180,21 +189,19 @@ impl<R: Read + Write> Write for GzDecoder<R> { | |||||||||||
} | ||||||||||||
} | ||||||||||||
|
||||||||||||
/// A gzip streaming decoder that decodes all members of a multistream | ||||||||||||
/// A gzip streaming decoder that decodes a [gzip file] that may have multiple members. | ||||||||||||
/// | ||||||||||||
/// A gzip member consists of a header, compressed data and a trailer. The [gzip | ||||||||||||
/// specification](https://tools.ietf.org/html/rfc1952), however, allows multiple | ||||||||||||
/// gzip members to be joined in a single stream. `MultiGzDecoder` will | ||||||||||||
/// decode all consecutive members while [`GzDecoder`] will only decompress the | ||||||||||||
/// first gzip member. The multistream format is commonly used in bioinformatics, | ||||||||||||
/// for example when using the BGZF compressed data. It's also useful | ||||||||||||
/// to compress large amounts of data in parallel where each thread produces one stream | ||||||||||||
/// for a chunk of input data. | ||||||||||||
/// This structure exposes a [`Read`] interface that will consume compressed | ||||||||||||
/// data from the underlying reader and emit uncompressed data. | ||||||||||||
/// | ||||||||||||
/// This structure exposes a [`Read`] interface that will consume all gzip members | ||||||||||||
/// from the underlying reader and emit uncompressed data. | ||||||||||||
/// A gzip file consists of a series of *members* concatenated one after another. | ||||||||||||
/// MultiGzDecoder decodes all members of a file and returns Ok(0) once the | ||||||||||||
/// underlying reader does. | ||||||||||||
/// | ||||||||||||
/// [`Read`]: https://doc.rust-lang.org/std/io/trait.Read.html | ||||||||||||
/// To handle members seperately, see [GzDecoder] or read more | ||||||||||||
/// [in the introduction](../index.html#about-multi-member-gzip-files). | ||||||||||||
/// | ||||||||||||
/// [gzip file]: https://www.rfc-editor.org/rfc/rfc1952#page-5 | ||||||||||||
/// | ||||||||||||
/// # Examples | ||||||||||||
/// | ||||||||||||
|
Original file line number | Diff line number | Diff line change | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
|
@@ -166,12 +166,20 @@ impl<W: Write> Drop for GzEncoder<W> { | |||||||||||
} | ||||||||||||
} | ||||||||||||
|
||||||||||||
/// A gzip streaming decoder | ||||||||||||
/// A decoder for a single member of a [gzip file]. | ||||||||||||
/// | ||||||||||||
/// This structure exposes a [`Write`] interface that will emit uncompressed data | ||||||||||||
/// to the underlying writer `W`. | ||||||||||||
/// Use [`MultiGzDecoder`] if your file has multiple streams. | ||||||||||||
/// This structure exposes a [`Write`] interface, receiving compressed data and | ||||||||||||
/// writing uncompressed data to the underlying writer. | ||||||||||||
/// | ||||||||||||
/// After decoding a single member of the gzip data this writer will return the number of bytes up to | ||||||||||||
/// to the end of the gzip member and subsequent writes will return Ok(0) allowing the caller to | ||||||||||||
/// handle any data following the gzip member. | ||||||||||||
/// | ||||||||||||
/// To handle gzip files that may have multiple members, see [`MultiGzDecoder`] | ||||||||||||
/// or read more | ||||||||||||
/// [in the introduction](../index.html#about-multi-member-gzip-files). | ||||||||||||
/// | ||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||||||||
/// [gzip file]: https://www.rfc-editor.org/rfc/rfc1952#page-5 | ||||||||||||
/// [`Write`]: https://doc.rust-lang.org/std/io/trait.Write.html | ||||||||||||
/// | ||||||||||||
/// # Examples | ||||||||||||
|
@@ -373,17 +381,19 @@ impl<W: Read + Write> Read for GzDecoder<W> { | |||||||||||
} | ||||||||||||
} | ||||||||||||
|
||||||||||||
/// A gzip streaming decoder that decodes all members of a multistream | ||||||||||||
/// A gzip streaming decoder that decodes a [gzip file] with multiple members. | ||||||||||||
/// | ||||||||||||
/// This structure exposes a [`Write`] interface that will consume compressed data and | ||||||||||||
/// write uncompressed data to the underlying writer. | ||||||||||||
/// | ||||||||||||
/// A gzip file consists of a series of *members* concatenated one after another. | ||||||||||||
/// `MultiGzDecoder` decodes all members of a file and writes them to the | ||||||||||||
/// underlying writer one after another. | ||||||||||||
/// | ||||||||||||
/// A gzip member consists of a header, compressed data and a trailer. The [gzip | ||||||||||||
/// specification](https://tools.ietf.org/html/rfc1952), however, allows multiple | ||||||||||||
/// gzip members to be joined in a single stream. `MultiGzDecoder` will | ||||||||||||
/// decode all consecutive members while `GzDecoder` will only decompress | ||||||||||||
/// the first gzip member. The multistream format is commonly used in | ||||||||||||
/// bioinformatics, for example when using the BGZF compressed data. | ||||||||||||
/// To handle members separately, see [GzDecoder] or read more | ||||||||||||
/// [in the introduction](../index.html#about-multi-member-gzip-files). | ||||||||||||
/// | ||||||||||||
/// This structure exposes a [`Write`] interface that will consume all gzip members | ||||||||||||
/// from the written buffers and write uncompressed data to the writer. | ||||||||||||
/// [gzip file]: https://www.rfc-editor.org/rfc/rfc1952#page-5 | ||||||||||||
#[derive(Debug)] | ||||||||||||
pub struct MultiGzDecoder<W: Write> { | ||||||||||||
inner: GzDecoder<W>, | ||||||||||||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Whatever the final text, it should stick to the RFC terminology of "member" rather than using "stream" in some places.