File tree 1 file changed +26
-7
lines changed
1 file changed +26
-7
lines changed Original file line number Diff line number Diff line change 10
10
11
11
#![ feature( const_fn) ]
12
12
13
+ type Field1 = i32 ;
14
+ type Field2 = f32 ;
15
+ type Field3 = i64 ;
16
+
13
17
union DummyUnion {
14
- field1 : i32 ,
15
- field2 : i32 ,
18
+ field1 : Field1 ,
19
+ field2 : Field2 ,
20
+ field3 : Field3 ,
21
+ }
22
+
23
+ const FLOAT1_AS_I32 : i32 = 1065353216 ;
24
+ const UNION : DummyUnion = DummyUnion { field1 : FLOAT1_AS_I32 } ;
25
+
26
+ const fn read_field1 ( ) -> Field1 {
27
+ const FIELD1 : Field1 = unsafe { UNION . field1 } ;
28
+ FIELD1
29
+ }
30
+
31
+ const fn read_field2 ( ) -> Field2 {
32
+ const FIELD2 : Field2 = unsafe { UNION . field2 } ;
33
+ FIELD2
16
34
}
17
35
18
- const fn read_field ( ) -> i32 {
19
- const UNION : DummyUnion = DummyUnion { field1 : 5 } ;
20
- const FIELD : i32 = unsafe { UNION . field2 } ;
21
- FIELD
36
+ const fn read_field3 ( ) -> Field3 {
37
+ const FIELD3 : Field3 = unsafe { UNION . field3 } ;
38
+ FIELD3
22
39
}
23
40
24
41
fn main ( ) {
25
- assert_eq ! ( read_field( ) , 5 ) ;
42
+ assert_eq ! ( read_field1( ) , FLOAT1_AS_I32 ) ;
43
+ assert_eq ! ( read_field2( ) , 1.0 ) ;
44
+ assert_eq ! ( read_field3( ) , unsafe { UNION . field3 } ) ;
26
45
}
You can’t perform that action at this time.
0 commit comments