@@ -7,7 +7,7 @@ use crate::de::{
7
7
} ;
8
8
9
9
#[ cfg( any( feature = "std" , feature = "alloc" ) ) ]
10
- use crate :: de:: { MapAccess , Unexpected } ;
10
+ use crate :: de:: MapAccess ;
11
11
12
12
#[ cfg( any( feature = "std" , feature = "alloc" ) ) ]
13
13
pub use self :: content:: {
66
66
D : Deserializer < ' de > ,
67
67
R : From < Cow < ' a , str > > ,
68
68
{
69
- struct CowStrVisitor ;
70
-
71
- #[ cfg_attr( not( no_diagnostic_namespace) , diagnostic:: do_not_recommend) ]
72
- impl < ' a > Visitor < ' a > for CowStrVisitor {
73
- type Value = Cow < ' a , str > ;
74
-
75
- fn expecting ( & self , formatter : & mut fmt:: Formatter ) -> fmt:: Result {
76
- formatter. write_str ( "a string" )
77
- }
78
-
79
- fn visit_str < E > ( self , v : & str ) -> Result < Self :: Value , E >
80
- where
81
- E : Error ,
82
- {
83
- Ok ( Cow :: Owned ( v. to_owned ( ) ) )
84
- }
85
-
86
- fn visit_borrowed_str < E > ( self , v : & ' a str ) -> Result < Self :: Value , E >
87
- where
88
- E : Error ,
89
- {
90
- Ok ( Cow :: Borrowed ( v) )
91
- }
92
-
93
- fn visit_string < E > ( self , v : String ) -> Result < Self :: Value , E >
94
- where
95
- E : Error ,
96
- {
97
- Ok ( Cow :: Owned ( v) )
98
- }
99
-
100
- fn visit_bytes < E > ( self , v : & [ u8 ] ) -> Result < Self :: Value , E >
101
- where
102
- E : Error ,
103
- {
104
- match str:: from_utf8 ( v) {
105
- Ok ( s) => Ok ( Cow :: Owned ( s. to_owned ( ) ) ) ,
106
- Err ( _) => Err ( Error :: invalid_value ( Unexpected :: Bytes ( v) , & self ) ) ,
107
- }
108
- }
109
-
110
- fn visit_borrowed_bytes < E > ( self , v : & ' a [ u8 ] ) -> Result < Self :: Value , E >
111
- where
112
- E : Error ,
113
- {
114
- match str:: from_utf8 ( v) {
115
- Ok ( s) => Ok ( Cow :: Borrowed ( s) ) ,
116
- Err ( _) => Err ( Error :: invalid_value ( Unexpected :: Bytes ( v) , & self ) ) ,
117
- }
118
- }
119
-
120
- fn visit_byte_buf < E > ( self , v : Vec < u8 > ) -> Result < Self :: Value , E >
121
- where
122
- E : Error ,
123
- {
124
- match String :: from_utf8 ( v) {
125
- Ok ( s) => Ok ( Cow :: Owned ( s) ) ,
126
- Err ( e) => Err ( Error :: invalid_value (
127
- Unexpected :: Bytes ( & e. into_bytes ( ) ) ,
128
- & self ,
129
- ) ) ,
130
- }
131
- }
132
- }
133
-
134
- deserializer. deserialize_str ( CowStrVisitor ) . map ( From :: from)
69
+ deserializer
70
+ . deserialize_str ( serde_core:: de:: value:: CowStrVisitor )
71
+ . map ( From :: from)
135
72
}
136
73
137
74
#[ cfg( any( feature = "std" , feature = "alloc" ) ) ]
@@ -140,61 +77,8 @@ where
140
77
D : Deserializer < ' de > ,
141
78
R : From < Cow < ' a , [ u8 ] > > ,
142
79
{
143
- struct CowBytesVisitor ;
144
-
145
- #[ cfg_attr( not( no_diagnostic_namespace) , diagnostic:: do_not_recommend) ]
146
- impl < ' a > Visitor < ' a > for CowBytesVisitor {
147
- type Value = Cow < ' a , [ u8 ] > ;
148
-
149
- fn expecting ( & self , formatter : & mut fmt:: Formatter ) -> fmt:: Result {
150
- formatter. write_str ( "a byte array" )
151
- }
152
-
153
- fn visit_str < E > ( self , v : & str ) -> Result < Self :: Value , E >
154
- where
155
- E : Error ,
156
- {
157
- Ok ( Cow :: Owned ( v. as_bytes ( ) . to_vec ( ) ) )
158
- }
159
-
160
- fn visit_borrowed_str < E > ( self , v : & ' a str ) -> Result < Self :: Value , E >
161
- where
162
- E : Error ,
163
- {
164
- Ok ( Cow :: Borrowed ( v. as_bytes ( ) ) )
165
- }
166
-
167
- fn visit_string < E > ( self , v : String ) -> Result < Self :: Value , E >
168
- where
169
- E : Error ,
170
- {
171
- Ok ( Cow :: Owned ( v. into_bytes ( ) ) )
172
- }
173
-
174
- fn visit_bytes < E > ( self , v : & [ u8 ] ) -> Result < Self :: Value , E >
175
- where
176
- E : Error ,
177
- {
178
- Ok ( Cow :: Owned ( v. to_vec ( ) ) )
179
- }
180
-
181
- fn visit_borrowed_bytes < E > ( self , v : & ' a [ u8 ] ) -> Result < Self :: Value , E >
182
- where
183
- E : Error ,
184
- {
185
- Ok ( Cow :: Borrowed ( v) )
186
- }
187
-
188
- fn visit_byte_buf < E > ( self , v : Vec < u8 > ) -> Result < Self :: Value , E >
189
- where
190
- E : Error ,
191
- {
192
- Ok ( Cow :: Owned ( v) )
193
- }
194
- }
195
-
196
80
deserializer
197
- . deserialize_bytes ( CowBytesVisitor )
81
+ . deserialize_bytes ( serde_core :: de :: value :: CowBytesVisitor )
198
82
. map ( From :: from)
199
83
}
200
84
0 commit comments