MCPcopy Create free account
hub / github.com/devashishdxt/cli-table / transpose

Function transpose

cli-table/src/utils.rs:64–90  ·  view source on GitHub ↗
(v: Vec<Vec<T>>)

Source from the content-addressed store, hash-verified

62}
63
64pub fn transpose<T>(v: Vec<Vec<T>>) -> Vec<Vec<T>> {
65 if v.is_empty() || v[0].is_empty() {
66 return v;
67 }
68
69 let columns = v.len();
70 let height = v[0].len();
71
72 let mut optional_v: Vec<Vec<Option<T>>> = v
73 .into_iter()
74 .map(|cell_v| cell_v.into_iter().map(Some).collect())
75 .collect();
76
77 let mut transpose = Vec::with_capacity(height);
78
79 for i in 0..height {
80 let mut row_buffer = Vec::with_capacity(columns);
81
82 for inner_v in optional_v.iter_mut().take(columns) {
83 row_buffer.push(std::mem::take(&mut inner_v[i]).unwrap());
84 }
85
86 transpose.push(row_buffer);
87 }
88
89 transpose
90}
91
92pub(crate) fn print_horizontal_line(
93 buffers: &mut Buffers<'_>,

Callers 1

buffersMethod · 0.85

Calls 2

into_iterMethod · 0.80
pushMethod · 0.80

Tested by

no test coverage detected