Const Generics ermöglichen die Verwendung von Konstanten als Typparameter und ermöglichen so Typen, die zur Kompilierzeit parametrisiert sind. Im Gegensatz zu C++-Templates mit Nicht-Typ-Parametern validiert Rust alle const-generic Grenzen zur Kompilierzeit. Dies ist besonders leistungsstark für Zero-Cost Abstraktionen bei Array-Handhabung, vermeidet Heap-Allokationen und ermöglicht dem Compiler eine vollständige Optimierung des Codes. Das Matrix-Beispiel zeigt, wie man eine generische Struktur für Arrays fester Größe erstellt, bei der Dimensionen Teil der Typsignatur sind, was es unmöglich macht, zur Kompilierzeit mismatched Matrix-Operationen zu erstellen.
use std::fmt::Display;struct Matrix<T, const ROWS: usize, const COLS: usize> {data: [[T; COLS]; ROWS],}impl<T: Default + Copy, const ROWS: usize, const COLS: usize> Matrix<T, ROWS, COLS> {fn new() -> Self {Self { data: [[T::default(); COLS]; ROWS] }}fn get(&self, row: usize, col: usize) -> Option<&T> {if row < ROWS && col < COLS {Some(&self.data[row][col])} else {None}}}fn main() {let mat: Matrix<i32, 3, 4> = Matrix::new();println!("{:?}", mat.get(1, 2));}