@@ -2069,14 +2069,7 @@ struct XmlReader<'i, R: XmlRead<'i>, E: EntityResolver = NoEntityResolver> {
2069
2069
}
2070
2070
2071
2071
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 {
2080
2073
// Lookahead by one event immediately, so we do not need to check in the
2081
2074
// loop if we need lookahead or not
2082
2075
let lookahead = reader. next ( ) ;
@@ -2320,19 +2313,20 @@ where
2320
2313
peek : Option < DeEvent < ' de > > ,
2321
2314
}
2322
2315
2323
- impl < ' de , R > Deserializer < ' de , R >
2316
+ impl < ' de , R , E > Deserializer < ' de , R , E >
2324
2317
where
2325
2318
R : XmlRead < ' de > ,
2319
+ E : EntityResolver ,
2326
2320
{
2327
2321
/// Create an XML deserializer from one of the possible quick_xml input sources.
2328
2322
///
2329
2323
/// Typically it is more convenient to use one of these methods instead:
2330
2324
///
2331
2325
/// - [`Deserializer::from_str`]
2332
2326
/// - [`Deserializer::from_reader`]
2333
- fn new ( reader : R ) -> Self {
2327
+ fn new ( reader : R , entity_resolver : E ) -> Self {
2334
2328
Self {
2335
- reader : XmlReader :: new ( reader) ,
2329
+ reader : XmlReader :: new ( reader, entity_resolver ) ,
2336
2330
2337
2331
#[ cfg( feature = "overlapped-lists" ) ]
2338
2332
read : VecDeque :: new ( ) ,
@@ -2345,13 +2339,7 @@ where
2345
2339
peek : None ,
2346
2340
}
2347
2341
}
2348
- }
2349
2342
2350
- impl < ' de , R , E > Deserializer < ' de , R , E >
2351
- where
2352
- R : XmlRead < ' de > ,
2353
- E : EntityResolver ,
2354
- {
2355
2343
/// Set the maximum number of events that could be skipped during deserialization
2356
2344
/// of sequences.
2357
2345
///
@@ -2662,13 +2650,17 @@ where
2662
2650
impl < ' de > Deserializer < ' de , SliceReader < ' de > > {
2663
2651
/// Create new deserializer that will borrow data from the specified string
2664
2652
#[ 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 ) ;
2667
2655
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
+ )
2672
2664
}
2673
2665
}
2674
2666
@@ -2698,25 +2690,14 @@ where
2698
2690
let mut reader = Reader :: from_reader ( reader) ;
2699
2691
reader. expand_empty_elements ( true ) . check_end_names ( true ) ;
2700
2692
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
+ )
2720
2701
}
2721
2702
}
2722
2703
0 commit comments