¿Cómo definir una función con una matriz genérica de longitud fija?

Realice una operación en matrices, cuadrando la longitud, por ejemplo.

Es útil tener un tipo genérico (comof32, f64), pero también es posible que desee una longitud genérica, perono Una longitud dinámica.

Aquí hay un ejemplo de una función al cuadrado que toma 2 argumentos.

use std::ops::{Add, AddAssign, Sub, Mul};

const CAN_THIS_BE_GENERIC: usize = 2;

fn squared_length<T>(
    a: &[T; CAN_THIS_BE_GENERIC],
    b: &[T; CAN_THIS_BE_GENERIC]
) -> T
    where T:
        Copy +
        Add +
        AddAssign +
        Add<Output=T> +
        Sub<Output=T> +
        Mul<Output=T>
{
    let mut d: T = a[0] - a[0];  // zero :(
    for (elem_a, elem_b) in a.iter().zip(b.iter()) {
        let elem_dim: T = *elem_a - *elem_b;
        d += elem_dim * elem_dim;
    }
    return d;
}

fn main() {
    println!("Length A! {}", squared_length::<f64>(&[0.5, 3.5], &[10.0, 0.0]));
    println!("Length B! {}", squared_length::<i32>(&[10, -6], &[4, 8]));
    println!("Length C! {}", squared_length::<f32>(&[-3.0, 0.0], &[9.0, 0.0]));
}

Actualmente la longitud del vector se establece en 2.

¿Es posible definir funciones genéricas donde el tamaño no es dinámico, sino genérico, de la misma manera que los tipos pueden ser genéricos?

Respuestas a la pregunta(2)

Su respuesta a la pregunta