]>
Commit | Line | Data |
---|---|---|
f2b60f7d FG |
1 | ### What it does |
2 | Checks for a raw slice being cast to a slice pointer | |
3 | ||
4 | ### Why is this bad? | |
5 | This can result in multiple `&mut` references to the same location when only a pointer is | |
6 | required. | |
7 | `ptr::slice_from_raw_parts` is a safe alternative that doesn't require | |
8 | the same [safety requirements] to be upheld. | |
9 | ||
10 | ### Example | |
11 | ``` | |
12 | let _: *const [u8] = std::slice::from_raw_parts(ptr, len) as *const _; | |
13 | let _: *mut [u8] = std::slice::from_raw_parts_mut(ptr, len) as *mut _; | |
14 | ``` | |
15 | Use instead: | |
16 | ``` | |
17 | let _: *const [u8] = std::ptr::slice_from_raw_parts(ptr, len); | |
18 | let _: *mut [u8] = std::ptr::slice_from_raw_parts_mut(ptr, len); | |
19 | ``` | |
20 | [safety requirements]: https://doc.rust-lang.org/std/slice/fn.from_raw_parts.html#safety |