Skip to content

Commit

Permalink
Merge pull request #1237 from JonathanBrouwer/master
Browse files Browse the repository at this point in the history
Improve documentation for buffering around functions taking a reader
  • Loading branch information
dtolnay authored Jan 28, 2025
2 parents 87f78da + 8c2d800 commit d33c1b5
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 1 deletion.
10 changes: 9 additions & 1 deletion src/de.rs
Original file line number Diff line number Diff line change
Expand Up @@ -45,11 +45,17 @@ where
/// Create a JSON deserializer from one of the possible serde_json input
/// sources.
///
/// When reading from a source against which short reads are not efficient, such
/// as a [`File`], you will want to apply your own buffering because serde_json
/// will not buffer the input. See [`std::io::BufReader`].
///
/// Typically it is more convenient to use one of these methods instead:
///
/// - Deserializer::from_str
/// - Deserializer::from_slice
/// - Deserializer::from_reader
///
/// [`File`]: https://doc.rust-lang.org/std/fs/struct.File.html
pub fn new(read: R) -> Self {
Deserializer {
read,
Expand Down Expand Up @@ -2568,6 +2574,7 @@ where
///
/// use std::error::Error;
/// use std::net::{TcpListener, TcpStream};
/// use std::io::BufReader;
///
/// #[derive(Deserialize, Debug)]
/// struct User {
Expand All @@ -2576,7 +2583,8 @@ where
/// }
///
/// fn read_user_from_stream(tcp_stream: TcpStream) -> Result<User, Box<dyn Error>> {
/// let mut de = serde_json::Deserializer::from_reader(tcp_stream);
/// let buf_tcp_stream = BufReader::new(tcp_stream);
/// let mut de = serde_json::Deserializer::from_reader(buf_tcp_stream);
/// let u = User::deserialize(&mut de)?;
///
/// Ok(u)
Expand Down
6 changes: 6 additions & 0 deletions src/read.rs
Original file line number Diff line number Diff line change
Expand Up @@ -191,6 +191,12 @@ where
R: io::Read,
{
/// Create a JSON input source to read from a std::io input stream.
///
/// When reading from a source against which short reads are not efficient, such
/// as a [`File`], you will want to apply your own buffering because serde_json
/// will not buffer the input. See [`std::io::BufReader`].
///
/// [`File`]: https://doc.rust-lang.org/std/fs/struct.File.html
pub fn new(reader: R) -> Self {
IoRead {
iter: LineColIterator::new(reader.bytes()),
Expand Down

0 comments on commit d33c1b5

Please sign in to comment.