mirror of
https://github.com/serde-rs/json.git
synced 2025-10-02 15:26:00 +00:00
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.
This commit is contained in:
parent
29122f9ed7
commit
dc29e4815d
10
src/de.rs
10
src/de.rs
@ -2582,9 +2582,8 @@ where
|
||||
/// location: String,
|
||||
/// }
|
||||
///
|
||||
/// fn read_user_from_stream(tcp_stream: TcpStream) -> Result<User, Box<dyn Error>> {
|
||||
/// let buf_tcp_stream = BufReader::new(tcp_stream);
|
||||
/// let mut de = serde_json::Deserializer::from_reader(buf_tcp_stream);
|
||||
/// fn read_user_from_stream(stream: &mut BufReader<TcpStream>) -> Result<User, Box<dyn Error>> {
|
||||
/// let mut de = serde_json::Deserializer::from_reader(stream);
|
||||
/// let u = User::deserialize(&mut de)?;
|
||||
///
|
||||
/// Ok(u)
|
||||
@ -2595,8 +2594,9 @@ where
|
||||
/// # fn fake_main() {
|
||||
/// let listener = TcpListener::bind("127.0.0.1:4000").unwrap();
|
||||
///
|
||||
/// for stream in listener.incoming() {
|
||||
/// println!("{:#?}", read_user_from_stream(stream.unwrap()));
|
||||
/// for tcp_stream in listener.incoming() {
|
||||
/// let mut buffered = BufReader::new(tcp_stream.unwrap());
|
||||
/// println!("{:#?}", read_user_from_stream(&mut buffered));
|
||||
/// }
|
||||
/// }
|
||||
/// ```
|
||||
|
Loading…
x
Reference in New Issue
Block a user