]> git.lizzy.rs Git - rust.git/blob - src/docs/cast_slice_from_raw_parts.txt
[Arithmetic] Consider literals
[rust.git] / src / docs / cast_slice_from_raw_parts.txt
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