File tree Expand file tree Collapse file tree 2 files changed +7
-7
lines changed Expand file tree Collapse file tree 2 files changed +7
-7
lines changed Original file line number Diff line number Diff line change @@ -16,7 +16,7 @@ pub trait Refine<Tag>: Clone + Sized {
1616}
1717
1818#[ derive( Debug , Error ) ]
19- #[ error( "Refine error : {0}" ) ]
19+ #[ error( "Refine failed : {0}" ) ]
2020pub struct RefineError < Rep , Tag > ( pub Rep :: RefineErrorRep )
2121where
2222 Rep : Refine < Tag > ;
@@ -118,18 +118,18 @@ where
118118#[ cfg( feature = "serde" ) ]
119119impl < ' de , Rep , Tag > Deserialize < ' de > for Tagged < Rep , Tag >
120120where
121- Rep : FromStr + Refine < Tag > ,
122- Rep :: Err : Debug + Display ,
121+ Rep : Deserialize < ' de > + Refine < Tag > ,
123122{
124123 fn deserialize < D > (
125124 deserializer : D ,
126125 ) -> Result < Self , D :: Error >
127126 where
128127 D : serde:: Deserializer < ' de > ,
129128 {
130- let s = String :: deserialize ( deserializer) ?;
131- Tagged :: from_str ( & s)
132- . map_err ( serde:: de:: Error :: custom)
129+ Rep :: deserialize ( deserializer) . and_then ( |rep| {
130+ Tagged :: new ( rep)
131+ . map_err ( serde:: de:: Error :: custom)
132+ } )
133133 }
134134}
135135
Original file line number Diff line number Diff line change @@ -177,7 +177,7 @@ fn test_serde_user_id_invalid_refine() {
177177 let err = toml:: from_str :: < Wrapper > ( toml) . unwrap_err ( ) ;
178178 assert ! (
179179 err. to_string( ) . contains( "Refine failed" ) ,
180- "Deserialization should fail with a Refine error for invalid user_id "
180+ "Unexpected failure: {err} "
181181 ) ;
182182 let toml = r#"user_id = "user_123""# ;
183183 let wrapper: Wrapper = toml:: from_str ( toml) . unwrap ( ) ;
You can’t perform that action at this time.
0 commit comments