E0107

未匹配的标注

提供的泛型参数数目不正确。

错误代码示例:


struct Foo<T> { x: T }

struct Bar { x: Foo }             // error: 类型参数数目错误:
                                  //        期望 1,获得 0
struct Baz<S, T> { x: Foo<S, T> } // error: 类型参数数目错误:
                                  //        期望 1,获得 2

fn foo<T, U>(x: T, y: U) {}
fn f() {}

fn main() {
    let x: bool = true;
    foo::<bool>(x);                 // error: 类型参数数目错误:
                                    //        期望 2,获得 1
    foo::<bool, i32, i32>(x, 2, 4); // error: 类型参数数目错误:
                                    //        期望 2,获得 3
    f::<'static>();                 // error: 类型参数数目错误:
                                    //        期望 0,获得 1
}

使用/声明具有泛型参数的项时,必须提供完全相同的(泛型参数)数目:


struct Foo<T> { x: T }

struct Bar<T> { x: Foo<T> }               // ok!
struct Baz<S, T> { x: Foo<S>, y: Foo<T> } // ok!

fn foo<T, U>(x: T, y: U) {}
fn f() {}

fn main() {
    let x: bool = true;
    foo::<bool, u32>(x, 12);              // ok!
    f();                                  // ok!
}

本文章首发在 LearnKu.com 网站上。

本译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。
上一篇 下一篇
贡献者:1
讨论数量: 0
发起讨论 只看当前版本


暂无话题~