三行代码  ›  专栏  ›  技术社区  ›  Margareth Reena

如果'ChunksMut'永远不是'Clone',为什么存在'cycle()'方法`

  •  1
  • Margareth Reena  · 技术社区  · 5 天前

    这个 https://doc.rust-lang.org/std/slice/struct.ChunksMut.html https://doc.rust-lang.org/std/iter/struct.Cycle.html#method.cycle Self: Clone

    然而 ChunksMut 不执行 Clone ,因此我不能这样做:

    fn main() {
        let a = &[1,2,3,4,5,6];
        let mut chunks = a.chunks_mut(2);
        let cycle = chunks.cycle();
        for c in cycle {
            
        }
    }
    

    为什么 cycle() 方法存在,如果 黑穗病 Clone?

    1 回复  |  直到 5 天前
        1
  •  3
  •   Abdul Niyas P M    5 天前

    ChunksMut implements the Iterator trait .

    impl<'a, T> Iterator for ChunksMut<'a, T>
    

    impl 迭代器 特性 黑穗病 所有的特征方法都必须得到实施和验证 cycle is one among them

    fn cycle(self) -> Cycle<Self>
    where
        Self: Clone, 
    

    例如,以下代码将不会编译,因为 SampleStruct 不执行 SampleTrait

    pub trait SampleTrait {
        fn trait_method_one(&self) -> String;
        fn trait_method_two(&self) -> String;
    }
    
    pub struct SampleStruct;
    
    impl SampleTrait for SampleStruct {}
    
    fn main() {}
    

    not all trait items implemented, missing: `trait_method_one`, `trait_method_two`