]> git.proxmox.com Git - rustc.git/blame - src/test/ui/transmutability/arrays/should_have_correct_length.rs
New upstream version 1.65.0+dfsg1
[rustc.git] / src / test / ui / transmutability / arrays / should_have_correct_length.rs
CommitLineData
064997fb
FG
1// check-pass
2//! An array must have the correct length.
3
4#![crate_type = "lib"]
5#![feature(transmutability)]
6#![allow(dead_code, incomplete_features, non_camel_case_types)]
7
8mod assert {
f2b60f7d 9 use std::mem::{Assume, BikeshedIntrinsicFrom};
064997fb
FG
10 pub struct Context;
11
12 pub fn is_maybe_transmutable<Src, Dst>()
13 where
f2b60f7d 14 Dst: BikeshedIntrinsicFrom<Src, Context, { Assume::SAFETY.and(Assume::VALIDITY) }>
064997fb
FG
15 {}
16}
17
18fn should_have_len_0() {
19 type Array = [u8; 0];
20 #[repr(C)] struct Struct();
21 assert::is_maybe_transmutable::<Array, Struct>();
22 assert::is_maybe_transmutable::<Struct, Array>();
23}
24
25fn should_have_len_1() {
26 type Array = [u8; 1];
27 #[repr(C)] struct Struct(u8);
28 assert::is_maybe_transmutable::<Array, Struct>();
29 assert::is_maybe_transmutable::<Struct, Array>();
30}
31
32fn should_have_len_2() {
33 type Array = [u8; 2];
34 #[repr(C)] struct Struct(u8, u8);
35 assert::is_maybe_transmutable::<Array, Struct>();
36 assert::is_maybe_transmutable::<Struct, Array>();
37}
38
39fn should_have_len_3() {
40 type Array = [u8; 3];
41 #[repr(C)] struct Struct(u8, u8, u8);
42 assert::is_maybe_transmutable::<Array, Struct>();
43 assert::is_maybe_transmutable::<Struct, Array>();
44}