Skip to content

Commit 07215b2

Browse files
committed
iterator: use let-else
This commit refactors `cass_iterator_*` functions to use let-else syntax for better readability.
1 parent 010eabc commit 07215b2

File tree

1 file changed

+55
-63
lines changed

1 file changed

+55
-63
lines changed

scylla-rust-wrapper/src/iterator.rs

Lines changed: 55 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -768,21 +768,19 @@ pub unsafe extern "C" fn cass_iterator_get_column<'result>(
768768
};
769769

770770
// Defined only for row iterator, for other types should return null
771-
if let CassIteratorInner::Row(row_iterator) = iter {
772-
let iter_position = match row_iterator.position {
773-
Some(pos) => pos,
774-
None => return RefFFI::null(),
775-
};
771+
let CassIteratorInner::Row(row_iterator) = iter else {
772+
return RefFFI::null();
773+
};
776774

777-
let value = match row_iterator.row.columns.get(iter_position) {
778-
Some(col) => col,
779-
None => return RefFFI::null(),
780-
};
775+
let Some(iter_position) = row_iterator.position else {
776+
return RefFFI::null();
777+
};
781778

782-
return RefFFI::as_ptr(value);
783-
}
779+
let Some(value) = row_iterator.row.columns.get(iter_position) else {
780+
return RefFFI::null();
781+
};
784782

785-
RefFFI::null()
783+
RefFFI::as_ptr(value)
786784
}
787785

788786
#[unsafe(no_mangle)]
@@ -929,25 +927,23 @@ pub unsafe extern "C" fn cass_iterator_get_keyspace_meta<'schema>(
929927
return RefFFI::null();
930928
};
931929

932-
if let CassIteratorInner::KeyspacesMeta(schema_meta_iterator) = iter {
933-
let iter_position = match schema_meta_iterator.position {
934-
Some(pos) => pos,
935-
None => return RefFFI::null(),
936-
};
937-
938-
let schema_meta_entry_opt = &schema_meta_iterator
939-
.value
940-
.keyspaces
941-
.iter()
942-
.nth(iter_position);
930+
let CassIteratorInner::KeyspacesMeta(schema_meta_iterator) = iter else {
931+
return RefFFI::null();
932+
};
933+
let Some(iter_position) = schema_meta_iterator.position else {
934+
return RefFFI::null();
935+
};
943936

944-
return match schema_meta_entry_opt {
945-
Some(schema_meta_entry) => RefFFI::as_ptr(schema_meta_entry.1),
946-
None => RefFFI::null(),
947-
};
948-
}
937+
let Some((_keyspace_name, keyspace_meta)) = schema_meta_iterator
938+
.value
939+
.keyspaces
940+
.iter()
941+
.nth(iter_position)
942+
else {
943+
return RefFFI::null();
944+
};
949945

950-
RefFFI::null()
946+
RefFFI::as_ptr(keyspace_meta)
951947
}
952948

953949
#[unsafe(no_mangle)]
@@ -959,25 +955,23 @@ pub unsafe extern "C" fn cass_iterator_get_table_meta<'schema>(
959955
return RefFFI::null();
960956
};
961957

962-
if let CassIteratorInner::TablesMeta(keyspace_meta_iterator) = iter {
963-
let iter_position = match keyspace_meta_iterator.position {
964-
Some(pos) => pos,
965-
None => return RefFFI::null(),
966-
};
967-
968-
let table_meta_entry_opt = keyspace_meta_iterator
969-
.value
970-
.tables
971-
.iter()
972-
.nth(iter_position);
958+
let CassIteratorInner::TablesMeta(keyspace_meta_iterator) = iter else {
959+
return RefFFI::null();
960+
};
961+
let Some(iter_position) = keyspace_meta_iterator.position else {
962+
return RefFFI::null();
963+
};
973964

974-
return match table_meta_entry_opt {
975-
Some(table_meta_entry) => RefFFI::as_ptr(table_meta_entry.1.as_ref()),
976-
None => RefFFI::null(),
977-
};
978-
}
965+
let Some((_table_name, table_meta)) = keyspace_meta_iterator
966+
.value
967+
.tables
968+
.iter()
969+
.nth(iter_position)
970+
else {
971+
return RefFFI::null();
972+
};
979973

980-
RefFFI::null()
974+
RefFFI::as_ptr(table_meta.as_ref())
981975
}
982976

983977
#[unsafe(no_mangle)]
@@ -989,25 +983,23 @@ pub unsafe extern "C" fn cass_iterator_get_user_type<'schema>(
989983
return ArcFFI::null();
990984
};
991985

992-
if let CassIteratorInner::UserTypes(keyspace_meta_iterator) = iter {
993-
let iter_position = match keyspace_meta_iterator.position {
994-
Some(pos) => pos,
995-
None => return ArcFFI::null(),
996-
};
997-
998-
let udt_to_type_entry_opt = keyspace_meta_iterator
999-
.value
1000-
.user_defined_type_data_type
1001-
.iter()
1002-
.nth(iter_position);
986+
let CassIteratorInner::UserTypes(keyspace_meta_iterator) = iter else {
987+
return ArcFFI::null();
988+
};
989+
let Some(iter_position) = keyspace_meta_iterator.position else {
990+
return ArcFFI::null();
991+
};
1003992

1004-
return match udt_to_type_entry_opt {
1005-
Some(udt_to_type_entry) => ArcFFI::as_ptr(udt_to_type_entry.1),
1006-
None => ArcFFI::null(),
1007-
};
1008-
}
993+
let Some((_udt_name, udt_meta)) = keyspace_meta_iterator
994+
.value
995+
.user_defined_type_data_type
996+
.iter()
997+
.nth(iter_position)
998+
else {
999+
return ArcFFI::null();
1000+
};
10091001

1010-
ArcFFI::null()
1002+
ArcFFI::as_ptr(udt_meta)
10111003
}
10121004

10131005
#[unsafe(no_mangle)]

0 commit comments

Comments
 (0)