const 泛型
学习目标
- 理解 const 泛型的用途
- 掌握 const 参数语法
- 实现固定大小数组的泛型
核心概念
基本语法
struct Array<T, const N: usize> {
data: [T; N],
}
impl<T, const N: usize> Array<T, N> {
fn len(&self) -> usize {
N
}
}
fn main() {
let arr = Array { data: [1, 2, 3] };
println!("长度: {}", arr.len());
}
函数中的 const 泛型
fn first_n<const N: usize>(arr: &[i32]) -> [i32; N] {
let mut result = [0; N];
for i in 0..N {
result[i] = arr[i];
}
result
}
fn main() {
let data = [1, 2, 3, 4, 5];
let first_three: [i32; 3] = first_n(&data);
println!("{:?}", first_three);
}
const 表达式
fn main() {
const fn factorial(n: usize) -> usize {
match n {
0 | 1 => 1,
_ => n * factorial(n - 1),
}
}
const N: usize = factorial(5);
let arr = [0; N];
}
小结
| 语法 | 用途 |
|---|
const N: usize | const 泛型参数 |
[T; N] | 固定大小数组 |
const fn | 编译期函数 |