blob: cad06ea4004aff7176e291622f6d2cc3e8b0df45 [file] [log] [blame]
// run-pass
#![feature(const_generics, const_evaluatable_checked)]
#![allow(incomplete_features)]
use std::{mem, ptr};
fn split_first<T, const N: usize>(arr: [T; N]) -> (T, [T; N - 1])
where
[T; N - 1]: Sized,
{
let arr = mem::ManuallyDrop::new(arr);
unsafe {
let head = ptr::read(&arr[0]);
let tail = ptr::read(&arr[1..] as *const [T] as *const [T; N - 1]);
(head, tail)
}
}
fn main() {
let arr = [0, 1, 2, 3, 4];
let (head, tail) = split_first(arr);
assert_eq!(head, 0);
assert_eq!(tail, [1, 2, 3, 4]);
}