We can use compile-time asserts to check that LEN <= CAP, and then only initialize the first LEN elements. So something like
impl<T, const LEN: usize, const CAP: usize> From<[T; LEN]> for ArrayVec<T, CAP> {
fn from(arr: [T; LEN]) -> Self {
assert!(LEN <= CAP);
// duplicate the rest of From<[T; LEN]> for ArrayVec<T, LEN> here
}
}