Skip to content

Commit 4d8804d

Browse files
committed
Deduplicate methods that creates deserializer
1 parent 6ab17be commit 4d8804d

File tree

1 file changed

+23
-42
lines changed

1 file changed

+23
-42
lines changed

src/de/mod.rs

Lines changed: 23 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -2069,14 +2069,7 @@ struct XmlReader<'i, R: XmlRead<'i>, E: EntityResolver = NoEntityResolver> {
20692069
}
20702070

20712071
impl<'i, R: XmlRead<'i>, E: EntityResolver> XmlReader<'i, R, E> {
2072-
fn new(reader: R) -> Self
2073-
where
2074-
E: Default,
2075-
{
2076-
Self::with_resolver(reader, E::default())
2077-
}
2078-
2079-
fn with_resolver(mut reader: R, entity_resolver: E) -> Self {
2072+
fn new(mut reader: R, entity_resolver: E) -> Self {
20802073
// Lookahead by one event immediately, so we do not need to check in the
20812074
// loop if we need lookahead or not
20822075
let lookahead = reader.next();
@@ -2320,19 +2313,20 @@ where
23202313
peek: Option<DeEvent<'de>>,
23212314
}
23222315

2323-
impl<'de, R> Deserializer<'de, R>
2316+
impl<'de, R, E> Deserializer<'de, R, E>
23242317
where
23252318
R: XmlRead<'de>,
2319+
E: EntityResolver,
23262320
{
23272321
/// Create an XML deserializer from one of the possible quick_xml input sources.
23282322
///
23292323
/// Typically it is more convenient to use one of these methods instead:
23302324
///
23312325
/// - [`Deserializer::from_str`]
23322326
/// - [`Deserializer::from_reader`]
2333-
fn new(reader: R) -> Self {
2327+
fn new(reader: R, entity_resolver: E) -> Self {
23342328
Self {
2335-
reader: XmlReader::new(reader),
2329+
reader: XmlReader::new(reader, entity_resolver),
23362330

23372331
#[cfg(feature = "overlapped-lists")]
23382332
read: VecDeque::new(),
@@ -2345,13 +2339,7 @@ where
23452339
peek: None,
23462340
}
23472341
}
2348-
}
23492342

2350-
impl<'de, R, E> Deserializer<'de, R, E>
2351-
where
2352-
R: XmlRead<'de>,
2353-
E: EntityResolver,
2354-
{
23552343
/// Set the maximum number of events that could be skipped during deserialization
23562344
/// of sequences.
23572345
///
@@ -2662,13 +2650,17 @@ where
26622650
impl<'de> Deserializer<'de, SliceReader<'de>> {
26632651
/// Create new deserializer that will borrow data from the specified string
26642652
#[allow(clippy::should_implement_trait)]
2665-
pub fn from_str(s: &'de str) -> Self {
2666-
let mut reader = Reader::from_str(s);
2653+
pub fn from_str(source: &'de str) -> Self {
2654+
let mut reader = Reader::from_str(source);
26672655
reader.expand_empty_elements(true).check_end_names(true);
2668-
Self::new(SliceReader {
2669-
reader,
2670-
start_trimmer: StartTrimmer::default(),
2671-
})
2656+
2657+
Self::new(
2658+
SliceReader {
2659+
reader,
2660+
start_trimmer: StartTrimmer::default(),
2661+
},
2662+
NoEntityResolver,
2663+
)
26722664
}
26732665
}
26742666

@@ -2698,25 +2690,14 @@ where
26982690
let mut reader = Reader::from_reader(reader);
26992691
reader.expand_empty_elements(true).check_end_names(true);
27002692

2701-
let io_reader = IoReader {
2702-
reader,
2703-
start_trimmer: StartTrimmer::default(),
2704-
buf: Vec::new(),
2705-
};
2706-
2707-
Self {
2708-
reader: XmlReader::with_resolver(io_reader, entity_resolver),
2709-
2710-
#[cfg(feature = "overlapped-lists")]
2711-
read: VecDeque::new(),
2712-
#[cfg(feature = "overlapped-lists")]
2713-
write: VecDeque::new(),
2714-
#[cfg(feature = "overlapped-lists")]
2715-
limit: None,
2716-
2717-
#[cfg(not(feature = "overlapped-lists"))]
2718-
peek: None,
2719-
}
2693+
Self::new(
2694+
IoReader {
2695+
reader,
2696+
start_trimmer: StartTrimmer::default(),
2697+
buf: Vec::new(),
2698+
},
2699+
entity_resolver,
2700+
)
27202701
}
27212702
}
27222703

0 commit comments

Comments
 (0)