Skip to content

Commit bec28f7

Browse files
committed
a bit more rust idiomatic code
1 parent 96e086f commit bec28f7

File tree

1 file changed

+10
-15
lines changed

1 file changed

+10
-15
lines changed

rust/cubeorchestrator/src/cubestore_message_parser.rs

Lines changed: 10 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ pub enum ParseError {
66
UnsupportedCommand,
77
EmptyResultSet,
88
NullRow,
9-
ColumnValueMissed,
109
ColumnNameNotDefined,
1110
FlatBufferError,
1211
ErrorMessage(String),
@@ -18,7 +17,6 @@ impl std::fmt::Display for ParseError {
1817
ParseError::UnsupportedCommand => write!(f, "Unsupported command"),
1918
ParseError::EmptyResultSet => write!(f, "Empty resultSet"),
2019
ParseError::NullRow => write!(f, "Null row"),
21-
ParseError::ColumnValueMissed => write!(f, "Column value missed"),
2220
ParseError::ColumnNameNotDefined => write!(f, "Column name is not defined"),
2321
ParseError::FlatBufferError => write!(f, "FlatBuffer parsing error"),
2422
ParseError::ErrorMessage(msg) => write!(f, "Error: {}", msg),
@@ -50,27 +48,24 @@ pub fn parse_cubestore_ws_result(
5048
.ok_or(ParseError::EmptyResultSet)?;
5149

5250
let result_set_columns = result_set.columns().ok_or(ParseError::EmptyResultSet)?;
53-
let columns_len = result_set_columns.len();
54-
let mut columns = Vec::with_capacity(columns_len);
5551

56-
for column in result_set_columns.iter() {
57-
if column.is_empty() {
58-
return Err(ParseError::ColumnNameNotDefined);
59-
}
60-
columns.push(column);
52+
if result_set_columns.iter().any(|c| c.is_empty()) {
53+
return Err(ParseError::ColumnNameNotDefined);
6154
}
6255

6356
let result_set_rows = result_set.rows().ok_or(ParseError::EmptyResultSet)?;
6457
let mut result = Vec::with_capacity(result_set_rows.len());
6558

6659
for row in result_set_rows.iter() {
6760
let values = row.values().ok_or(ParseError::NullRow)?;
68-
let mut row_obj = HashMap::with_capacity(columns_len);
69-
70-
for (i, val) in values.iter().enumerate() {
71-
let value = val.string_value().ok_or(ParseError::ColumnValueMissed)?;
72-
row_obj.insert(columns[i], value);
73-
}
61+
let row_obj: HashMap<_, _> = result_set_columns
62+
.iter()
63+
.zip(values.iter())
64+
.map(|(col, val)| {
65+
let value = val.string_value().unwrap_or("");
66+
(col, value)
67+
})
68+
.collect();
7469

7570
result.push(row_obj);
7671
}

0 commit comments

Comments
 (0)