diff --git a/board/src/piece_sets/mailbox.rs b/board/src/piece_sets/mailbox.rs index ce11cf0..4fc9ec4 100644 --- a/board/src/piece_sets/mailbox.rs +++ b/board/src/piece_sets/mailbox.rs @@ -48,22 +48,20 @@ impl From<[Option; Square::NUM]> for Mailbox { impl FromIterator for Mailbox { fn from_iter>(iter: T) -> Self { - let mut mailbox = Self::new(); - for placed_piece in iter { - mailbox.set(placed_piece.piece(), placed_piece.square()); - } - - mailbox + iter.into_iter() + .fold(Self::new(), |mut mailbox, placed_piece| { + mailbox.set(placed_piece.piece(), placed_piece.square()); + mailbox + }) } } impl FromIterator<(Square, Piece)> for Mailbox { fn from_iter>(iter: T) -> Self { - let mut mailbox = Self::new(); - for (square, piece) in iter { - mailbox.set(piece, square); - } - - mailbox + iter.into_iter() + .fold(Self::new(), |mut mailbox, (square, piece)| { + mailbox.set(piece, square); + mailbox + }) } }