This repository was archived by the owner on May 28, 2025. It is now read-only.
File tree Expand file tree Collapse file tree 3 files changed +76
-0
lines changed
tests/ui/transmutability/alignment Expand file tree Collapse file tree 3 files changed +76
-0
lines changed Original file line number Diff line number Diff line change 1+ // check-fail
2+ #![ feature( transmutability) ]
3+
4+ mod assert {
5+ use std:: mem:: { Assume , BikeshedIntrinsicFrom } ;
6+ pub struct Context ;
7+
8+ pub fn is_maybe_transmutable < Src , Dst > ( )
9+ where
10+ Dst : BikeshedIntrinsicFrom < Src , Context , {
11+ Assume {
12+ alignment : false ,
13+ lifetimes : true ,
14+ safety : true ,
15+ validity : true ,
16+ }
17+ } >
18+ { }
19+ }
20+
21+ fn main ( ) {
22+ assert:: is_maybe_transmutable :: < & ' static [ u8 ; 0 ] , & ' static [ u16 ; 0 ] > ( ) ; //~ ERROR `&[u8; 0]` cannot be safely transmuted into `&[u16; 0]`
23+ }
Original file line number Diff line number Diff line change 1+ error[E0277]: `&[u8; 0]` cannot be safely transmuted into `&[u16; 0]` in the defining scope of `assert::Context`
2+ --> $DIR/align-fail.rs:22:55
3+ |
4+ LL | ...tatic [u8; 0], &'static [u16; 0]>();
5+ | ^^^^^^^^^^^^^^^^^ The alignment of `&[u8; 0]` should be stricter than that of `&[u16; 0]`, but it is not
6+ |
7+ note: required by a bound in `is_maybe_transmutable`
8+ --> $DIR/align-fail.rs:10:14
9+ |
10+ LL | pub fn is_maybe_transmutable<Src, Dst>()
11+ | --------------------- required by a bound in this function
12+ LL | where
13+ LL | Dst: BikeshedIntrinsicFrom<Src, Context, {
14+ | ______________^
15+ LL | | Assume {
16+ LL | | alignment: false,
17+ LL | | lifetimes: true,
18+ ... |
19+ LL | | }
20+ LL | | }>
21+ | |__________^ required by this bound in `is_maybe_transmutable`
22+ help: consider removing the leading `&`-reference
23+ |
24+ LL - assert::is_maybe_transmutable::<&'static [u8; 0], &'static [u16; 0]>();
25+ LL + assert::is_maybe_transmutable::<&'static [u8; 0], [u16; 0]>();
26+ |
27+
28+ error: aborting due to previous error
29+
30+ For more information about this error, try `rustc --explain E0277`.
Original file line number Diff line number Diff line change 1+ // check-pass
2+ #![ feature( transmutability) ]
3+
4+ mod assert {
5+ use std:: mem:: { Assume , BikeshedIntrinsicFrom } ;
6+ pub struct Context ;
7+
8+ pub fn is_maybe_transmutable < Src , Dst > ( )
9+ where
10+ Dst : BikeshedIntrinsicFrom < Src , Context , {
11+ Assume {
12+ alignment : false ,
13+ lifetimes : false ,
14+ safety : true ,
15+ validity : false ,
16+ }
17+ } >
18+ { }
19+ }
20+
21+ fn main ( ) {
22+ assert:: is_maybe_transmutable :: < & ' static [ u16 ; 0 ] , & ' static [ u8 ; 0 ] > ( ) ;
23+ }
You can’t perform that action at this time.
0 commit comments