forked from rust-lang/rust-clippy
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdoc_unsafe.rs
100 lines (80 loc) · 1.82 KB
/
doc_unsafe.rs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
// aux-build:doc_unsafe_macros.rs
#[macro_use]
extern crate doc_unsafe_macros;
/// This is not sufficiently documented
pub unsafe fn destroy_the_planet() {
unimplemented!();
}
/// This one is
///
/// # Safety
///
/// This function shouldn't be called unless the horsemen are ready
pub unsafe fn apocalypse(universe: &mut ()) {
unimplemented!();
}
/// This is a private function, so docs aren't necessary
unsafe fn you_dont_see_me() {
unimplemented!();
}
mod private_mod {
pub unsafe fn only_crate_wide_accessible() {
unimplemented!();
}
pub unsafe fn republished() {
unimplemented!();
}
}
pub use private_mod::republished;
pub trait UnsafeTrait {
unsafe fn woefully_underdocumented(self);
/// # Safety
unsafe fn at_least_somewhat_documented(self);
}
pub struct Struct;
impl UnsafeTrait for Struct {
unsafe fn woefully_underdocumented(self) {
// all is well
}
unsafe fn at_least_somewhat_documented(self) {
// all is still well
}
}
impl Struct {
pub unsafe fn more_undocumented_unsafe() -> Self {
unimplemented!();
}
/// # Safety
pub unsafe fn somewhat_documented(&self) {
unimplemented!();
}
unsafe fn private(&self) {
unimplemented!();
}
}
macro_rules! very_unsafe {
() => {
pub unsafe fn whee() {
unimplemented!()
}
/// # Safety
///
/// Please keep the seat belt fastened
pub unsafe fn drive() {
whee()
}
};
}
very_unsafe!();
// we don't lint code from external macros
undocd_unsafe!();
fn main() {
unsafe {
you_dont_see_me();
destroy_the_planet();
let mut universe = ();
apocalypse(&mut universe);
private_mod::only_crate_wide_accessible();
drive();
}
}