Skip to content

Commit dc29e48

Browse files
committed
Move BufReader to caller
The original read_user_from_stream function from PR 1237 is a bad pattern because it results in silently dropping any data left in the buffer on return. If we want to read anything else from the same TcpStream after the JSON object, the buffer needs to go in the caller.
1 parent 29122f9 commit dc29e48

File tree

1 file changed

+5
-5
lines changed

1 file changed

+5
-5
lines changed

src/de.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2582,9 +2582,8 @@ where
25822582
/// location: String,
25832583
/// }
25842584
///
2585-
/// fn read_user_from_stream(tcp_stream: TcpStream) -> Result<User, Box<dyn Error>> {
2586-
/// let buf_tcp_stream = BufReader::new(tcp_stream);
2587-
/// let mut de = serde_json::Deserializer::from_reader(buf_tcp_stream);
2585+
/// fn read_user_from_stream(stream: &mut BufReader<TcpStream>) -> Result<User, Box<dyn Error>> {
2586+
/// let mut de = serde_json::Deserializer::from_reader(stream);
25882587
/// let u = User::deserialize(&mut de)?;
25892588
///
25902589
/// Ok(u)
@@ -2595,8 +2594,9 @@ where
25952594
/// # fn fake_main() {
25962595
/// let listener = TcpListener::bind("127.0.0.1:4000").unwrap();
25972596
///
2598-
/// for stream in listener.incoming() {
2599-
/// println!("{:#?}", read_user_from_stream(stream.unwrap()));
2597+
/// for tcp_stream in listener.incoming() {
2598+
/// let mut buffered = BufReader::new(tcp_stream.unwrap());
2599+
/// println!("{:#?}", read_user_from_stream(&mut buffered));
26002600
/// }
26012601
/// }
26022602
/// ```

0 commit comments

Comments
 (0)