@@ -130,7 +130,7 @@ impl<'a, 'py, 'de> de::Deserializer<'de> for &'a mut Depythonizer<'py> {
130130 where
131131 V : de:: Visitor < ' de > ,
132132 {
133- let s = self . input . downcast :: < PyString > ( ) ?. to_str ( ) ?;
133+ let s = self . input . downcast :: < PyString > ( ) ?. to_cow ( ) ?;
134134 if s. len ( ) != 1 {
135135 return Err ( PythonizeError :: invalid_length_char ( ) ) ;
136136 }
@@ -153,7 +153,7 @@ impl<'a, 'py, 'de> de::Deserializer<'de> for &'a mut Depythonizer<'py> {
153153 V : de:: Visitor < ' de > ,
154154 {
155155 let s = self . input . downcast :: < PyString > ( ) ?;
156- visitor. visit_str ( s . to_str ( ) ?)
156+ visitor. visit_str ( & s . to_cow ( ) ?)
157157 }
158158
159159 fn deserialize_string < V > ( self , visitor : V ) -> Result < V :: Value >
@@ -283,7 +283,7 @@ impl<'a, 'py, 'de> de::Deserializer<'de> for &'a mut Depythonizer<'py> {
283283 let mut de = Depythonizer :: from_object_bound ( value) ;
284284 visitor. visit_enum ( PyEnumAccess :: new ( & mut de, variant) )
285285 } else if let Ok ( s) = item. downcast :: < PyString > ( ) {
286- visitor. visit_enum ( s. to_str ( ) ?. into_deserializer ( ) )
286+ visitor. visit_enum ( s. to_cow ( ) ?. into_deserializer ( ) )
287287 } else {
288288 Err ( PythonizeError :: invalid_enum_type ( ) )
289289 }
@@ -297,7 +297,7 @@ impl<'a, 'py, 'de> de::Deserializer<'de> for &'a mut Depythonizer<'py> {
297297 . input
298298 . downcast :: < PyString > ( )
299299 . map_err ( |_| PythonizeError :: dict_key_not_string ( ) ) ?;
300- visitor. visit_str ( s . to_str ( ) ?)
300+ visitor. visit_str ( & s . to_cow ( ) ?)
301301 }
302302
303303 fn deserialize_ignored_any < V > ( self , visitor : V ) -> Result < V :: Value >
@@ -405,8 +405,8 @@ impl<'a, 'py, 'de> de::EnumAccess<'de> for PyEnumAccess<'a, 'py> {
405405 where
406406 V : de:: DeserializeSeed < ' de > ,
407407 {
408- let de : de :: value :: StrDeserializer < ' _ , PythonizeError > =
409- self . variant . to_str ( ) ? . into_deserializer ( ) ;
408+ let cow = self . variant . to_cow ( ) ? ;
409+ let de : de :: value :: StrDeserializer < ' _ , PythonizeError > = cow . as_ref ( ) . into_deserializer ( ) ;
410410 let val = seed. deserialize ( de) ?;
411411 Ok ( ( val, self ) )
412412 }
0 commit comments