I can't any thread or RFC about such an implementation. It seems to be very simple, so I can't understand why it doesn't exist.
impl<const N: usize, T, U: From<T>> From<[T; N]> for [U; N]
{
fn from(value: [T; N]) -> [U; N] {
// unsure if something with `unsafe` + `MaybeUninit` would be faster
value.map(From::from)
}
}
Here is a playground with impl<const N: usize, T, U: MyFrom<T>> MyFrom<[T; N]> for [U; N]
: Rust Playground