gpt4 book ai didi

rust - 错误 : unable to infer enough type information about `_` ; type annotations required

转载 作者:行者123 更新时间:2023-11-29 08:08:09 25 4
gpt4 key购买 nike

我在尝试编译这段代码时遇到了一个奇怪的错误:

pub trait ValueGiver<T> {
fn give(_: Option<Self>) -> T;
}

struct m;

impl<f64> ValueGiver<f64> for m {
fn give(_:Option<m>) -> f64 {
0.5f64
}
}

fn main() {
let y : f64 = ValueGiver::give(None::<m>);
}

playpen

(选项部分是调用静态特征方法的技巧)

我明白了:

c.rs:64:5: 68:6 error: unable to infer enough type information about `_`; type annotations required
c.rs:64 impl<f64> ValueGiver<f64> for m {
c.rs:65 fn give(_:Option<m>) -> f64 {
c.rs:66 0.5f64
c.rs:67 }
c.rs:68 }

不知道哪部分推理不清楚,报错信息帮助不大

最佳答案

替换impl<f64>只有 impl . 你不想要一个通用的 impl,你想要一个特定的 impl。你会写 impl<T> 定义类型参数,您稍后可以在 impl 中使用这些参数;你在这里不需要那个。

当你写 impl<f64> , 这个f64被解释为类型参数。但是,所有其他出现的 f64在 impl 中被解释为 f64关键字,指定原语 f64类型。编译器提示是因为它无法为 f64 推断具体类型类型参数。

如果我们替换 impl<f64>impl<T> , we get the same error .

关于rust - 错误 : unable to infer enough type information about `_` ; type annotations required,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27218117/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com