File tree 2 files changed +24
-2
lines changed
2 files changed +24
-2
lines changed Original file line number Diff line number Diff line change @@ -42,12 +42,17 @@ pub extern "rust-intrinsic" {
42
42
43
43
pub fn get_tydesc < T > ( ) -> * ( ) ;
44
44
45
- pub fn init < T > ( ) -> T ;
45
+ /// init is unsafe because it returns a zeroed-out datum,
46
+ /// which is unsafe unless T is POD. We don't have a POD
47
+ /// kind yet. (See #4074)
48
+ pub unsafe fn init < T > ( ) -> T ;
46
49
47
50
#[ cfg( not( stage0) ) ]
48
51
pub unsafe fn uninit < T > ( ) -> T ;
49
52
50
- pub fn forget < T > ( _: T ) -> ( ) ;
53
+ /// forget is unsafe because the caller is responsible for
54
+ /// ensuring the argument is deallocated already
55
+ pub unsafe fn forget < T > ( _: T ) -> ( ) ;
51
56
52
57
pub fn needs_drop < T > ( ) -> bool ;
53
58
Original file line number Diff line number Diff line change
1
+ // Copyright 2013 The Rust Project Developers. See the COPYRIGHT
2
+ // file at the top-level directory of this distribution and at
3
+ // http://rust-lang.org/COPYRIGHT.
4
+ //
5
+ // Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
6
+ // http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
7
+ // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
8
+ // option. This file may not be copied, modified, or distributed
9
+ // except according to those terms.
10
+
11
+ use core:: unstable:: intrinsics:: { init, forget} ;
12
+
13
+ // Test that the `forget` and `init` intrinsics are really unsafe
14
+ pub fn main ( ) {
15
+ let stuff = init :: < int > ( ) ; //~ ERROR access to unsafe function requires unsafe
16
+ forget ( stuff) ; //~ ERROR access to unsafe function requires unsafe
17
+ }
You can’t perform that action at this time.
0 commit comments