@@ -10,14 +10,12 @@ use bincode::{
1010 error:: { DecodeError , EncodeError } ,
1111 impl_borrow_decode,
1212} ;
13- use serde:: { Deserialize , Serialize } ;
1413
1514/// A simple regular expression implementation following ecmascript semantics
1615///
1716/// Delegates to the `regex` crate when possible and `regress` otherwise.
18- #[ derive( Debug , Clone , Serialize , Deserialize ) ]
17+ #[ derive( Debug , Clone ) ]
1918#[ turbo_tasks:: value( eq = "manual" , shared, serialization = "custom" ) ]
20- #[ serde( into = "RegexForm" , try_from = "RegexForm" ) ]
2119pub struct EsRegex {
2220 #[ turbo_tasks( trace_ignore) ]
2321 delegate : EsRegexImpl ,
@@ -44,30 +42,6 @@ impl PartialEq for EsRegex {
4442}
4543impl Eq for EsRegex { }
4644
47- impl TryFrom < RegexForm > for EsRegex {
48- type Error = anyhow:: Error ;
49-
50- fn try_from ( value : RegexForm ) -> std:: result:: Result < Self , Self :: Error > {
51- EsRegex :: new ( & value. pattern , & value. flags )
52- }
53- }
54-
55- /// This is the serializable form for the `EsRegex` struct
56- #[ derive( serde:: Serialize , serde:: Deserialize , Debug , Clone ) ]
57- struct RegexForm {
58- pattern : String ,
59- flags : String ,
60- }
61-
62- impl From < EsRegex > for RegexForm {
63- fn from ( value : EsRegex ) -> Self {
64- Self {
65- pattern : value. pattern ,
66- flags : value. flags ,
67- }
68- }
69- }
70-
7145impl Encode for EsRegex {
7246 fn encode < E : Encoder > ( & self , encoder : & mut E ) -> Result < ( ) , EncodeError > {
7347 self . pattern . encode ( encoder) ?;
@@ -235,11 +209,13 @@ mod tests {
235209 use super :: { EsRegex , EsRegexImpl } ;
236210
237211 #[ test]
238- fn round_trip_serialize ( ) {
212+ fn round_trip_bincode ( ) {
239213 let regex = EsRegex :: new ( "[a-z]" , "i" ) . unwrap ( ) ;
240- let serialized = serde_json:: to_string ( & regex) . unwrap ( ) ;
241- let parsed = serde_json:: from_str :: < EsRegex > ( & serialized) . unwrap ( ) ;
242- assert_eq ! ( regex, parsed) ;
214+ let config = bincode:: config:: standard ( ) ;
215+ let encoded = bincode:: encode_to_vec ( & regex, config) . unwrap ( ) ;
216+ let ( decoded, len) = bincode:: decode_from_slice :: < EsRegex , _ > ( & encoded, config) . unwrap ( ) ;
217+ assert_eq ! ( regex, decoded) ;
218+ assert_eq ! ( len, encoded. len( ) ) ;
243219 }
244220
245221 #[ test]
0 commit comments