@@ -17,13 +17,13 @@ use std::borrow::Cow;
17
17
#[ derive( Clone , Debug ) ]
18
18
pub struct EscapedDeserializer < ' a > {
19
19
/// Possible escaped value of text/CDATA or attribute value
20
- escaped_value : Cow < ' a , [ u8 ] > ,
20
+ escaped_value : Cow < ' a , str > ,
21
21
/// If `true`, value requires unescaping before using
22
22
escaped : bool ,
23
23
}
24
24
25
25
impl < ' a > EscapedDeserializer < ' a > {
26
- pub fn new ( escaped_value : Cow < ' a , [ u8 ] > , escaped : bool ) -> Self {
26
+ pub fn new ( escaped_value : Cow < ' a , str > , escaped : bool ) -> Self {
27
27
EscapedDeserializer {
28
28
escaped_value,
29
29
escaped,
@@ -37,7 +37,7 @@ macro_rules! deserialize_num {
37
37
where
38
38
V : Visitor <' de>,
39
39
{
40
- let value = String :: from_utf8 ( self . escaped_value. as_ref ( ) . to_vec ( ) ) ? . parse( ) ?; // TODO(dalley): this is temporary
40
+ let value = self . escaped_value. parse( ) ?;
41
41
42
42
visitor. $visit( value)
43
43
}
@@ -59,15 +59,15 @@ impl<'de, 'a> serde::Deserializer<'de> for EscapedDeserializer<'a> {
59
59
V : Visitor < ' de > ,
60
60
{
61
61
if self . escaped {
62
- match unescape ( std :: str :: from_utf8 ( self . escaped_value . as_ref ( ) ) ? ) ? {
62
+ match unescape ( self . escaped_value . as_ref ( ) ) ? {
63
63
// TODO(dalley): remove temporary from_utf8
64
64
Cow :: Borrowed ( s) => visitor. visit_str ( s) ,
65
65
Cow :: Owned ( s) => visitor. visit_string ( s) ,
66
66
}
67
67
} else {
68
68
match self . escaped_value {
69
- Cow :: Borrowed ( s) => visitor. visit_str ( std :: str :: from_utf8 ( s ) ? ) ,
70
- Cow :: Owned ( s) => visitor. visit_string ( String :: from_utf8 ( s ) ? ) ,
69
+ Cow :: Borrowed ( s) => visitor. visit_str ( s ) ,
70
+ Cow :: Owned ( s) => visitor. visit_string ( s ) ,
71
71
}
72
72
}
73
73
}
@@ -101,7 +101,7 @@ impl<'de, 'a> serde::Deserializer<'de> for EscapedDeserializer<'a> {
101
101
where
102
102
V : Visitor < ' de > ,
103
103
{
104
- deserialize_bool ( self . escaped_value . as_ref ( ) , visitor)
104
+ deserialize_bool ( & self . escaped_value . as_bytes ( ) , visitor)
105
105
}
106
106
107
107
fn deserialize_char < V > ( self , visitor : V ) -> Result < V :: Value , Self :: Error >
@@ -122,7 +122,7 @@ impl<'de, 'a> serde::Deserializer<'de> for EscapedDeserializer<'a> {
122
122
where
123
123
V : Visitor < ' de > ,
124
124
{
125
- if self . escaped_value . as_ref ( ) . is_empty ( ) {
125
+ if self . escaped_value . is_empty ( ) {
126
126
visitor. visit_none ( )
127
127
} else {
128
128
visitor. visit_some ( self )
0 commit comments