示例为锈:闭包迭代器给出E0308

问题描述 投票:0回答:1

我一直在尝试Rust by Example的书籍代码,但被https://doc.rust-lang.org/stable/rust-by-example/fn/closures/closure_examples/iter_any.html绊倒了>

error[E0308]: mismatched types
  --> Function.rs:81:95
81 |         fn any < F >  ( & mut self , mut f: F ) -> bool where F: FnMut ( Self::Item ) -> bool {}
   |                                                                                               ^^ expected bool, found ()

我正在使用的完整代码段是:

fn closure_iterator_any ( v1a: i32 , v1b: i32 , v1c: i32 , v2a: i32 , v2b: i32 , v2c: i32 )
  {
    pub trait Iterator
      {
        type Item ; // type of item being iterated over
        fn any < F >  ( & mut self , mut f: F ) -> bool where F: FnMut ( Self::Item ) -> bool {}
      }
    let vec1 = vec! [ v1a , v1b , v1c ] ;
    let vec2 = vec! [ v2a , v2b , v2c ] ;
    println! ( "2 in vector 1: {}" , vec1 . iter () . any ( |&x| x == 2 ) ) ; // iter returns &i32
    println! ( "2 in vector 2: {}" , vec2 . into_iter () . any ( |x| x == 2 ) ) ; // into returns i32

    let array1 = [ v1a , v1b , v1c ] ;
    let array2 = [ v2a , v2b , v2c ] ;
    println! ( "2 in array 1: {}" , array1 . iter () . any ( |&x| x == 2 ) ) ;
    println! ( "2 in array 2: {}" , array2 . into_iter () . any ( |&x| x == 2 ) ) ;

  }

我知道有过多的空格,当学习一种新语言时,我想知道我可以在哪里放置空间,而我不能在哪里放置空间。我也不太了解闭包。

[我一直在尝试Rust by Example的书籍代码,但在https://doc.rust-lang.org/stable/rust-by-example/fn/closures/closure_examples/iter_any.html错误时陷入困境[E0308 ]:类型不匹配-> ...

rust
1个回答
0
投票

在示例中,具有特征的部分,

© www.soinside.com 2019 - 2024. All rights reserved.