From 46b19ff616b392af9706d332ec9a80c74a5c3c8c Mon Sep 17 00:00:00 2001 From: Eryn Wells Date: Fri, 2 May 2025 14:48:37 -0700 Subject: [PATCH] [board] Implement Mailbox::from_iter as a reduce (aka fold) over the incoming iterator --- board/src/piece_sets/mailbox.rs | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) 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 + }) } }