This is an automated email from the ASF dual-hosted git repository.

liurenjie1024 pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/iceberg-rust.git


The following commit(s) were added to refs/heads/main by this push:
     new 213f84e9 Expose length of iterators via ExactSizeIterator (#692)
213f84e9 is described below

commit 213f84e97f97d6e7d9f5f3149b522144a9e56d9d
Author: Christian <[email protected]>
AuthorDate: Mon Nov 11 07:46:32 2024 +0100

    Expose length of iterators via ExactSizeIterator (#692)
---
 crates/iceberg/src/spec/schema.rs         |  2 +-
 crates/iceberg/src/spec/table_metadata.rs | 10 ++++++----
 crates/iceberg/src/spec/values.rs         |  2 +-
 crates/iceberg/src/spec/view_metadata.rs  |  4 ++--
 4 files changed, 10 insertions(+), 8 deletions(-)

diff --git a/crates/iceberg/src/spec/schema.rs 
b/crates/iceberg/src/spec/schema.rs
index cf86874d..eaf1fcc8 100644
--- a/crates/iceberg/src/spec/schema.rs
+++ b/crates/iceberg/src/spec/schema.rs
@@ -358,7 +358,7 @@ impl Schema {
 
     /// Returns [`identifier_field_ids`].
     #[inline]
-    pub fn identifier_field_ids(&self) -> impl Iterator<Item = i32> + '_ {
+    pub fn identifier_field_ids(&self) -> impl ExactSizeIterator<Item = i32> + 
'_ {
         self.identifier_field_ids.iter().copied()
     }
 
diff --git a/crates/iceberg/src/spec/table_metadata.rs 
b/crates/iceberg/src/spec/table_metadata.rs
index 74e69007..daed758c 100644
--- a/crates/iceberg/src/spec/table_metadata.rs
+++ b/crates/iceberg/src/spec/table_metadata.rs
@@ -203,7 +203,7 @@ impl TableMetadata {
 
     /// Returns schemas
     #[inline]
-    pub fn schemas_iter(&self) -> impl Iterator<Item = &SchemaRef> {
+    pub fn schemas_iter(&self) -> impl ExactSizeIterator<Item = &SchemaRef> {
         self.schemas.values()
     }
 
@@ -228,7 +228,9 @@ impl TableMetadata {
 
     /// Returns all partition specs.
     #[inline]
-    pub fn partition_specs_iter(&self) -> impl Iterator<Item = 
&SchemalessPartitionSpecRef> {
+    pub fn partition_specs_iter(
+        &self,
+    ) -> impl ExactSizeIterator<Item = &SchemalessPartitionSpecRef> {
         self.partition_specs.values()
     }
 
@@ -252,7 +254,7 @@ impl TableMetadata {
 
     /// Returns all snapshots
     #[inline]
-    pub fn snapshots(&self) -> impl Iterator<Item = &SnapshotRef> {
+    pub fn snapshots(&self) -> impl ExactSizeIterator<Item = &SnapshotRef> {
         self.snapshots.values()
     }
 
@@ -301,7 +303,7 @@ impl TableMetadata {
 
     /// Return all sort orders.
     #[inline]
-    pub fn sort_orders_iter(&self) -> impl Iterator<Item = &SortOrderRef> {
+    pub fn sort_orders_iter(&self) -> impl ExactSizeIterator<Item = 
&SortOrderRef> {
         self.sort_orders.values()
     }
 
diff --git a/crates/iceberg/src/spec/values.rs 
b/crates/iceberg/src/spec/values.rs
index 3c6e2aa6..552ac497 100644
--- a/crates/iceberg/src/spec/values.rs
+++ b/crates/iceberg/src/spec/values.rs
@@ -1560,7 +1560,7 @@ impl Struct {
     }
 
     /// Create a iterator to read the field in order of field_value.
-    pub fn iter(&self) -> impl Iterator<Item = Option<&Literal>> {
+    pub fn iter(&self) -> impl ExactSizeIterator<Item = Option<&Literal>> {
         self.null_bitmap.iter().zip(self.fields.iter()).map(
             |(null, value)| {
                 if *null {
diff --git a/crates/iceberg/src/spec/view_metadata.rs 
b/crates/iceberg/src/spec/view_metadata.rs
index 741e3864..7c247c17 100644
--- a/crates/iceberg/src/spec/view_metadata.rs
+++ b/crates/iceberg/src/spec/view_metadata.rs
@@ -94,7 +94,7 @@ impl ViewMetadata {
 
     /// Returns all view versions.
     #[inline]
-    pub fn versions(&self) -> impl Iterator<Item = &ViewVersionRef> {
+    pub fn versions(&self) -> impl ExactSizeIterator<Item = &ViewVersionRef> {
         self.versions.values()
     }
 
@@ -114,7 +114,7 @@ impl ViewMetadata {
 
     /// Returns schemas
     #[inline]
-    pub fn schemas_iter(&self) -> impl Iterator<Item = &SchemaRef> {
+    pub fn schemas_iter(&self) -> impl ExactSizeIterator<Item = &SchemaRef> {
         self.schemas.values()
     }
 

Reply via email to