Skip to content

Commit c49c349

Browse files
committed
Use borrowed read_event() instead of buffered read_event_into() in most cases
Reader's example still uses `read_event_into()` to let the reader to understand how to use reader in a generic case
1 parent 459119d commit c49c349

File tree

3 files changed

+46
-88
lines changed

3 files changed

+46
-88
lines changed

examples/custom_entities.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,12 +27,11 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
2727
let mut reader = Reader::from_str(DATA);
2828
reader.trim_text(true);
2929

30-
let mut buf = Vec::new();
3130
let mut custom_entities: HashMap<String, String> = HashMap::new();
3231
let entity_re = Regex::new(r#"<!ENTITY\s+([^ \t\r\n]+)\s+"([^"]*)"\s*>"#)?;
3332

3433
loop {
35-
match reader.read_event_into(&mut buf) {
34+
match reader.read_event() {
3635
Ok(Event::DocType(ref e)) => {
3736
for cap in entity_re.captures_iter(&e) {
3837
custom_entities.insert(

tests/test.rs

Lines changed: 16 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -10,28 +10,25 @@ use pretty_assertions::assert_eq;
1010
#[test]
1111
fn test_sample() {
1212
let src: &[u8] = include_bytes!("documents/sample_rss.xml");
13-
let mut buf = Vec::new();
14-
let mut r = Reader::from_reader(src);
13+
let mut r = Reader::from_bytes(src);
1514
let mut count = 0;
1615
loop {
17-
match r.read_event_into(&mut buf).unwrap() {
16+
match r.read_event().unwrap() {
1817
Start(_) => count += 1,
1918
Decl(e) => println!("{:?}", e.version()),
2019
Eof => break,
2120
_ => (),
2221
}
23-
buf.clear();
2422
}
2523
println!("{}", count);
2624
}
2725

2826
#[test]
2927
fn test_attributes_empty() {
3028
let src = b"<a att1='a' att2='b'/>";
31-
let mut r = Reader::from_reader(src as &[u8]);
29+
let mut r = Reader::from_bytes(src);
3230
r.trim_text(true).expand_empty_elements(false);
33-
let mut buf = Vec::new();
34-
match r.read_event_into(&mut buf) {
31+
match r.read_event() {
3532
Ok(Empty(e)) => {
3633
let mut attrs = e.attributes();
3734
assert_eq!(
@@ -59,8 +56,7 @@ fn test_attribute_equal() {
5956
let src = b"<a att1=\"a=b\"/>";
6057
let mut r = Reader::from_reader(src as &[u8]);
6158
r.trim_text(true).expand_empty_elements(false);
62-
let mut buf = Vec::new();
63-
match r.read_event_into(&mut buf) {
59+
match r.read_event() {
6460
Ok(Empty(e)) => {
6561
let mut attrs = e.attributes();
6662
assert_eq!(
@@ -81,9 +77,8 @@ fn test_comment_starting_with_gt() {
8177
let src = b"<a /><!-->-->";
8278
let mut r = Reader::from_reader(src as &[u8]);
8379
r.trim_text(true).expand_empty_elements(false);
84-
let mut buf = Vec::new();
8580
loop {
86-
match r.read_event_into(&mut buf) {
81+
match r.read_event() {
8782
Ok(Comment(e)) => {
8883
assert_eq!(e.as_ref(), b">");
8984
break;
@@ -97,12 +92,11 @@ fn test_comment_starting_with_gt() {
9792
#[test]
9893
#[cfg(feature = "encoding")]
9994
fn test_koi8_r_encoding() {
100-
let src: &[u8] = include_bytes!("documents/opennews_all.rss");
101-
let mut r = Reader::from_reader(src as &[u8]);
95+
let src = include_bytes!("documents/opennews_all.rss");
96+
let mut r = Reader::from_bytes(src);
10297
r.trim_text(true).expand_empty_elements(false);
103-
let mut buf = Vec::new();
10498
loop {
105-
match r.read_event_into(&mut buf) {
99+
match r.read_event() {
106100
Ok(Text(e)) => {
107101
e.decode_and_unescape(&r).unwrap();
108102
}
@@ -135,13 +129,11 @@ fn test_issue94() {
135129
</Run>"#;
136130
let mut reader = Reader::from_reader(&data[..]);
137131
reader.trim_text(true);
138-
let mut buf = vec![];
139132
loop {
140-
match reader.read_event_into(&mut buf) {
133+
match reader.read_event() {
141134
Ok(Eof) | Err(..) => break,
142-
_ => buf.clear(),
135+
_ => (),
143136
}
144-
buf.clear();
145137
}
146138
}
147139

@@ -212,20 +204,16 @@ fn test_trim() {
212204
fn test_clone_reader() {
213205
let mut reader = Reader::from_str("<tag>text</tag>");
214206
reader.trim_text(true);
215-
let mut buf = Vec::new();
216207

217-
assert!(matches!(
218-
reader.read_event_into(&mut buf).unwrap(),
219-
Start(_)
220-
));
208+
assert!(matches!(reader.read_event().unwrap(), Start(_)));
221209

222210
let mut cloned = reader.clone();
223211

224-
assert!(matches!(reader.read_event_into(&mut buf).unwrap(), Text(_)));
225-
assert!(matches!(reader.read_event_into(&mut buf).unwrap(), End(_)));
212+
assert!(matches!(reader.read_event().unwrap(), Text(_)));
213+
assert!(matches!(reader.read_event().unwrap(), End(_)));
226214

227-
assert!(matches!(cloned.read_event_into(&mut buf).unwrap(), Text(_)));
228-
assert!(matches!(cloned.read_event_into(&mut buf).unwrap(), End(_)));
215+
assert!(matches!(cloned.read_event().unwrap(), Text(_)));
216+
assert!(matches!(cloned.read_event().unwrap(), End(_)));
229217
}
230218

231219
#[cfg(feature = "serialize")]

0 commit comments

Comments
 (0)