I believe this is because of the signature:
pub fn from_fn<T, const N: usize, F>(cb: F) -> [T; N] where F: FnMut(usize) -> T,
I believe this is because of the signature:
While T is unconstrained, N is a usize, which is used in the closure, which we then re-use as the element.