@@ -1117,36 +1117,23 @@ impl<L: FromLua, R: FromLua> FromLua for Either<L, R> {
11171117 #[ inline]
11181118 fn from_lua ( value : Value , lua : & Lua ) -> Result < Self > {
11191119 let value_type_name = value. type_name ( ) ;
1120- // Try the left type first
1121- match L :: from_lua ( value. clone ( ) , lua) {
1122- Ok ( l) => Ok ( Either :: Left ( l) ) ,
1123- // Try the right type
1124- Err ( _) => match R :: from_lua ( value, lua) . map ( Either :: Right ) {
1125- Ok ( r) => Ok ( r) ,
1126- Err ( _) => Err ( Error :: from_lua_conversion (
1127- value_type_name,
1128- Self :: type_name ( ) ,
1129- None ,
1130- ) ) ,
1131- } ,
1132- }
1120+ L :: from_lua ( value. clone ( ) , lua)
1121+ . map ( Either :: Left )
1122+ . or_else ( |_| R :: from_lua ( value, lua) . map ( Either :: Right ) )
1123+ . map_err ( |_| Error :: from_lua_conversion ( value_type_name, Self :: type_name ( ) , None ) )
11331124 }
11341125
11351126 #[ inline]
11361127 unsafe fn from_stack ( idx : c_int , lua : & RawLua ) -> Result < Self > {
1137- match L :: from_stack ( idx, lua) {
1138- Ok ( l) => Ok ( Either :: Left ( l) ) ,
1139- Err ( _) => match R :: from_stack ( idx, lua) . map ( Either :: Right ) {
1140- Ok ( r) => Ok ( r) ,
1141- Err ( _) => {
1142- let state = lua. state ( ) ;
1143- let from_type_name = CStr :: from_ptr ( ffi:: lua_typename ( state, ffi:: lua_type ( state, idx) ) )
1144- . to_str ( )
1145- . unwrap_or ( "unknown" ) ;
1146- let err = Error :: from_lua_conversion ( from_type_name, Self :: type_name ( ) , None ) ;
1147- Err ( err)
1148- }
1149- } ,
1150- }
1128+ L :: from_stack ( idx, lua)
1129+ . map ( Either :: Left )
1130+ . or_else ( |_| R :: from_stack ( idx, lua) . map ( Either :: Right ) )
1131+ . map_err ( |_| {
1132+ let state = lua. state ( ) ;
1133+ let from_type_name = CStr :: from_ptr ( ffi:: lua_typename ( state, ffi:: lua_type ( state, idx) ) )
1134+ . to_str ( )
1135+ . unwrap_or ( "unknown" ) ;
1136+ Error :: from_lua_conversion ( from_type_name, Self :: type_name ( ) , None )
1137+ } )
11511138 }
11521139}
0 commit comments