Skip to content

Commit 42cc759

Browse files
committed
changelog: [cast_slice_from_raw_parts]: properly select std/core
Signed-off-by: Zihan <[email protected]>
1 parent 02111a4 commit 42cc759

6 files changed

+218
-23
lines changed

clippy_lints/src/casts/cast_slice_from_raw_parts.rs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
use clippy_utils::diagnostics::span_lint_and_sugg;
2-
use clippy_utils::get_parent_expr;
32
use clippy_utils::msrvs::{self, Msrv};
43
use clippy_utils::source::snippet_with_context;
4+
use clippy_utils::{get_parent_expr, is_no_std_crate};
55
use rustc_errors::Applicability;
66
use rustc_hir::def_id::DefId;
77
use rustc_hir::{Expr, ExprKind};
@@ -44,13 +44,14 @@ pub(super) fn check(cx: &LateContext<'_>, expr: &Expr<'_>, cast_expr: &Expr<'_>,
4444
let mut applicability = Applicability::MachineApplicable;
4545
let ptr = snippet_with_context(cx, ptr_arg.span, ctxt, "ptr", &mut applicability).0;
4646
let len = snippet_with_context(cx, len_arg.span, ctxt, "len", &mut applicability).0;
47+
let krate = if is_no_std_crate(cx) { "core" } else { "std" };
4748
span_lint_and_sugg(
4849
cx,
4950
CAST_SLICE_FROM_RAW_PARTS,
5051
span,
5152
format!("casting the result of `{func}` to {cast_to}"),
5253
"replace with",
53-
format!("core::ptr::slice_{func}({ptr}, {len})"),
54+
format!("{krate}::ptr::slice_{func}({ptr}, {len})"),
5455
applicability,
5556
);
5657
}
@@ -81,13 +82,14 @@ pub(super) fn check_implicit_cast(cx: &LateContext<'_>, expr: &Expr<'_>) {
8182
let ctxt = expr.span.ctxt();
8283
let ptr = snippet_with_context(cx, ptr_arg.span, ctxt, "ptr", &mut applicability).0;
8384
let len = snippet_with_context(cx, len_arg.span, ctxt, "len", &mut applicability).0;
85+
let krate = if is_no_std_crate(cx) { "core" } else { "std" };
8486
span_lint_and_sugg(
8587
cx,
8688
CAST_SLICE_FROM_RAW_PARTS,
8789
expr.span,
8890
format!("implicitly casting the result of `{func}` to `{target}`"),
8991
"replace_with",
90-
format!("core::ptr::slice_{func}({ptr}, {len})"),
92+
format!("{krate}::ptr::slice_{func}({ptr}, {len})"),
9193
applicability,
9294
);
9395
}

tests/ui/cast_raw_slice_pointer_cast.fixed

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,36 +6,36 @@ fn main() {
66
let mut vec = vec![0u8; 1];
77
let ptr: *const u8 = vec.as_ptr();
88
let mptr = vec.as_mut_ptr();
9-
let _: *const [u8] = unsafe { core::ptr::slice_from_raw_parts(ptr, 1) };
9+
let _: *const [u8] = unsafe { std::ptr::slice_from_raw_parts(ptr, 1) };
1010
//~^ cast_slice_from_raw_parts
11-
let _: *const [u8] = unsafe { core::ptr::slice_from_raw_parts_mut(mptr, 1) };
11+
let _: *const [u8] = unsafe { std::ptr::slice_from_raw_parts_mut(mptr, 1) };
1212
//~^ cast_slice_from_raw_parts
13-
let _: *const [u8] = core::ptr::slice_from_raw_parts(ptr, 1);
13+
let _: *const [u8] = std::ptr::slice_from_raw_parts(ptr, 1);
1414
//~^ cast_slice_from_raw_parts
1515
{
1616
use core::slice;
17-
let _: *const [u8] = core::ptr::slice_from_raw_parts(ptr, 1);
17+
let _: *const [u8] = std::ptr::slice_from_raw_parts(ptr, 1);
1818
//~^ cast_slice_from_raw_parts
1919
use slice as one;
20-
let _: *const [u8] = core::ptr::slice_from_raw_parts(ptr, 1);
20+
let _: *const [u8] = std::ptr::slice_from_raw_parts(ptr, 1);
2121
//~^ cast_slice_from_raw_parts
2222
}
2323
{
2424
use std::slice;
25-
let _: *const [u8] = core::ptr::slice_from_raw_parts(ptr, 1);
25+
let _: *const [u8] = std::ptr::slice_from_raw_parts(ptr, 1);
2626
//~^ cast_slice_from_raw_parts
2727
use slice as one;
28-
let _: *const [u8] = core::ptr::slice_from_raw_parts(ptr, 1);
28+
let _: *const [u8] = std::ptr::slice_from_raw_parts(ptr, 1);
2929
//~^ cast_slice_from_raw_parts
3030
}
3131

3232
// implicit cast
3333
{
34-
let _: *const [u8] = unsafe { core::ptr::slice_from_raw_parts(ptr, 1) };
34+
let _: *const [u8] = unsafe { std::ptr::slice_from_raw_parts(ptr, 1) };
3535
//~^ cast_slice_from_raw_parts
36-
let _: *mut [u8] = unsafe { core::ptr::slice_from_raw_parts_mut(mptr, 1) };
36+
let _: *mut [u8] = unsafe { std::ptr::slice_from_raw_parts_mut(mptr, 1) };
3737
//~^ cast_slice_from_raw_parts
38-
require_raw_slice_ptr(unsafe { core::ptr::slice_from_raw_parts(ptr, 1) });
38+
require_raw_slice_ptr(unsafe { std::ptr::slice_from_raw_parts(ptr, 1) });
3939
//~^ cast_slice_from_raw_parts
4040
}
4141

tests/ui/cast_raw_slice_pointer_cast.stderr

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ error: casting the result of `from_raw_parts` to *const [u8]
22
--> tests/ui/cast_raw_slice_pointer_cast.rs:9:35
33
|
44
LL | let _: *const [u8] = unsafe { std::slice::from_raw_parts(ptr, 1) as *const [u8] };
5-
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace with: `core::ptr::slice_from_raw_parts(ptr, 1)`
5+
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace with: `std::ptr::slice_from_raw_parts(ptr, 1)`
66
|
77
= note: `-D clippy::cast-slice-from-raw-parts` implied by `-D warnings`
88
= help: to override `-D warnings` add `#[allow(clippy::cast_slice_from_raw_parts)]`
@@ -11,55 +11,55 @@ error: casting the result of `from_raw_parts_mut` to *mut [u8]
1111
--> tests/ui/cast_raw_slice_pointer_cast.rs:11:35
1212
|
1313
LL | let _: *const [u8] = unsafe { std::slice::from_raw_parts_mut(mptr, 1) as *mut [u8] };
14-
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace with: `core::ptr::slice_from_raw_parts_mut(mptr, 1)`
14+
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace with: `std::ptr::slice_from_raw_parts_mut(mptr, 1)`
1515

1616
error: casting the result of `from_raw_parts` to *const [u8]
1717
--> tests/ui/cast_raw_slice_pointer_cast.rs:13:26
1818
|
1919
LL | let _: *const [u8] = unsafe { std::slice::from_raw_parts(ptr, 1) } as *const [u8];
20-
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace with: `core::ptr::slice_from_raw_parts(ptr, 1)`
20+
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace with: `std::ptr::slice_from_raw_parts(ptr, 1)`
2121

2222
error: casting the result of `from_raw_parts` to *const [u8]
2323
--> tests/ui/cast_raw_slice_pointer_cast.rs:17:30
2424
|
2525
LL | let _: *const [u8] = unsafe { slice::from_raw_parts(ptr, 1) } as *const [u8];
26-
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace with: `core::ptr::slice_from_raw_parts(ptr, 1)`
26+
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace with: `std::ptr::slice_from_raw_parts(ptr, 1)`
2727

2828
error: casting the result of `from_raw_parts` to *const [u8]
2929
--> tests/ui/cast_raw_slice_pointer_cast.rs:20:30
3030
|
3131
LL | let _: *const [u8] = unsafe { one::from_raw_parts(ptr, 1) } as *const [u8];
32-
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace with: `core::ptr::slice_from_raw_parts(ptr, 1)`
32+
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace with: `std::ptr::slice_from_raw_parts(ptr, 1)`
3333

3434
error: casting the result of `from_raw_parts` to *const [u8]
3535
--> tests/ui/cast_raw_slice_pointer_cast.rs:25:30
3636
|
3737
LL | let _: *const [u8] = unsafe { slice::from_raw_parts(ptr, 1) } as *const [u8];
38-
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace with: `core::ptr::slice_from_raw_parts(ptr, 1)`
38+
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace with: `std::ptr::slice_from_raw_parts(ptr, 1)`
3939

4040
error: casting the result of `from_raw_parts` to *const [u8]
4141
--> tests/ui/cast_raw_slice_pointer_cast.rs:28:30
4242
|
4343
LL | let _: *const [u8] = unsafe { one::from_raw_parts(ptr, 1) } as *const [u8];
44-
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace with: `core::ptr::slice_from_raw_parts(ptr, 1)`
44+
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace with: `std::ptr::slice_from_raw_parts(ptr, 1)`
4545

4646
error: implicitly casting the result of `from_raw_parts` to `*const [u8]`
4747
--> tests/ui/cast_raw_slice_pointer_cast.rs:34:39
4848
|
4949
LL | let _: *const [u8] = unsafe { std::slice::from_raw_parts(ptr, 1) };
50-
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace_with: `core::ptr::slice_from_raw_parts(ptr, 1)`
50+
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace_with: `std::ptr::slice_from_raw_parts(ptr, 1)`
5151

5252
error: implicitly casting the result of `from_raw_parts_mut` to `*mut [u8]`
5353
--> tests/ui/cast_raw_slice_pointer_cast.rs:36:37
5454
|
5555
LL | let _: *mut [u8] = unsafe { std::slice::from_raw_parts_mut(mptr, 1) };
56-
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace_with: `core::ptr::slice_from_raw_parts_mut(mptr, 1)`
56+
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace_with: `std::ptr::slice_from_raw_parts_mut(mptr, 1)`
5757

5858
error: implicitly casting the result of `from_raw_parts` to `*const [u8]`
5959
--> tests/ui/cast_raw_slice_pointer_cast.rs:38:40
6060
|
6161
LL | require_raw_slice_ptr(unsafe { std::slice::from_raw_parts(ptr, 1) });
62-
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace_with: `core::ptr::slice_from_raw_parts(ptr, 1)`
62+
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace_with: `std::ptr::slice_from_raw_parts(ptr, 1)`
6363

6464
error: implicitly casting the result of `from_raw_parts` to `*const [u8]`
6565
--> tests/ui/cast_raw_slice_pointer_cast.rs:46:39
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
#![warn(clippy::cast_slice_from_raw_parts)]
2+
#![no_std]
3+
#![crate_type = "lib"]
4+
5+
const fn require_raw_slice_ptr<T>(_: *const [T]) {}
6+
7+
fn main() {
8+
let mut arr = [0u8; 1];
9+
let ptr: *const u8 = arr.as_ptr();
10+
let mptr = arr.as_mut_ptr();
11+
let _: *const [u8] = unsafe { core::ptr::slice_from_raw_parts(ptr, 1) };
12+
//~^ cast_slice_from_raw_parts
13+
let _: *const [u8] = unsafe { core::ptr::slice_from_raw_parts_mut(mptr, 1) };
14+
//~^ cast_slice_from_raw_parts
15+
let _: *const [u8] = core::ptr::slice_from_raw_parts(ptr, 1);
16+
//~^ cast_slice_from_raw_parts
17+
{
18+
use core::slice;
19+
let _: *const [u8] = core::ptr::slice_from_raw_parts(ptr, 1);
20+
//~^ cast_slice_from_raw_parts
21+
use slice as one;
22+
let _: *const [u8] = core::ptr::slice_from_raw_parts(ptr, 1);
23+
//~^ cast_slice_from_raw_parts
24+
}
25+
{
26+
use core::slice;
27+
let _: *const [u8] = core::ptr::slice_from_raw_parts(ptr, 1);
28+
//~^ cast_slice_from_raw_parts
29+
use slice as one;
30+
let _: *const [u8] = core::ptr::slice_from_raw_parts(ptr, 1);
31+
//~^ cast_slice_from_raw_parts
32+
}
33+
34+
// implicit cast
35+
{
36+
let _: *const [u8] = unsafe { core::ptr::slice_from_raw_parts(ptr, 1) };
37+
//~^ cast_slice_from_raw_parts
38+
let _: *mut [u8] = unsafe { core::ptr::slice_from_raw_parts_mut(mptr, 1) };
39+
//~^ cast_slice_from_raw_parts
40+
require_raw_slice_ptr(unsafe { core::ptr::slice_from_raw_parts(ptr, 1) });
41+
//~^ cast_slice_from_raw_parts
42+
}
43+
44+
// implicit cast in const context
45+
const {
46+
const PTR: *const u8 = core::ptr::null();
47+
const MPTR: *mut u8 = core::ptr::null_mut();
48+
let _: *const [u8] = unsafe { core::ptr::slice_from_raw_parts(PTR, 1) };
49+
//~^ cast_slice_from_raw_parts
50+
let _: *mut [u8] = unsafe { core::ptr::slice_from_raw_parts_mut(MPTR, 1) };
51+
//~^ cast_slice_from_raw_parts
52+
require_raw_slice_ptr(unsafe { core::ptr::slice_from_raw_parts(PTR, 1) });
53+
//~^ cast_slice_from_raw_parts
54+
};
55+
}
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
#![warn(clippy::cast_slice_from_raw_parts)]
2+
#![no_std]
3+
#![crate_type = "lib"]
4+
5+
const fn require_raw_slice_ptr<T>(_: *const [T]) {}
6+
7+
fn main() {
8+
let mut arr = [0u8; 1];
9+
let ptr: *const u8 = arr.as_ptr();
10+
let mptr = arr.as_mut_ptr();
11+
let _: *const [u8] = unsafe { core::slice::from_raw_parts(ptr, 1) as *const [u8] };
12+
//~^ cast_slice_from_raw_parts
13+
let _: *const [u8] = unsafe { core::slice::from_raw_parts_mut(mptr, 1) as *mut [u8] };
14+
//~^ cast_slice_from_raw_parts
15+
let _: *const [u8] = unsafe { core::slice::from_raw_parts(ptr, 1) } as *const [u8];
16+
//~^ cast_slice_from_raw_parts
17+
{
18+
use core::slice;
19+
let _: *const [u8] = unsafe { slice::from_raw_parts(ptr, 1) } as *const [u8];
20+
//~^ cast_slice_from_raw_parts
21+
use slice as one;
22+
let _: *const [u8] = unsafe { one::from_raw_parts(ptr, 1) } as *const [u8];
23+
//~^ cast_slice_from_raw_parts
24+
}
25+
{
26+
use core::slice;
27+
let _: *const [u8] = unsafe { slice::from_raw_parts(ptr, 1) } as *const [u8];
28+
//~^ cast_slice_from_raw_parts
29+
use slice as one;
30+
let _: *const [u8] = unsafe { one::from_raw_parts(ptr, 1) } as *const [u8];
31+
//~^ cast_slice_from_raw_parts
32+
}
33+
34+
// implicit cast
35+
{
36+
let _: *const [u8] = unsafe { core::slice::from_raw_parts(ptr, 1) };
37+
//~^ cast_slice_from_raw_parts
38+
let _: *mut [u8] = unsafe { core::slice::from_raw_parts_mut(mptr, 1) };
39+
//~^ cast_slice_from_raw_parts
40+
require_raw_slice_ptr(unsafe { core::slice::from_raw_parts(ptr, 1) });
41+
//~^ cast_slice_from_raw_parts
42+
}
43+
44+
// implicit cast in const context
45+
const {
46+
const PTR: *const u8 = core::ptr::null();
47+
const MPTR: *mut u8 = core::ptr::null_mut();
48+
let _: *const [u8] = unsafe { core::slice::from_raw_parts(PTR, 1) };
49+
//~^ cast_slice_from_raw_parts
50+
let _: *mut [u8] = unsafe { core::slice::from_raw_parts_mut(MPTR, 1) };
51+
//~^ cast_slice_from_raw_parts
52+
require_raw_slice_ptr(unsafe { core::slice::from_raw_parts(PTR, 1) });
53+
//~^ cast_slice_from_raw_parts
54+
};
55+
}
Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
error: casting the result of `from_raw_parts` to *const [u8]
2+
--> tests/ui/cast_raw_slice_pointer_cast_no_std.rs:11:35
3+
|
4+
LL | let _: *const [u8] = unsafe { core::slice::from_raw_parts(ptr, 1) as *const [u8] };
5+
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace with: `core::ptr::slice_from_raw_parts(ptr, 1)`
6+
|
7+
= note: `-D clippy::cast-slice-from-raw-parts` implied by `-D warnings`
8+
= help: to override `-D warnings` add `#[allow(clippy::cast_slice_from_raw_parts)]`
9+
10+
error: casting the result of `from_raw_parts_mut` to *mut [u8]
11+
--> tests/ui/cast_raw_slice_pointer_cast_no_std.rs:13:35
12+
|
13+
LL | let _: *const [u8] = unsafe { core::slice::from_raw_parts_mut(mptr, 1) as *mut [u8] };
14+
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace with: `core::ptr::slice_from_raw_parts_mut(mptr, 1)`
15+
16+
error: casting the result of `from_raw_parts` to *const [u8]
17+
--> tests/ui/cast_raw_slice_pointer_cast_no_std.rs:15:26
18+
|
19+
LL | let _: *const [u8] = unsafe { core::slice::from_raw_parts(ptr, 1) } as *const [u8];
20+
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace with: `core::ptr::slice_from_raw_parts(ptr, 1)`
21+
22+
error: casting the result of `from_raw_parts` to *const [u8]
23+
--> tests/ui/cast_raw_slice_pointer_cast_no_std.rs:19:30
24+
|
25+
LL | let _: *const [u8] = unsafe { slice::from_raw_parts(ptr, 1) } as *const [u8];
26+
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace with: `core::ptr::slice_from_raw_parts(ptr, 1)`
27+
28+
error: casting the result of `from_raw_parts` to *const [u8]
29+
--> tests/ui/cast_raw_slice_pointer_cast_no_std.rs:22:30
30+
|
31+
LL | let _: *const [u8] = unsafe { one::from_raw_parts(ptr, 1) } as *const [u8];
32+
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace with: `core::ptr::slice_from_raw_parts(ptr, 1)`
33+
34+
error: casting the result of `from_raw_parts` to *const [u8]
35+
--> tests/ui/cast_raw_slice_pointer_cast_no_std.rs:27:30
36+
|
37+
LL | let _: *const [u8] = unsafe { slice::from_raw_parts(ptr, 1) } as *const [u8];
38+
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace with: `core::ptr::slice_from_raw_parts(ptr, 1)`
39+
40+
error: casting the result of `from_raw_parts` to *const [u8]
41+
--> tests/ui/cast_raw_slice_pointer_cast_no_std.rs:30:30
42+
|
43+
LL | let _: *const [u8] = unsafe { one::from_raw_parts(ptr, 1) } as *const [u8];
44+
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace with: `core::ptr::slice_from_raw_parts(ptr, 1)`
45+
46+
error: implicitly casting the result of `from_raw_parts` to `*const [u8]`
47+
--> tests/ui/cast_raw_slice_pointer_cast_no_std.rs:36:39
48+
|
49+
LL | let _: *const [u8] = unsafe { core::slice::from_raw_parts(ptr, 1) };
50+
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace_with: `core::ptr::slice_from_raw_parts(ptr, 1)`
51+
52+
error: implicitly casting the result of `from_raw_parts_mut` to `*mut [u8]`
53+
--> tests/ui/cast_raw_slice_pointer_cast_no_std.rs:38:37
54+
|
55+
LL | let _: *mut [u8] = unsafe { core::slice::from_raw_parts_mut(mptr, 1) };
56+
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace_with: `core::ptr::slice_from_raw_parts_mut(mptr, 1)`
57+
58+
error: implicitly casting the result of `from_raw_parts` to `*const [u8]`
59+
--> tests/ui/cast_raw_slice_pointer_cast_no_std.rs:40:40
60+
|
61+
LL | require_raw_slice_ptr(unsafe { core::slice::from_raw_parts(ptr, 1) });
62+
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace_with: `core::ptr::slice_from_raw_parts(ptr, 1)`
63+
64+
error: implicitly casting the result of `from_raw_parts` to `*const [u8]`
65+
--> tests/ui/cast_raw_slice_pointer_cast_no_std.rs:48:39
66+
|
67+
LL | let _: *const [u8] = unsafe { core::slice::from_raw_parts(PTR, 1) };
68+
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace_with: `core::ptr::slice_from_raw_parts(PTR, 1)`
69+
70+
error: implicitly casting the result of `from_raw_parts_mut` to `*mut [u8]`
71+
--> tests/ui/cast_raw_slice_pointer_cast_no_std.rs:50:37
72+
|
73+
LL | let _: *mut [u8] = unsafe { core::slice::from_raw_parts_mut(MPTR, 1) };
74+
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace_with: `core::ptr::slice_from_raw_parts_mut(MPTR, 1)`
75+
76+
error: implicitly casting the result of `from_raw_parts` to `*const [u8]`
77+
--> tests/ui/cast_raw_slice_pointer_cast_no_std.rs:52:40
78+
|
79+
LL | require_raw_slice_ptr(unsafe { core::slice::from_raw_parts(PTR, 1) });
80+
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace_with: `core::ptr::slice_from_raw_parts(PTR, 1)`
81+
82+
error: aborting due to 13 previous errors
83+

0 commit comments

Comments
 (0)