@@ -7,7 +7,6 @@ use pixels;
7
7
use render:: Canvas ;
8
8
use std:: convert:: TryFrom ;
9
9
use std:: ffi:: CString ;
10
- use std:: mem;
11
10
use std:: ptr;
12
11
use surface:: Surface ;
13
12
use sys:: gfx:: primitives;
@@ -18,7 +17,8 @@ pub trait ToColor {
18
17
19
18
#[ inline]
20
19
fn as_u32 ( & self ) -> u32 {
21
- unsafe { mem:: transmute ( self . as_rgba ( ) ) }
20
+ let ( r, g, b, a) = self . as_rgba ( ) ;
21
+ u32:: from_be_bytes ( [ r, g, b, a] )
22
22
}
23
23
}
24
24
@@ -34,17 +34,13 @@ impl ToColor for (u8, u8, u8, u8) {
34
34
fn as_rgba ( & self ) -> ( u8 , u8 , u8 , u8 ) {
35
35
* self
36
36
}
37
-
38
- #[ inline]
39
- fn as_u32 ( & self ) -> u32 {
40
- unsafe { mem:: transmute ( * self ) }
41
- }
42
37
}
43
38
44
39
impl ToColor for u32 {
45
40
#[ inline]
46
41
fn as_rgba ( & self ) -> ( u8 , u8 , u8 , u8 ) {
47
- unsafe { mem:: transmute ( * self ) }
42
+ let [ r, g, b, a] = self . to_be_bytes ( ) ;
43
+ ( r, g, b, a)
48
44
}
49
45
50
46
#[ inline]
@@ -57,7 +53,10 @@ impl ToColor for u32 {
57
53
impl ToColor for isize {
58
54
#[ inline]
59
55
fn as_rgba ( & self ) -> ( u8 , u8 , u8 , u8 ) {
60
- unsafe { mem:: transmute ( u32:: try_from ( * self ) . expect ( "Can't convert to Color Type" ) ) }
56
+ let [ r, g, b, a] = u32:: try_from ( * self )
57
+ . expect ( "Can't convert to Color Type" )
58
+ . to_be_bytes ( ) ;
59
+ ( r, g, b, a)
61
60
}
62
61
63
62
#[ inline]
0 commit comments