//@ run-rustfix #![allow(unused_mut)] #![allow(dead_code)] pub trait Layer { fn process(&mut self) -> u32; } pub struct State { layers: Vec>, } impl State { pub fn process(&mut self) -> u32 { self.layers.iter().fold(0, |result, mut layer| result + layer.process()) //~^ ERROR cannot borrow `**layer` as mutable, as it is behind a `&` reference } } fn main() {}