@@ -902,17 +902,21 @@ where
902902 fn from_lua ( value : Value , _lua : & Lua ) -> Result < Self > {
903903 match value {
904904 #[ cfg( feature = "luau" ) ]
905- #[ rustfmt:: skip]
906- Value :: Vector ( v) if N == crate :: Vector :: SIZE => unsafe {
907- use std:: { mem, ptr} ;
908- let mut arr: [ mem:: MaybeUninit < T > ; N ] = mem:: MaybeUninit :: uninit ( ) . assume_init ( ) ;
909- ptr:: write ( arr[ 0 ] . as_mut_ptr ( ) , T :: from_lua ( Value :: Number ( v. x ( ) as _ ) , _lua) ?) ;
910- ptr:: write ( arr[ 1 ] . as_mut_ptr ( ) , T :: from_lua ( Value :: Number ( v. y ( ) as _ ) , _lua) ?) ;
911- ptr:: write ( arr[ 2 ] . as_mut_ptr ( ) , T :: from_lua ( Value :: Number ( v. z ( ) as _ ) , _lua) ?) ;
905+ Value :: Vector ( v) if N == crate :: Vector :: SIZE => {
906+ use std:: mem:: MaybeUninit ;
907+ let x = T :: from_lua ( Value :: Number ( v. x ( ) as _ ) , _lua) ?;
908+ let y = T :: from_lua ( Value :: Number ( v. y ( ) as _ ) , _lua) ?;
909+ let z = T :: from_lua ( Value :: Number ( v. z ( ) as _ ) , _lua) ?;
912910 #[ cfg( feature = "luau-vector4" ) ]
913- ptr:: write ( arr[ 3 ] . as_mut_ptr ( ) , T :: from_lua ( Value :: Number ( v. w ( ) as _ ) , _lua) ?) ;
914- Ok ( mem:: transmute_copy ( & arr) )
915- } ,
911+ let w = T :: from_lua ( Value :: Number ( v. w ( ) as _ ) , _lua) ?;
912+ let mut arr: [ MaybeUninit < T > ; N ] = [ const { MaybeUninit :: uninit ( ) } ; N ] ;
913+ arr[ 0 ] . write ( x) ;
914+ arr[ 1 ] . write ( y) ;
915+ arr[ 2 ] . write ( z) ;
916+ #[ cfg( feature = "luau-vector4" ) ]
917+ arr[ 3 ] . write ( w) ;
918+ Ok ( arr. map ( |e| unsafe { e. assume_init ( ) } ) )
919+ }
916920 Value :: Table ( table) => {
917921 let vec = table. sequence_values ( ) . collect :: < Result < Vec < _ > > > ( ) ?;
918922 vec. try_into ( ) . map_err ( |vec : Vec < T > | {
0 commit comments