如何在Rust中引入数组长度的类型参数?

时间:2018-07-14 11:24:27

标签: arrays generics rust

我对Rust中的泛型有一个小问题。我想将Array的长度作为类型参数。

问题:Rust目前支持吗? 该错误消息并不表示缺少功能,而是编程错误。

我想做的事的例子:

fn create_array<C: ConstSize>(){
    let arr = [64; C::SIZE];
    println!("array.len: {:?}", arr.len());
}

pub trait ConstSize {
    const SIZE: usize;
}

带有一些示例实现:

fn main() {
    create_array::<Five>();
}

struct Five {}
impl ConstSize for Five {
    const SIZE: usize = 5;
}

但是编译器告诉我: no associated item named 'SIZE' found for type 'C' in the current scope

但是,以下工作原理:

fn create_array(){
    let arr = [64; Five::SIZE];
    println!("array.len: {:?}", arr.len());
}

See the example on the Rust Playground

感谢您的关注。

1 个答案:

答案 0 :(得分:1)

由于编译器错误(issue #52070),关联常量不能用于指定数组的长度。