Rust:提供默认值时“无法推断 const 参数的值”

phi*_*611 5 rust

我为 const 泛型类型提供默认值,但 Rust 编译器告诉我它“无法推断 const 参数的值”。似乎忽略了默认值。我使用这个功能有错吗?这是它应该如何工作的吗?那么为什么要使用默认值呢?我用的是每晚1.60。

const DEFAULT_N: usize = 73;

struct Foo<const N: usize = DEFAULT_N>;

impl<const N: usize> Foo<N> {
    fn new() -> Self {
        println!("N is: {}", N);
        Self
    }
}

fn main() {
    Foo::new();
}
Run Code Online (Sandbox Code Playgroud)

Pet*_*bit 4

我让它像这样工作

const DEFAULT_N: usize = 73;

struct Foo<const N: usize = DEFAULT_N>;

impl<const N: usize> Foo<N> {
    fn new() -> Self {
        println!("N is: {}", N);
        Self
    }
}

fn main() {
    let f:Foo = Foo::new(); // just added the asked type annotation here
}

Run Code Online (Sandbox Code Playgroud)