Skip to content

Commit 209778f

Browse files
authored
Informing callers of buffering requirements prevents accidental double buffering (#100)
1 parent 0bcf5f5 commit 209778f

File tree

2 files changed

+7
-7
lines changed

2 files changed

+7
-7
lines changed

examples/mailbox_parse_mbox.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ use mail_parser::{mailbox::mbox::MessageIterator, MessageParser};
88

99
fn main() {
1010
// Reads an MBox mailbox from stdin and prints each message as JSON.
11-
for raw_message in MessageIterator::new(std::io::stdin()) {
11+
for raw_message in MessageIterator::new(std::io::stdin().lock()) {
1212
let raw_message = raw_message.unwrap();
1313
let message = MessageParser::default()
1414
.parse(raw_message.contents())

src/mailbox/mbox.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,14 @@
55
*/
66

77
use crate::DateTime;
8-
use std::io::{BufRead, BufReader, Read};
8+
use std::io::BufRead;
99

1010
/// Parses an Mbox mailbox from a `Read` stream, returning each message as a
1111
/// `Vec<u8>`.
1212
///
1313
/// Supports >From quoting as defined in the [QMail mbox specification](http://qmail.org/qmail-manual-html/man5/mbox.html).
14-
pub struct MessageIterator<T: Read> {
15-
reader: BufReader<T>,
14+
pub struct MessageIterator<T> {
15+
reader: T,
1616
message: Option<Message>,
1717
}
1818

@@ -26,19 +26,19 @@ pub struct Message {
2626

2727
impl<T> MessageIterator<T>
2828
where
29-
T: Read,
29+
T: BufRead,
3030
{
3131
pub fn new(reader: T) -> MessageIterator<T> {
3232
MessageIterator {
33-
reader: BufReader::new(reader),
33+
reader,
3434
message: None,
3535
}
3636
}
3737
}
3838

3939
impl<T> Iterator for MessageIterator<T>
4040
where
41-
T: Read,
41+
T: BufRead,
4242
{
4343
type Item = std::io::Result<Message>;
4444

0 commit comments

Comments
 (0)