2016-07-12 3 views
1

私は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` 

答えて

2

タイプパラメータboolは、組み込みタイプboolをシャドウします。したがって、関数の宣言は基本的には全く同じ型ではありません。

fn is_fail<T>() -> T { false } 

明らかに正しく型指定されていません。

+0

まだ同じエラーです。 – sgldiv

+1

はい、それは間違っている理由は明らかです。 'false'はジェネリック型' T'ではありません。 – starblue

+0

はい..タイプ "bool"は、タイプパラメータ "bool"によってシャドーされています! – sgldiv

関連する問題