を使用している場合たぶん、これは正常な動作です、誰かがこれで私を助けることができるI32が見つかりました:期待ブール値は、オペレータ%
trait Flujo<T: std::clone::Clone> {
fn filter<F: Fn(T)->bool>(&self, prot: F);
}
impl<T: std::clone::Clone> Flujo<T> for Test<T> {
fn filter<F: Fn(T)->bool>(&self, prot: F){
..//
}
}
この単純なテストは
test.filter(|x| -> bool{
true
});
が、私がしようとする作品にこの
test.filter(|x| -> bool{
//return x % 2 ? true : false;
if x % 2 { <-- Error
return true;
} else{
return false;
}
});
エラー:
mismatched types:
expected `bool`,
found `i32` [E0308]
if value % 2 {
^~~~~~~~~
私は検索と読みますが、2番目のリンクはかなり理解していない、これが失敗した理由を誰かが私に説明することができます。
https://doc.rust-lang.org/reference.html#arithmetic-operators
https://doc.rust-lang.org/std/ops/trait.Rem.html
更新:
あなたがこのテストで見ることができ、それは同じコードではありませんが、同じエラーが得られる:
まあエラーが無い、かなり明確なのですか? '%'は 'bool'ではなく' i32'を返します。単純に '== 0'または' == 1'を追加してブール式を使用するだけですか?どのようにコンパイラの診断がより簡単になるかわからない –
@VeronikaPrüsselsあなたは絶対に正しいです、それは申し訳ありませんが、彼を見ていない私はより多くのテストをしなければならなかった、と私はおそらく他のものの影響を分析していないhttp://ideone.com/LHtu8p –