@@ -10,8 +10,8 @@ use std::borrow::Cow;
1010
1111use super :: {
1212 DEFAULT_STRING_FIELD_LIMIT_BYTES , MeteredField , STRING_INITIAL_CAPACITY_BYTES ,
13- TINY_SCALAR_INITIAL_CAPACITY_BYTES , TryFromFieldWithState , TypedMultipartError , read_field_data ,
14- str_to_bool, tiny_scalar_limit,
13+ TINY_SCALAR_INITIAL_CAPACITY_BYTES , TryFromFieldWithState , TypedMultipartError ,
14+ read_field_data , str_to_bool, tiny_scalar_limit, truncate_reflected_value ,
1515} ;
1616
1717impl < S : Send + Sync > TryFromFieldWithState < S > for String {
@@ -25,10 +25,10 @@ impl<S: Send + Sync> TryFromFieldWithState<S> for String {
2525 // `Some(usize::MAX)` (set by the derive macro) and stays unbounded;
2626 // an explicit byte size wins as `Some(n)`.
2727 let limit = limit_bytes. unwrap_or ( DEFAULT_STRING_FIELD_LIMIT_BYTES ) ;
28- let ( field , data) =
28+ let ( field_name , data) =
2929 read_field_data ( field, Some ( limit) , STRING_INITIAL_CAPACITY_BYTES ) . await ?;
3030 Self :: from_utf8 ( data) . map_err ( |e| TypedMultipartError :: WrongFieldType {
31- field_name : field . name ( ) . unwrap_or_default ( ) . to_string ( ) ,
31+ field_name,
3232 wanted : Cow :: Borrowed ( "String" ) ,
3333 source : e. to_string ( ) ,
3434 } )
@@ -43,21 +43,24 @@ impl<S: Send + Sync> TryFromFieldWithState<S> for bool {
4343 limit_bytes : Option < usize > ,
4444 _state : & S ,
4545 ) -> Result < Self , TypedMultipartError > {
46- let ( field , data) = read_field_data (
46+ let ( field_name , data) = read_field_data (
4747 field,
4848 Some ( tiny_scalar_limit ( limit_bytes) ) ,
4949 TINY_SCALAR_INITIAL_CAPACITY_BYTES ,
5050 )
5151 . await ?;
5252 let text = std:: str:: from_utf8 ( & data) . map_err ( |e| TypedMultipartError :: WrongFieldType {
53- field_name : field . name ( ) . unwrap_or_default ( ) . to_string ( ) ,
53+ field_name : field_name . clone ( ) ,
5454 wanted : Cow :: Borrowed ( "bool" ) ,
5555 source : e. to_string ( ) ,
5656 } ) ?;
5757 str_to_bool ( text) . ok_or_else ( || TypedMultipartError :: WrongFieldType {
58- field_name : field . name ( ) . unwrap_or_default ( ) . to_string ( ) ,
58+ field_name,
5959 wanted : Cow :: Borrowed ( "bool" ) ,
60- source : format ! ( "invalid boolean value: `{text}`" ) ,
60+ source : format ! (
61+ "invalid boolean value: `{}`" ,
62+ truncate_reflected_value( text)
63+ ) ,
6164 } )
6265 }
6366}
@@ -73,21 +76,21 @@ macro_rules! impl_try_from_field_for_number {
7376 limit_bytes: Option <usize >,
7477 _state: & S ,
7578 ) -> Result <Self , TypedMultipartError > {
76- let ( field , data) = read_field_data(
79+ let ( field_name , data) = read_field_data(
7780 field,
7881 Some ( tiny_scalar_limit( limit_bytes) ) ,
7982 TINY_SCALAR_INITIAL_CAPACITY_BYTES ,
8083 ) . await ?;
8184 let text = std:: str :: from_utf8( & data) . map_err( |e| {
8285 TypedMultipartError :: WrongFieldType {
83- field_name: field . name ( ) . unwrap_or_default ( ) . to_string ( ) ,
86+ field_name: field_name . clone ( ) ,
8487 wanted: Cow :: Borrowed ( stringify!( $ty) ) ,
8588 source: e. to_string( ) ,
8689 }
8790 } ) ?;
8891 text. trim( ) . parse:: <$ty>( ) . map_err( |e| {
8992 TypedMultipartError :: WrongFieldType {
90- field_name: field . name ( ) . unwrap_or_default ( ) . to_string ( ) ,
93+ field_name,
9194 wanted: Cow :: Borrowed ( stringify!( $ty) ) ,
9295 source: e. to_string( ) ,
9396 }
@@ -110,22 +113,22 @@ impl<S: Send + Sync> TryFromFieldWithState<S> for char {
110113 limit_bytes : Option < usize > ,
111114 _state : & S ,
112115 ) -> Result < Self , TypedMultipartError > {
113- let ( field , data) = read_field_data (
116+ let ( field_name , data) = read_field_data (
114117 field,
115118 Some ( tiny_scalar_limit ( limit_bytes) ) ,
116119 TINY_SCALAR_INITIAL_CAPACITY_BYTES ,
117120 )
118121 . await ?;
119122 let text = std:: str:: from_utf8 ( & data) . map_err ( |e| TypedMultipartError :: WrongFieldType {
120- field_name : field . name ( ) . unwrap_or_default ( ) . to_string ( ) ,
123+ field_name : field_name . clone ( ) ,
121124 wanted : Cow :: Borrowed ( "char" ) ,
122125 source : e. to_string ( ) ,
123126 } ) ?;
124127 let mut chars = text. chars ( ) ;
125128 match ( chars. next ( ) , chars. next ( ) ) {
126129 ( Some ( c) , None ) => Ok ( c) ,
127130 _ => Err ( TypedMultipartError :: WrongFieldType {
128- field_name : field . name ( ) . unwrap_or_default ( ) . to_string ( ) ,
131+ field_name,
129132 wanted : Cow :: Borrowed ( "char" ) ,
130133 source : "expected exactly one character" . to_string ( ) ,
131134 } ) ,
0 commit comments