我试图获得一段Rust通用代码进行编译,并且在进行修复之后将其缩小到此代码编译失败的范围。我不确定这到底是什么(E0308对我没什么帮助) - 我一定是在遗漏一些傻事:
fn is_fail<bool>() -> bool { false }
fn main(){
let failure:bool = is_fail();
//if ! failure {
println!("{}", failure);
//}
}
错误是:
error: mismatched types [--explain E0308]
--> <anon>:1:30
1 |> fn is_fail<bool>() -> bool { false }
|> ^^^^^ expected type parameter, found bool
note: expected type `bool`
note: found type `bool`
答案 0 :(得分:2)
在函数中,类型参数bool
会隐藏内置类型bool
。所以你的函数声明与
fn is_fail<T>() -> T { false }
显然不是很好的类型。