From 7098cee26f7362496ff4159df96382b17f24d239 Mon Sep 17 00:00:00 2001 From: Junfeng Liu Date: Wed, 21 Jul 2021 18:15:14 +0800 Subject: [PATCH] Add transpose() method --- src/lib.rs | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/lib.rs b/src/lib.rs index c2fc7f7..e078ac4 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -624,6 +624,21 @@ impl Grid { pub fn into_vec(self) -> Vec { self.data } + + /// Transpose the grid so that columns become rows in new grid. + pub fn transpose(&self) -> Grid { + let mut data = Vec::with_capacity(self.data.len()); + for c in 0..self.cols { + for r in 0..self.rows { + data.push(self[r][c].clone()); + } + } + Grid { + data, + cols: self.rows, + rows: self.cols, + } + } } impl Clone for Grid {