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

github-bot pushed a commit to branch gh-pages
in repository https://gitbox.apache.org/repos/asf/iceberg-rust.git


The following commit(s) were added to refs/heads/gh-pages by this push:
     new e01fc415 deploy: 75b41beafd6d2fac4d76d08c740d053d0eb5a0bf
e01fc415 is described below

commit e01fc415218969985d87e13d68a25c5d6359729c
Author: Xuanwo <[email protected]>
AuthorDate: Fri Dec 13 08:38:41 2024 +0000

    deploy: 75b41beafd6d2fac4d76d08c740d053d0eb5a0bf
---
 api/iceberg/arrow/struct.ArrowReader.html        |  2 +-
 api/iceberg/spec/enum.Literal.html               | 66 ++++++++++++------------
 api/iceberg/spec/struct.Datum.html               | 10 ++--
 api/iceberg/spec/struct.Map.html                 | 22 ++++----
 api/iceberg/spec/struct.RawLiteral.html          | 10 ++--
 api/iceberg/spec/struct.Struct.html              | 16 +++---
 api/iceberg/spec/struct.StructValueIntoIter.html |  4 +-
 api/src/iceberg/arrow/reader.rs.html             | 60 ++++++++++++++++++++-
 api/src/iceberg/io/storage.rs.html               | 18 ++++++-
 api/src/iceberg/spec/values.rs.html              |  2 +
 10 files changed, 141 insertions(+), 69 deletions(-)

diff --git a/api/iceberg/arrow/struct.ArrowReader.html 
b/api/iceberg/arrow/struct.ArrowReader.html
index f6276063..74b1f3dd 100644
--- a/api/iceberg/arrow/struct.ArrowReader.html
+++ b/api/iceberg/arrow/struct.ArrowReader.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta 
name="viewport" content="width=device-width, initial-scale=1.0"><meta 
name="generator" content="rustdoc"><meta name="description" content="Reads data 
from Parquet files"><title>ArrowReader in iceberg::arrow - 
Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e49
 [...]
-</div></details><h2 id="implementations" 
class="section-header">Implementations<a href="#implementations" 
class="anchor">§</a></h2><div id="implementations-list"><details class="toggle 
implementors-toggle" open><summary><section id="impl-ArrowReader" 
class="impl"><a class="src rightside" 
href="../../src/iceberg/arrow/reader.rs.html#128-478">source</a><a 
href="#impl-ArrowReader" class="anchor">§</a><h3 class="code-header">impl <a 
class="struct" href="struct.ArrowReader.html" title="struct [...]
+</div></details><h2 id="implementations" 
class="section-header">Implementations<a href="#implementations" 
class="anchor">§</a></h2><div id="implementations-list"><details class="toggle 
implementors-toggle" open><summary><section id="impl-ArrowReader" 
class="impl"><a class="src rightside" 
href="../../src/iceberg/arrow/reader.rs.html#128-506">source</a><a 
href="#impl-ArrowReader" class="anchor">§</a><h3 class="code-header">impl <a 
class="struct" href="struct.ArrowReader.html" title="struct [...]
 Returns a stream of Arrow RecordBatches containing the data from the files</p>
 </div></details></div></details></div><h2 id="trait-implementations" 
class="section-header">Trait Implementations<a href="#trait-implementations" 
class="anchor">§</a></h2><div id="trait-implementations-list"><details 
class="toggle implementors-toggle" open><summary><section 
id="impl-Clone-for-ArrowReader" class="impl"><a class="src rightside" 
href="../../src/iceberg/arrow/reader.rs.html#116">source</a><a 
href="#impl-Clone-for-ArrowReader" class="anchor">§</a><h3 
class="code-header">impl  [...]
     T: 'static + ?<a class="trait" 
href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html"; 
title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div 
class="impl-items"><details class="toggle method-toggle" open><summary><section 
id="method.type_id" class="method trait-impl"><a class="src rightside" 
href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141";>source</a><a 
href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href 
[...]
diff --git a/api/iceberg/spec/enum.Literal.html 
b/api/iceberg/spec/enum.Literal.html
index aca1a337..ebc818d8 100644
--- a/api/iceberg/spec/enum.Literal.html
+++ b/api/iceberg/spec/enum.Literal.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta 
name="viewport" content="width=device-width, initial-scale=1.0"><meta 
name="generator" content="rustdoc"><meta name="description" content="Values 
present in iceberg type"><title>Literal in iceberg::spec - 
Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d3
 [...]
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta 
name="viewport" content="width=device-width, initial-scale=1.0"><meta 
name="generator" content="rustdoc"><meta name="description" content="Values 
present in iceberg type"><title>Literal in iceberg::spec - 
Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d3
 [...]
     Primitive(<a class="enum" href="enum.PrimitiveLiteral.html" title="enum 
iceberg::spec::PrimitiveLiteral">PrimitiveLiteral</a>),
     Struct(<a class="struct" href="struct.Struct.html" title="struct 
iceberg::spec::Struct">Struct</a>),
     List(<a class="struct" 
href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html"; 
title="struct alloc::vec::Vec">Vec</a>&lt;<a class="enum" 
href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html"; 
title="enum core::option::Option">Option</a>&lt;<a class="enum" 
href="enum.Literal.html" title="enum 
iceberg::spec::Literal">Literal</a>&gt;&gt;),
@@ -14,14 +14,14 @@ Elements can be either optional or required. Element types 
may be any type.</p>
 </div><section id="variant.Map" class="variant"><a href="#variant.Map" 
class="anchor">§</a><h3 class="code-header">Map(<a class="struct" 
href="struct.Map.html" title="struct 
iceberg::spec::Map">Map</a>)</h3></section><div class="docblock"><p>A map is a 
collection of key-value pairs with a key type and a value type.
 Both the key field and value field each have an integer id that is unique in 
the table schema.
 Map keys are required and map values can be either optional or required. Both 
map keys and map values may be any type, including nested types.</p>
-</div></div><h2 id="implementations" class="section-header">Implementations<a 
href="#implementations" class="anchor">§</a></h2><div 
id="implementations-list"><details class="toggle implementors-toggle" 
open><summary><section id="impl-Literal" class="impl"><a class="src rightside" 
href="../../src/iceberg/spec/values.rs.html#1189-1548">source</a><a 
href="#impl-Literal" class="anchor">§</a><h3 class="code-header">impl <a 
class="enum" href="enum.Literal.html" title="enum iceberg::spec::Liter [...]
+</div></div><h2 id="implementations" class="section-header">Implementations<a 
href="#implementations" class="anchor">§</a></h2><div 
id="implementations-list"><details class="toggle implementors-toggle" 
open><summary><section id="impl-Literal" class="impl"><a class="src rightside" 
href="../../src/iceberg/spec/values.rs.html#1190-1549">source</a><a 
href="#impl-Literal" class="anchor">§</a><h3 class="code-header">impl <a 
class="enum" href="enum.Literal.html" title="enum iceberg::spec::Liter [...]
 <p>Example:</p>
 
 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span 
class="kw">use </span>iceberg::spec::{Literal, PrimitiveLiteral};
 <span class="kw">let </span>t = Literal::bool(<span 
class="bool-val">true</span>);
 
 <span 
class="macro">assert_eq!</span>(Literal::Primitive(PrimitiveLiteral::Boolean(<span
 class="bool-val">true</span>)), t);</code></pre></div>
-</div></details><details class="toggle method-toggle" open><summary><section 
id="method.bool_from_str" class="method"><a class="src rightside" 
href="../../src/iceberg/spec/values.rs.html#1213-1218">source</a><h4 
class="code-header">pub fn <a href="#method.bool_from_str" 
class="fn">bool_from_str</a>&lt;S: <a class="trait" 
href="https://doc.rust-lang.org/nightly/core/convert/trait.AsRef.html"; 
title="trait core::convert::AsRef">AsRef</a>&lt;<a class="primitive" 
href="https://doc.rust-lang.o [...]
+</div></details><details class="toggle method-toggle" open><summary><section 
id="method.bool_from_str" class="method"><a class="src rightside" 
href="../../src/iceberg/spec/values.rs.html#1214-1219">source</a><h4 
class="code-header">pub fn <a href="#method.bool_from_str" 
class="fn">bool_from_str</a>&lt;S: <a class="trait" 
href="https://doc.rust-lang.org/nightly/core/convert/trait.AsRef.html"; 
title="trait core::convert::AsRef">AsRef</a>&lt;<a class="primitive" 
href="https://doc.rust-lang.o [...]
 See <a 
href="https://doc.rust-lang.org/stable/std/primitive.bool.html#impl-FromStr-for-bool";>Parse
 bool from str</a> for reference.</p>
 <p>Example:</p>
 
@@ -29,21 +29,21 @@ See <a 
href="https://doc.rust-lang.org/stable/std/primitive.bool.html#impl-FromS
 <span class="kw">let </span>t = Literal::bool_from_str(<span 
class="string">"false"</span>).unwrap();
 
 <span 
class="macro">assert_eq!</span>(Literal::Primitive(PrimitiveLiteral::Boolean(<span
 class="bool-val">false</span>)), t);</code></pre></div>
-</div></details><details class="toggle method-toggle" open><summary><section 
id="method.int" class="method"><a class="src rightside" 
href="../../src/iceberg/spec/values.rs.html#1229-1231">source</a><h4 
class="code-header">pub fn <a href="#method.int" class="fn">int</a>&lt;T: <a 
class="trait" 
href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html"; 
title="trait core::convert::Into">Into</a>&lt;<a class="primitive" 
href="https://doc.rust-lang.org/nightly/std/primitive.i32.html [...]
+</div></details><details class="toggle method-toggle" open><summary><section 
id="method.int" class="method"><a class="src rightside" 
href="../../src/iceberg/spec/values.rs.html#1230-1232">source</a><h4 
class="code-header">pub fn <a href="#method.int" class="fn">int</a>&lt;T: <a 
class="trait" 
href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html"; 
title="trait core::convert::Into">Into</a>&lt;<a class="primitive" 
href="https://doc.rust-lang.org/nightly/std/primitive.i32.html [...]
 <p>Example:</p>
 
 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span 
class="kw">use </span>iceberg::spec::{Literal, PrimitiveLiteral};
 <span class="kw">let </span>t = Literal::int(<span class="number">23i8</span>);
 
 <span 
class="macro">assert_eq!</span>(Literal::Primitive(PrimitiveLiteral::Int(<span 
class="number">23</span>)), t);</code></pre></div>
-</div></details><details class="toggle method-toggle" open><summary><section 
id="method.long" class="method"><a class="src rightside" 
href="../../src/iceberg/spec/values.rs.html#1242-1244">source</a><h4 
class="code-header">pub fn <a href="#method.long" class="fn">long</a>&lt;T: <a 
class="trait" 
href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html"; 
title="trait core::convert::Into">Into</a>&lt;<a class="primitive" 
href="https://doc.rust-lang.org/nightly/std/primitive.i64.h [...]
+</div></details><details class="toggle method-toggle" open><summary><section 
id="method.long" class="method"><a class="src rightside" 
href="../../src/iceberg/spec/values.rs.html#1243-1245">source</a><h4 
class="code-header">pub fn <a href="#method.long" class="fn">long</a>&lt;T: <a 
class="trait" 
href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html"; 
title="trait core::convert::Into">Into</a>&lt;<a class="primitive" 
href="https://doc.rust-lang.org/nightly/std/primitive.i64.h [...]
 <p>Example:</p>
 
 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span 
class="kw">use </span>iceberg::spec::{Literal, PrimitiveLiteral};
 <span class="kw">let </span>t = Literal::long(<span 
class="number">24i8</span>);
 
 <span 
class="macro">assert_eq!</span>(Literal::Primitive(PrimitiveLiteral::Long(<span 
class="number">24</span>)), t);</code></pre></div>
-</div></details><details class="toggle method-toggle" open><summary><section 
id="method.float" class="method"><a class="src rightside" 
href="../../src/iceberg/spec/values.rs.html#1259-1261">source</a><h4 
class="code-header">pub fn <a href="#method.float" class="fn">float</a>&lt;T: 
<a class="trait" 
href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html"; 
title="trait core::convert::Into">Into</a>&lt;<a class="primitive" 
href="https://doc.rust-lang.org/nightly/std/primitive.f3 [...]
+</div></details><details class="toggle method-toggle" open><summary><section 
id="method.float" class="method"><a class="src rightside" 
href="../../src/iceberg/spec/values.rs.html#1260-1262">source</a><h4 
class="code-header">pub fn <a href="#method.float" class="fn">float</a>&lt;T: 
<a class="trait" 
href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html"; 
title="trait core::convert::Into">Into</a>&lt;<a class="primitive" 
href="https://doc.rust-lang.org/nightly/std/primitive.f3 [...]
 <p>Example:</p>
 
 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span 
class="kw">use </span>iceberg::spec::{Literal, PrimitiveLiteral};
@@ -54,7 +54,7 @@ See <a 
href="https://doc.rust-lang.org/stable/std/primitive.bool.html#impl-FromS
     Literal::Primitive(PrimitiveLiteral::Float(OrderedFloat(<span 
class="number">32.1</span>))),
     t
 );</code></pre></div>
-</div></details><details class="toggle method-toggle" open><summary><section 
id="method.double" class="method"><a class="src rightside" 
href="../../src/iceberg/spec/values.rs.html#1276-1278">source</a><h4 
class="code-header">pub fn <a href="#method.double" class="fn">double</a>&lt;T: 
<a class="trait" 
href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html"; 
title="trait core::convert::Into">Into</a>&lt;<a class="primitive" 
href="https://doc.rust-lang.org/nightly/std/primitive [...]
+</div></details><details class="toggle method-toggle" open><summary><section 
id="method.double" class="method"><a class="src rightside" 
href="../../src/iceberg/spec/values.rs.html#1277-1279">source</a><h4 
class="code-header">pub fn <a href="#method.double" class="fn">double</a>&lt;T: 
<a class="trait" 
href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html"; 
title="trait core::convert::Into">Into</a>&lt;<a class="primitive" 
href="https://doc.rust-lang.org/nightly/std/primitive [...]
 <p>Example:</p>
 
 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span 
class="kw">use </span>iceberg::spec::{Literal, PrimitiveLiteral};
@@ -65,8 +65,8 @@ See <a 
href="https://doc.rust-lang.org/stable/std/primitive.bool.html#impl-FromS
     Literal::Primitive(PrimitiveLiteral::Double(OrderedFloat(<span 
class="number">32.1</span>))),
     t
 );</code></pre></div>
-</div></details><details class="toggle method-toggle" open><summary><section 
id="method.date" class="method"><a class="src rightside" 
href="../../src/iceberg/spec/values.rs.html#1281-1283">source</a><h4 
class="code-header">pub fn <a href="#method.date" class="fn">date</a>(days: <a 
class="primitive" 
href="https://doc.rust-lang.org/nightly/std/primitive.i32.html";>i32</a>) -&gt; 
Self</h4></section></summary><div class="docblock"><p>Creates date literal from 
number of days from unix epoch di [...]
-</div></details><details class="toggle method-toggle" open><summary><section 
id="method.date_from_str" class="method"><a class="src rightside" 
href="../../src/iceberg/spec/values.rs.html#1296-1306">source</a><h4 
class="code-header">pub fn <a href="#method.date_from_str" 
class="fn">date_from_str</a>&lt;S: <a class="trait" 
href="https://doc.rust-lang.org/nightly/core/convert/trait.AsRef.html"; 
title="trait core::convert::AsRef">AsRef</a>&lt;<a class="primitive" 
href="https://doc.rust-lang.o [...]
+</div></details><details class="toggle method-toggle" open><summary><section 
id="method.date" class="method"><a class="src rightside" 
href="../../src/iceberg/spec/values.rs.html#1282-1284">source</a><h4 
class="code-header">pub fn <a href="#method.date" class="fn">date</a>(days: <a 
class="primitive" 
href="https://doc.rust-lang.org/nightly/std/primitive.i32.html";>i32</a>) -&gt; 
Self</h4></section></summary><div class="docblock"><p>Creates date literal from 
number of days from unix epoch di [...]
+</div></details><details class="toggle method-toggle" open><summary><section 
id="method.date_from_str" class="method"><a class="src rightside" 
href="../../src/iceberg/spec/values.rs.html#1297-1307">source</a><h4 
class="code-header">pub fn <a href="#method.date_from_str" 
class="fn">date_from_str</a>&lt;S: <a class="trait" 
href="https://doc.rust-lang.org/nightly/core/convert/trait.AsRef.html"; 
title="trait core::convert::AsRef">AsRef</a>&lt;<a class="primitive" 
href="https://doc.rust-lang.o [...]
 <p>See <a 
href="https://docs.rs/chrono/latest/chrono/naive/date/struct.NaiveDate.html#method.from_str";
 title="associated function 
chrono::naive::date::NaiveDate::from_str"><code>NaiveDate::from_str</code></a>.</p>
 <p>Example</p>
 
@@ -74,7 +74,7 @@ See <a 
href="https://doc.rust-lang.org/stable/std/primitive.bool.html#impl-FromS
 <span class="kw">let </span>t = Literal::date_from_str(<span 
class="string">"1970-01-03"</span>).unwrap();
 
 <span class="macro">assert_eq!</span>(Literal::date(<span 
class="number">2</span>), t);</code></pre></div>
-</div></details><details class="toggle method-toggle" open><summary><section 
id="method.date_from_ymd" class="method"><a class="src rightside" 
href="../../src/iceberg/spec/values.rs.html#1320-1329">source</a><h4 
class="code-header">pub fn <a href="#method.date_from_ymd" 
class="fn">date_from_ymd</a>(year: <a class="primitive" 
href="https://doc.rust-lang.org/nightly/std/primitive.i32.html";>i32</a>, month: 
<a class="primitive" 
href="https://doc.rust-lang.org/nightly/std/primitive.u32.html";> [...]
+</div></details><details class="toggle method-toggle" open><summary><section 
id="method.date_from_ymd" class="method"><a class="src rightside" 
href="../../src/iceberg/spec/values.rs.html#1321-1330">source</a><h4 
class="code-header">pub fn <a href="#method.date_from_ymd" 
class="fn">date_from_ymd</a>(year: <a class="primitive" 
href="https://doc.rust-lang.org/nightly/std/primitive.i32.html";>i32</a>, month: 
<a class="primitive" 
href="https://doc.rust-lang.org/nightly/std/primitive.u32.html";> [...]
 <p>See <a 
href="https://docs.rs/chrono/latest/chrono/naive/date/struct.NaiveDate.html#method.from_ymd_opt";
 title="associated function 
chrono::naive::date::NaiveDate::from_ymd_opt"><code>NaiveDate::from_ymd_opt</code></a>.</p>
 <p>Example:</p>
 
@@ -82,8 +82,8 @@ See <a 
href="https://doc.rust-lang.org/stable/std/primitive.bool.html#impl-FromS
  <span class="kw">let </span>t = Literal::date_from_ymd(<span 
class="number">1970</span>, <span class="number">1</span>, <span 
class="number">5</span>).unwrap();
 
  <span class="macro">assert_eq!</span>(Literal::date(<span 
class="number">4</span>), t);</code></pre></div>
-</div></details><details class="toggle method-toggle" open><summary><section 
id="method.time" class="method"><a class="src rightside" 
href="../../src/iceberg/spec/values.rs.html#1332-1334">source</a><h4 
class="code-header">pub fn <a href="#method.time" class="fn">time</a>(value: <a 
class="primitive" 
href="https://doc.rust-lang.org/nightly/std/primitive.i64.html";>i64</a>) -&gt; 
Self</h4></section></summary><div class="docblock"><p>Creates time in 
microseconds directly</p>
-</div></details><details class="toggle method-toggle" open><summary><section 
id="method.time_from_str" class="method"><a class="src rightside" 
href="../../src/iceberg/spec/values.rs.html#1362-1372">source</a><h4 
class="code-header">pub fn <a href="#method.time_from_str" 
class="fn">time_from_str</a>&lt;S: <a class="trait" 
href="https://doc.rust-lang.org/nightly/core/convert/trait.AsRef.html"; 
title="trait core::convert::AsRef">AsRef</a>&lt;<a class="primitive" 
href="https://doc.rust-lang.o [...]
+</div></details><details class="toggle method-toggle" open><summary><section 
id="method.time" class="method"><a class="src rightside" 
href="../../src/iceberg/spec/values.rs.html#1333-1335">source</a><h4 
class="code-header">pub fn <a href="#method.time" class="fn">time</a>(value: <a 
class="primitive" 
href="https://doc.rust-lang.org/nightly/std/primitive.i64.html";>i64</a>) -&gt; 
Self</h4></section></summary><div class="docblock"><p>Creates time in 
microseconds directly</p>
+</div></details><details class="toggle method-toggle" open><summary><section 
id="method.time_from_str" class="method"><a class="src rightside" 
href="../../src/iceberg/spec/values.rs.html#1363-1373">source</a><h4 
class="code-header">pub fn <a href="#method.time_from_str" 
class="fn">time_from_str</a>&lt;S: <a class="trait" 
href="https://doc.rust-lang.org/nightly/core/convert/trait.AsRef.html"; 
title="trait core::convert::AsRef">AsRef</a>&lt;<a class="primitive" 
href="https://doc.rust-lang.o [...]
 <p>See <a 
href="https://docs.rs/chrono/latest/chrono/naive/time/struct.NaiveTime.html#method.from_str";
 title="associated function 
chrono::naive::time::NaiveTime::from_str"><code>NaiveTime::from_str</code></a> 
for details.</p>
 <p>Example:</p>
 
@@ -97,7 +97,7 @@ See <a 
href="https://doc.rust-lang.org/stable/std/primitive.bool.html#impl-FromS
     </span><span class="number">888999 </span><span class="comment">// 
microseconds
 </span>};
 <span class="macro">assert_eq!</span>(Literal::time(micro_secs), 
t);</code></pre></div>
-</div></details><details class="toggle method-toggle" open><summary><section 
id="method.time_from_hms_micro" class="method"><a class="src rightside" 
href="../../src/iceberg/spec/values.rs.html#1385-1392">source</a><h4 
class="code-header">pub fn <a href="#method.time_from_hms_micro" 
class="fn">time_from_hms_micro</a>(
+</div></details><details class="toggle method-toggle" open><summary><section 
id="method.time_from_hms_micro" class="method"><a class="src rightside" 
href="../../src/iceberg/spec/values.rs.html#1386-1393">source</a><h4 
class="code-header">pub fn <a href="#method.time_from_hms_micro" 
class="fn">time_from_hms_micro</a>(
     hour: <a class="primitive" 
href="https://doc.rust-lang.org/nightly/std/primitive.u32.html";>u32</a>,
     min: <a class="primitive" 
href="https://doc.rust-lang.org/nightly/std/primitive.u32.html";>u32</a>,
     sec: <a class="primitive" 
href="https://doc.rust-lang.org/nightly/std/primitive.u32.html";>u32</a>,
@@ -110,11 +110,11 @@ See <a 
href="https://doc.rust-lang.org/stable/std/primitive.bool.html#impl-FromS
 <span class="kw">let </span>t = Literal::time_from_hms_micro(<span 
class="number">22</span>, <span class="number">15</span>, <span 
class="number">33</span>, <span class="number">111</span>).unwrap();
 
 <span class="macro">assert_eq!</span>(Literal::time_from_str(<span 
class="string">"22:15:33.000111"</span>).unwrap(), t);</code></pre></div>
-</div></details><details class="toggle method-toggle" open><summary><section 
id="method.timestamp" class="method"><a class="src rightside" 
href="../../src/iceberg/spec/values.rs.html#1395-1397">source</a><h4 
class="code-header">pub fn <a href="#method.timestamp" 
class="fn">timestamp</a>(value: <a class="primitive" 
href="https://doc.rust-lang.org/nightly/std/primitive.i64.html";>i64</a>) -&gt; 
Self</h4></section></summary><div class="docblock"><p>Creates a timestamp from 
unix epoch in micr [...]
-</div></details><details class="toggle method-toggle" open><summary><section 
id="method.timestamptz" class="method"><a class="src rightside" 
href="../../src/iceberg/spec/values.rs.html#1400-1402">source</a><h4 
class="code-header">pub fn <a href="#method.timestamptz" 
class="fn">timestamptz</a>(value: <a class="primitive" 
href="https://doc.rust-lang.org/nightly/std/primitive.i64.html";>i64</a>) -&gt; 
Self</h4></section></summary><div class="docblock"><p>Creates a timestamp with 
timezone fro [...]
-</div></details><details class="toggle method-toggle" open><summary><section 
id="method.timestamp_from_datetime" class="method"><a class="src rightside" 
href="../../src/iceberg/spec/values.rs.html#1405-1407">source</a><h4 
class="code-header">pub fn <a href="#method.timestamp_from_datetime" 
class="fn">timestamp_from_datetime</a>&lt;T: <a class="trait" 
href="https://docs.rs/chrono/latest/chrono/offset/trait.TimeZone.html"; 
title="trait chrono::offset::TimeZone">TimeZone</a>&gt;(dt: <a class [...]
-</div></details><details class="toggle method-toggle" open><summary><section 
id="method.timestamptz_from_datetime" class="method"><a class="src rightside" 
href="../../src/iceberg/spec/values.rs.html#1410-1412">source</a><h4 
class="code-header">pub fn <a href="#method.timestamptz_from_datetime" 
class="fn">timestamptz_from_datetime</a>&lt;T: <a class="trait" 
href="https://docs.rs/chrono/latest/chrono/offset/trait.TimeZone.html"; 
title="trait chrono::offset::TimeZone">TimeZone</a>&gt;(dt: <a [...]
-</div></details><details class="toggle method-toggle" open><summary><section 
id="method.timestamp_from_str" class="method"><a class="src rightside" 
href="../../src/iceberg/spec/values.rs.html#1437-1443">source</a><h4 
class="code-header">pub fn <a href="#method.timestamp_from_str" 
class="fn">timestamp_from_str</a>&lt;S: <a class="trait" 
href="https://doc.rust-lang.org/nightly/core/convert/trait.AsRef.html"; 
title="trait core::convert::AsRef">AsRef</a>&lt;<a class="primitive" 
href="https:// [...]
+</div></details><details class="toggle method-toggle" open><summary><section 
id="method.timestamp" class="method"><a class="src rightside" 
href="../../src/iceberg/spec/values.rs.html#1396-1398">source</a><h4 
class="code-header">pub fn <a href="#method.timestamp" 
class="fn">timestamp</a>(value: <a class="primitive" 
href="https://doc.rust-lang.org/nightly/std/primitive.i64.html";>i64</a>) -&gt; 
Self</h4></section></summary><div class="docblock"><p>Creates a timestamp from 
unix epoch in micr [...]
+</div></details><details class="toggle method-toggle" open><summary><section 
id="method.timestamptz" class="method"><a class="src rightside" 
href="../../src/iceberg/spec/values.rs.html#1401-1403">source</a><h4 
class="code-header">pub fn <a href="#method.timestamptz" 
class="fn">timestamptz</a>(value: <a class="primitive" 
href="https://doc.rust-lang.org/nightly/std/primitive.i64.html";>i64</a>) -&gt; 
Self</h4></section></summary><div class="docblock"><p>Creates a timestamp with 
timezone fro [...]
+</div></details><details class="toggle method-toggle" open><summary><section 
id="method.timestamp_from_datetime" class="method"><a class="src rightside" 
href="../../src/iceberg/spec/values.rs.html#1406-1408">source</a><h4 
class="code-header">pub fn <a href="#method.timestamp_from_datetime" 
class="fn">timestamp_from_datetime</a>&lt;T: <a class="trait" 
href="https://docs.rs/chrono/latest/chrono/offset/trait.TimeZone.html"; 
title="trait chrono::offset::TimeZone">TimeZone</a>&gt;(dt: <a class [...]
+</div></details><details class="toggle method-toggle" open><summary><section 
id="method.timestamptz_from_datetime" class="method"><a class="src rightside" 
href="../../src/iceberg/spec/values.rs.html#1411-1413">source</a><h4 
class="code-header">pub fn <a href="#method.timestamptz_from_datetime" 
class="fn">timestamptz_from_datetime</a>&lt;T: <a class="trait" 
href="https://docs.rs/chrono/latest/chrono/offset/trait.TimeZone.html"; 
title="trait chrono::offset::TimeZone">TimeZone</a>&gt;(dt: <a [...]
+</div></details><details class="toggle method-toggle" open><summary><section 
id="method.timestamp_from_str" class="method"><a class="src rightside" 
href="../../src/iceberg/spec/values.rs.html#1438-1444">source</a><h4 
class="code-header">pub fn <a href="#method.timestamp_from_str" 
class="fn">timestamp_from_str</a>&lt;S: <a class="trait" 
href="https://doc.rust-lang.org/nightly/core/convert/trait.AsRef.html"; 
title="trait core::convert::AsRef">AsRef</a>&lt;<a class="primitive" 
href="https:// [...]
 <p>See <a 
href="https://docs.rs/chrono/latest/chrono/datetime/struct.DateTime.html#method.from_str";
 title="associated function 
chrono::datetime::DateTime::from_str"><code>DateTime&lt;Utc&gt;::from_str</code></a>.</p>
 <p>Example:</p>
 
@@ -133,10 +133,10 @@ See <a 
href="https://doc.rust-lang.org/stable/std/primitive.bool.html#impl-FromS
 };
 
 <span class="macro">assert_eq!</span>(t, t2);</code></pre></div>
-</div></details><details class="toggle method-toggle" open><summary><section 
id="method.timestamptz_from_str" class="method"><a class="src rightside" 
href="../../src/iceberg/spec/values.rs.html#1446-1452">source</a><h4 
class="code-header">pub fn <a href="#method.timestamptz_from_str" 
class="fn">timestamptz_from_str</a>&lt;S: <a class="trait" 
href="https://doc.rust-lang.org/nightly/core/convert/trait.AsRef.html"; 
title="trait core::convert::AsRef">AsRef</a>&lt;<a class="primitive" href="ht 
[...]
-</div></details><details class="toggle method-toggle" open><summary><section 
id="method.string" class="method"><a class="src rightside" 
href="../../src/iceberg/spec/values.rs.html#1455-1457">source</a><h4 
class="code-header">pub fn <a href="#method.string" class="fn">string</a>&lt;S: 
<a class="trait" 
href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html"; 
title="trait alloc::string::ToString">ToString</a>&gt;(s: S) -&gt; 
Self</h4></section></summary><div class="docblock [...]
-</div></details><details class="toggle method-toggle" open><summary><section 
id="method.uuid" class="method"><a class="src rightside" 
href="../../src/iceberg/spec/values.rs.html#1460-1462">source</a><h4 
class="code-header">pub fn <a href="#method.uuid" class="fn">uuid</a>(uuid: <a 
class="struct" href="https://docs.rs/uuid/1.11.0/uuid/struct.Uuid.html"; 
title="struct uuid::Uuid">Uuid</a>) -&gt; Self</h4></section></summary><div 
class="docblock"><p>Creates uuid literal.</p>
-</div></details><details class="toggle method-toggle" open><summary><section 
id="method.uuid_from_str" class="method"><a class="src rightside" 
href="../../src/iceberg/spec/values.rs.html#1476-1485">source</a><h4 
class="code-header">pub fn <a href="#method.uuid_from_str" 
class="fn">uuid_from_str</a>&lt;S: <a class="trait" 
href="https://doc.rust-lang.org/nightly/core/convert/trait.AsRef.html"; 
title="trait core::convert::AsRef">AsRef</a>&lt;<a class="primitive" 
href="https://doc.rust-lang.o [...]
+</div></details><details class="toggle method-toggle" open><summary><section 
id="method.timestamptz_from_str" class="method"><a class="src rightside" 
href="../../src/iceberg/spec/values.rs.html#1447-1453">source</a><h4 
class="code-header">pub fn <a href="#method.timestamptz_from_str" 
class="fn">timestamptz_from_str</a>&lt;S: <a class="trait" 
href="https://doc.rust-lang.org/nightly/core/convert/trait.AsRef.html"; 
title="trait core::convert::AsRef">AsRef</a>&lt;<a class="primitive" href="ht 
[...]
+</div></details><details class="toggle method-toggle" open><summary><section 
id="method.string" class="method"><a class="src rightside" 
href="../../src/iceberg/spec/values.rs.html#1456-1458">source</a><h4 
class="code-header">pub fn <a href="#method.string" class="fn">string</a>&lt;S: 
<a class="trait" 
href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html"; 
title="trait alloc::string::ToString">ToString</a>&gt;(s: S) -&gt; 
Self</h4></section></summary><div class="docblock [...]
+</div></details><details class="toggle method-toggle" open><summary><section 
id="method.uuid" class="method"><a class="src rightside" 
href="../../src/iceberg/spec/values.rs.html#1461-1463">source</a><h4 
class="code-header">pub fn <a href="#method.uuid" class="fn">uuid</a>(uuid: <a 
class="struct" href="https://docs.rs/uuid/1.11.0/uuid/struct.Uuid.html"; 
title="struct uuid::Uuid">Uuid</a>) -&gt; Self</h4></section></summary><div 
class="docblock"><p>Creates uuid literal.</p>
+</div></details><details class="toggle method-toggle" open><summary><section 
id="method.uuid_from_str" class="method"><a class="src rightside" 
href="../../src/iceberg/spec/values.rs.html#1477-1486">source</a><h4 
class="code-header">pub fn <a href="#method.uuid_from_str" 
class="fn">uuid_from_str</a>&lt;S: <a class="trait" 
href="https://doc.rust-lang.org/nightly/core/convert/trait.AsRef.html"; 
title="trait core::convert::AsRef">AsRef</a>&lt;<a class="primitive" 
href="https://doc.rust-lang.o [...]
 <p>Example:</p>
 
 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span 
class="kw">use </span>iceberg::spec::Literal;
@@ -145,7 +145,7 @@ See <a 
href="https://doc.rust-lang.org/stable/std/primitive.bool.html#impl-FromS
 <span class="kw">let </span>t2 = Literal::uuid(Uuid::from_u128_le(<span 
class="number">0xd8d7d6d5d4d3d2d1c2c1b2b1a4a3a2a1</span>));
 
 <span class="macro">assert_eq!</span>(t1, t2);</code></pre></div>
-</div></details><details class="toggle method-toggle" open><summary><section 
id="method.fixed" class="method"><a class="src rightside" 
href="../../src/iceberg/spec/values.rs.html#1498-1500">source</a><h4 
class="code-header">pub fn <a href="#method.fixed" class="fn">fixed</a>&lt;I: 
<a class="trait" 
href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html";
 title="trait 
core::iter::traits::collect::IntoIterator">IntoIterator</a>&lt;Item = <a 
class="primitive" [...]
+</div></details><details class="toggle method-toggle" open><summary><section 
id="method.fixed" class="method"><a class="src rightside" 
href="../../src/iceberg/spec/values.rs.html#1499-1501">source</a><h4 
class="code-header">pub fn <a href="#method.fixed" class="fn">fixed</a>&lt;I: 
<a class="trait" 
href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html";
 title="trait 
core::iter::traits::collect::IntoIterator">IntoIterator</a>&lt;Item = <a 
class="primitive" [...]
 <p>Example:</p>
 
 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span 
class="kw">use </span>iceberg::spec::{Literal, PrimitiveLiteral};
@@ -153,7 +153,7 @@ See <a 
href="https://doc.rust-lang.org/stable/std/primitive.bool.html#impl-FromS
 <span class="kw">let </span>t2 = 
Literal::Primitive(PrimitiveLiteral::Binary(<span 
class="macro">vec!</span>[<span class="number">1u8</span>, <span 
class="number">2u8</span>]));
 
 <span class="macro">assert_eq!</span>(t1, t2);</code></pre></div>
-</div></details><details class="toggle method-toggle" open><summary><section 
id="method.binary" class="method"><a class="src rightside" 
href="../../src/iceberg/spec/values.rs.html#1513-1515">source</a><h4 
class="code-header">pub fn <a href="#method.binary" class="fn">binary</a>&lt;I: 
<a class="trait" 
href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html";
 title="trait 
core::iter::traits::collect::IntoIterator">IntoIterator</a>&lt;Item = <a 
class="primiti [...]
+</div></details><details class="toggle method-toggle" open><summary><section 
id="method.binary" class="method"><a class="src rightside" 
href="../../src/iceberg/spec/values.rs.html#1514-1516">source</a><h4 
class="code-header">pub fn <a href="#method.binary" class="fn">binary</a>&lt;I: 
<a class="trait" 
href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html";
 title="trait 
core::iter::traits::collect::IntoIterator">IntoIterator</a>&lt;Item = <a 
class="primiti [...]
 <p>Example:</p>
 
 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span 
class="kw">use </span>iceberg::spec::{Literal, PrimitiveLiteral};
@@ -161,8 +161,8 @@ See <a 
href="https://doc.rust-lang.org/stable/std/primitive.bool.html#impl-FromS
 <span class="kw">let </span>t2 = 
Literal::Primitive(PrimitiveLiteral::Binary(<span 
class="macro">vec!</span>[<span class="number">1u8</span>, <span 
class="number">2u8</span>]));
 
 <span class="macro">assert_eq!</span>(t1, t2);</code></pre></div>
-</div></details><details class="toggle method-toggle" open><summary><section 
id="method.decimal" class="method"><a class="src rightside" 
href="../../src/iceberg/spec/values.rs.html#1518-1520">source</a><h4 
class="code-header">pub fn <a href="#method.decimal" 
class="fn">decimal</a>(decimal: <a class="primitive" 
href="https://doc.rust-lang.org/nightly/std/primitive.i128.html";>i128</a>) 
-&gt; Self</h4></section></summary><div class="docblock"><p>Creates a decimal 
literal.</p>
-</div></details><details class="toggle method-toggle" open><summary><section 
id="method.decimal_from_str" class="method"><a class="src rightside" 
href="../../src/iceberg/spec/values.rs.html#1534-1539">source</a><h4 
class="code-header">pub fn <a href="#method.decimal_from_str" 
class="fn">decimal_from_str</a>&lt;S: <a class="trait" 
href="https://doc.rust-lang.org/nightly/core/convert/trait.AsRef.html"; 
title="trait core::convert::AsRef">AsRef</a>&lt;<a class="primitive" 
href="https://doc.ru [...]
+</div></details><details class="toggle method-toggle" open><summary><section 
id="method.decimal" class="method"><a class="src rightside" 
href="../../src/iceberg/spec/values.rs.html#1519-1521">source</a><h4 
class="code-header">pub fn <a href="#method.decimal" 
class="fn">decimal</a>(decimal: <a class="primitive" 
href="https://doc.rust-lang.org/nightly/std/primitive.i128.html";>i128</a>) 
-&gt; Self</h4></section></summary><div class="docblock"><p>Creates a decimal 
literal.</p>
+</div></details><details class="toggle method-toggle" open><summary><section 
id="method.decimal_from_str" class="method"><a class="src rightside" 
href="../../src/iceberg/spec/values.rs.html#1535-1540">source</a><h4 
class="code-header">pub fn <a href="#method.decimal_from_str" 
class="fn">decimal_from_str</a>&lt;S: <a class="trait" 
href="https://doc.rust-lang.org/nightly/core/convert/trait.AsRef.html"; 
title="trait core::convert::AsRef">AsRef</a>&lt;<a class="primitive" 
href="https://doc.ru [...]
 <p>Example:</p>
 
 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span 
class="kw">use </span>iceberg::spec::Literal;
@@ -171,17 +171,17 @@ See <a 
href="https://doc.rust-lang.org/stable/std/primitive.bool.html#impl-FromS
 <span class="kw">let </span>t2 = Literal::decimal_from_str(<span 
class="string">"123.45"</span>).unwrap();
 
 <span class="macro">assert_eq!</span>(t1, t2);</code></pre></div>
-</div></details><details class="toggle method-toggle" open><summary><section 
id="method.as_primitive_literal" class="method"><a class="src rightside" 
href="../../src/iceberg/spec/values.rs.html#1542-1547">source</a><h4 
class="code-header">pub fn <a href="#method.as_primitive_literal" 
class="fn">as_primitive_literal</a>(&amp;self) -&gt; <a class="enum" 
href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html"; 
title="enum core::option::Option">Option</a>&lt;<a class="enum" href [...]
-</div></details></div></details><details class="toggle implementors-toggle" 
open><summary><section id="impl-Literal-1" class="impl"><a class="src 
rightside" href="../../src/iceberg/spec/values.rs.html#1656-1972">source</a><a 
href="#impl-Literal-1" class="anchor">§</a><h3 class="code-header">impl <a 
class="enum" href="enum.Literal.html" title="enum 
iceberg::spec::Literal">Literal</a></h3></section></summary><div 
class="impl-items"><details class="toggle method-toggle" open><summary><secti 
[...]
+</div></details><details class="toggle method-toggle" open><summary><section 
id="method.as_primitive_literal" class="method"><a class="src rightside" 
href="../../src/iceberg/spec/values.rs.html#1543-1548">source</a><h4 
class="code-header">pub fn <a href="#method.as_primitive_literal" 
class="fn">as_primitive_literal</a>(&amp;self) -&gt; <a class="enum" 
href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html"; 
title="enum core::option::Option">Option</a>&lt;<a class="enum" href [...]
+</div></details></div></details><details class="toggle implementors-toggle" 
open><summary><section id="impl-Literal-1" class="impl"><a class="src 
rightside" href="../../src/iceberg/spec/values.rs.html#1657-1973">source</a><a 
href="#impl-Literal-1" class="anchor">§</a><h3 class="code-header">impl <a 
class="enum" href="enum.Literal.html" title="enum 
iceberg::spec::Literal">Literal</a></h3></section></summary><div 
class="impl-items"><details class="toggle method-toggle" open><summary><secti 
[...]
 <p>See <a 
href="https://iceberg.apache.org/spec/#json-single-value-serialization";>this 
spec</a> for reference.</p>
-</div></details><details class="toggle method-toggle" open><summary><section 
id="method.try_into_json" class="method"><a class="src rightside" 
href="../../src/iceberg/spec/values.rs.html#1828-1953">source</a><h4 
class="code-header">pub fn <a href="#method.try_into_json" 
class="fn">try_into_json</a>(self, type: &amp;<a class="enum" 
href="enum.Type.html" title="enum iceberg::spec::Type">Type</a>) -&gt; <a 
class="type" href="../type.Result.html" title="type 
iceberg::Result">Result</a>&lt;<a [...]
+</div></details><details class="toggle method-toggle" open><summary><section 
id="method.try_into_json" class="method"><a class="src rightside" 
href="../../src/iceberg/spec/values.rs.html#1829-1954">source</a><h4 
class="code-header">pub fn <a href="#method.try_into_json" 
class="fn">try_into_json</a>(self, type: &amp;<a class="enum" 
href="enum.Type.html" title="enum iceberg::spec::Type">Type</a>) -&gt; <a 
class="type" href="../type.Result.html" title="type 
iceberg::Result">Result</a>&lt;<a [...]
 <p>See <a 
href="https://iceberg.apache.org/spec/#json-single-value-serialization";>this 
spec</a> for reference.</p>
-</div></details><details class="toggle method-toggle" open><summary><section 
id="method.into_any" class="method"><a class="src rightside" 
href="../../src/iceberg/spec/values.rs.html#1956-1971">source</a><h4 
class="code-header">pub fn <a href="#method.into_any" 
class="fn">into_any</a>(self) -&gt; <a class="struct" 
href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html"; 
title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" 
href="https://doc.rust-lang.org/nightly/cor [...]
-</div></details></div></details></div><h2 id="trait-implementations" 
class="section-header">Trait Implementations<a href="#trait-implementations" 
class="anchor">§</a></h2><div id="trait-implementations-list"><details 
class="toggle implementors-toggle" open><summary><section 
id="impl-Clone-for-Literal" class="impl"><a class="src rightside" 
href="../../src/iceberg/spec/values.rs.html#1171">source</a><a 
href="#impl-Clone-for-Literal" class="anchor">§</a><h3 class="code-header">impl 
<a class [...]
+</div></details><details class="toggle method-toggle" open><summary><section 
id="method.into_any" class="method"><a class="src rightside" 
href="../../src/iceberg/spec/values.rs.html#1957-1972">source</a><h4 
class="code-header">pub fn <a href="#method.into_any" 
class="fn">into_any</a>(self) -&gt; <a class="struct" 
href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html"; 
title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" 
href="https://doc.rust-lang.org/nightly/cor [...]
+</div></details></div></details></div><h2 id="trait-implementations" 
class="section-header">Trait Implementations<a href="#trait-implementations" 
class="anchor">§</a></h2><div id="trait-implementations-list"><details 
class="toggle implementors-toggle" open><summary><section 
id="impl-Clone-for-Literal" class="impl"><a class="src rightside" 
href="../../src/iceberg/spec/values.rs.html#1172">source</a><a 
href="#impl-Clone-for-Literal" class="anchor">§</a><h3 class="code-header">impl 
<a class [...]
     H: <a class="trait" 
href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html"; 
title="trait core::hash::Hasher">Hasher</a>,
-    Self: <a class="trait" 
href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html"; 
title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div 
class='docblock'>Feeds a slice of this type into the given <a 
href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html"; 
title="trait core::hash::Hasher"><code>Hasher</code></a>. <a 
href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#method.hash_slice";>Read
 more</a></div></details></div></d [...]
+    Self: <a class="trait" 
href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html"; 
title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div 
class='docblock'>Feeds a slice of this type into the given <a 
href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html"; 
title="trait core::hash::Hasher"><code>Hasher</code></a>. <a 
href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#method.hash_slice";>Read
 more</a></div></details></div></d [...]
 by <code>==</code>.</div></details><details class="toggle method-toggle" 
open><summary><section id="method.ne" class="method trait-impl"><span 
class="rightside"><span class="since" title="Stable since Rust version 
1.0.0">1.0.0</span> · <a class="src" 
href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263";>source</a></span><a
 href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a 
href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne";
 class= [...]
-sufficient, and should not be overridden without very good 
reason.</div></details></div></details><section id="impl-Eq-for-Literal" 
class="impl"><a class="src rightside" 
href="../../src/iceberg/spec/values.rs.html#1171">source</a><a 
href="#impl-Eq-for-Literal" class="anchor">§</a><h3 class="code-header">impl <a 
class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html"; 
title="trait core::cmp::Eq">Eq</a> for <a class="enum" href="enum.Literal.html" 
title="enum iceberg:: [...]
+sufficient, and should not be overridden without very good 
reason.</div></details></div></details><section id="impl-Eq-for-Literal" 
class="impl"><a class="src rightside" 
href="../../src/iceberg/spec/values.rs.html#1172">source</a><a 
href="#impl-Eq-for-Literal" class="anchor">§</a><h3 class="code-header">impl <a 
class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html"; 
title="trait core::cmp::Eq">Eq</a> for <a class="enum" href="enum.Literal.html" 
title="enum iceberg:: [...]
     T: 'static + ?<a class="trait" 
href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html"; 
title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div 
class="impl-items"><details class="toggle method-toggle" open><summary><section 
id="method.type_id" class="method trait-impl"><a class="src rightside" 
href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141";>source</a><a 
href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href 
[...]
     T: ?<a class="trait" 
href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html"; 
title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div 
class="impl-items"><details class="toggle method-toggle" open><summary><section 
id="method.borrow" class="method trait-impl"><a class="src rightside" 
href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210";>source</a><a
 href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a 
href="https:/ [...]
     T: ?<a class="trait" 
href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html"; 
title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div 
class="impl-items"><details class="toggle method-toggle" open><summary><section 
id="method.borrow_mut" class="method trait-impl"><a class="src rightside" 
href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217";>source</a><a
 href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a 
href= [...]
diff --git a/api/iceberg/spec/struct.Datum.html 
b/api/iceberg/spec/struct.Datum.html
index b26d82af..ffc8fee1 100644
--- a/api/iceberg/spec/struct.Datum.html
+++ b/api/iceberg/spec/struct.Datum.html
@@ -2,7 +2,7 @@
 guaranteed to be correct when used.</p>
 <p>By default, we decouple the type and value of a literal, so we can use 
avoid the cost of storing extra type info
 for each literal. But associate type with literal can be useful in some cases, 
for example, in unbound expression.</p>
-</div></details><h2 id="implementations" 
class="section-header">Implementations<a href="#implementations" 
class="anchor">§</a></h2><div id="implementations-list"><details class="toggle 
implementors-toggle" open><summary><section id="impl-Datum" class="impl"><a 
class="src rightside" 
href="../../src/iceberg/spec/values.rs.html#377-1062">source</a><a 
href="#impl-Datum" class="anchor">§</a><h3 class="code-header">impl <a 
class="struct" href="struct.Datum.html" title="struct iceberg::spec::Da [...]
+</div></details><h2 id="implementations" 
class="section-header">Implementations<a href="#implementations" 
class="anchor">§</a></h2><div id="implementations-list"><details class="toggle 
implementors-toggle" open><summary><section id="impl-Datum" class="impl"><a 
class="src rightside" 
href="../../src/iceberg/spec/values.rs.html#377-1063">source</a><a 
href="#impl-Datum" class="anchor">§</a><h3 class="code-header">impl <a 
class="struct" href="struct.Datum.html" title="struct iceberg::spec::Da [...]
 <p>See <a 
href="https://iceberg.apache.org/spec/#binary-single-value-serialization";>this 
spec</a> for reference.</p>
 </div></details><details class="toggle method-toggle" open><summary><section 
id="method.to_bytes" class="method"><a class="src rightside" 
href="../../src/iceberg/spec/values.rs.html#436-454">source</a><h4 
class="code-header">pub fn <a href="#method.to_bytes" 
class="fn">to_bytes</a>(&amp;self) -&gt; <a class="struct" 
href="https://docs.rs/serde_bytes/0.11.15/serde_bytes/bytebuf/struct.ByteBuf.html";
 title="struct 
serde_bytes::bytebuf::ByteBuf">ByteBuf</a></h4></section></summary><div class 
[...]
 <p>See <a 
href="https://iceberg.apache.org/spec/#binary-single-value-serialization";>this 
spec</a> for reference.</p>
@@ -260,10 +260,10 @@ Example:</p>
 <span class="kw">let </span>t = Datum::decimal(Decimal::new(<span 
class="number">123</span>, <span class="number">2</span>)).unwrap();
 
 <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span><span 
class="macro">format!</span>(<span class="string">"{t}"</span>), <span 
class="string">"1.23"</span>);</code></pre></div>
-</div></details><details class="toggle method-toggle" open><summary><section 
id="method.to" class="method"><a class="src rightside" 
href="../../src/iceberg/spec/values.rs.html#1016-1041">source</a><h4 
class="code-header">pub fn <a href="#method.to" class="fn">to</a>(self, 
target_type: &amp;<a class="enum" href="enum.Type.html" title="enum 
iceberg::spec::Type">Type</a>) -&gt; <a class="type" href="../type.Result.html" 
title="type iceberg::Result">Result</a>&lt;<a class="struct" href="stru [...]
-</div></details><details class="toggle method-toggle" open><summary><section 
id="method.literal" class="method"><a class="src rightside" 
href="../../src/iceberg/spec/values.rs.html#1044-1046">source</a><h4 
class="code-header">pub fn <a href="#method.literal" 
class="fn">literal</a>(&amp;self) -&gt; &amp;<a class="enum" 
href="enum.PrimitiveLiteral.html" title="enum 
iceberg::spec::PrimitiveLiteral">PrimitiveLiteral</a></h4></section></summary><div
 class="docblock"><p>Get the primitive liter [...]
-</div></details><details class="toggle method-toggle" open><summary><section 
id="method.data_type" class="method"><a class="src rightside" 
href="../../src/iceberg/spec/values.rs.html#1049-1051">source</a><h4 
class="code-header">pub fn <a href="#method.data_type" 
class="fn">data_type</a>(&amp;self) -&gt; &amp;<a class="enum" 
href="enum.PrimitiveType.html" title="enum 
iceberg::spec::PrimitiveType">PrimitiveType</a></h4></section></summary><div 
class="docblock"><p>Get the primitive type fro [...]
-</div></details><details class="toggle method-toggle" open><summary><section 
id="method.is_nan" class="method"><a class="src rightside" 
href="../../src/iceberg/spec/values.rs.html#1055-1061">source</a><h4 
class="code-header">pub fn <a href="#method.is_nan" 
class="fn">is_nan</a>(&amp;self) -&gt; <a class="primitive" 
href="https://doc.rust-lang.org/nightly/std/primitive.bool.html";>bool</a></h4></section></summary><div
 class="docblock"><p>Returns true if the Literal represents a primitive type
+</div></details><details class="toggle method-toggle" open><summary><section 
id="method.to" class="method"><a class="src rightside" 
href="../../src/iceberg/spec/values.rs.html#1016-1042">source</a><h4 
class="code-header">pub fn <a href="#method.to" class="fn">to</a>(self, 
target_type: &amp;<a class="enum" href="enum.Type.html" title="enum 
iceberg::spec::Type">Type</a>) -&gt; <a class="type" href="../type.Result.html" 
title="type iceberg::Result">Result</a>&lt;<a class="struct" href="stru [...]
+</div></details><details class="toggle method-toggle" open><summary><section 
id="method.literal" class="method"><a class="src rightside" 
href="../../src/iceberg/spec/values.rs.html#1045-1047">source</a><h4 
class="code-header">pub fn <a href="#method.literal" 
class="fn">literal</a>(&amp;self) -&gt; &amp;<a class="enum" 
href="enum.PrimitiveLiteral.html" title="enum 
iceberg::spec::PrimitiveLiteral">PrimitiveLiteral</a></h4></section></summary><div
 class="docblock"><p>Get the primitive liter [...]
+</div></details><details class="toggle method-toggle" open><summary><section 
id="method.data_type" class="method"><a class="src rightside" 
href="../../src/iceberg/spec/values.rs.html#1050-1052">source</a><h4 
class="code-header">pub fn <a href="#method.data_type" 
class="fn">data_type</a>(&amp;self) -&gt; &amp;<a class="enum" 
href="enum.PrimitiveType.html" title="enum 
iceberg::spec::PrimitiveType">PrimitiveType</a></h4></section></summary><div 
class="docblock"><p>Get the primitive type fro [...]
+</div></details><details class="toggle method-toggle" open><summary><section 
id="method.is_nan" class="method"><a class="src rightside" 
href="../../src/iceberg/spec/values.rs.html#1056-1062">source</a><h4 
class="code-header">pub fn <a href="#method.is_nan" 
class="fn">is_nan</a>(&amp;self) -&gt; <a class="primitive" 
href="https://doc.rust-lang.org/nightly/std/primitive.bool.html";>bool</a></h4></section></summary><div
 class="docblock"><p>Returns true if the Literal represents a primitive type
 that can be a NaN, and that it’s value is NaN</p>
 </div></details></div></details></div><h2 id="trait-implementations" 
class="section-header">Trait Implementations<a href="#trait-implementations" 
class="anchor">§</a></h2><div id="trait-implementations-list"><details 
class="toggle implementors-toggle" open><summary><section 
id="impl-Clone-for-Datum" class="impl"><a class="src rightside" 
href="../../src/iceberg/spec/values.rs.html#96">source</a><a 
href="#impl-Clone-for-Datum" class="anchor">§</a><h3 class="code-header">impl 
<a class="trai [...]
     H: <a class="trait" 
href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html"; 
title="trait core::hash::Hasher">Hasher</a>,
diff --git a/api/iceberg/spec/struct.Map.html b/api/iceberg/spec/struct.Map.html
index 7989343d..7bd1db56 100644
--- a/api/iceberg/spec/struct.Map.html
+++ b/api/iceberg/spec/struct.Map.html
@@ -1,27 +1,27 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta 
name="viewport" content="width=device-width, initial-scale=1.0"><meta 
name="generator" content="rustdoc"><meta name="description" content="Map is a 
collection of key-value pairs with a key type and a value type. It used in 
Literal::Map, to make it hashable, the order of key-value pairs is stored in a 
separate vector so that we can hash the map in a deterministic way. But it also 
means that the order of key-value pairs is ma [...]
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta 
name="viewport" content="width=device-width, initial-scale=1.0"><meta 
name="generator" content="rustdoc"><meta name="description" content="Map is a 
collection of key-value pairs with a key type and a value type. It used in 
Literal::Map, to make it hashable, the order of key-value pairs is stored in a 
separate vector so that we can hash the map in a deterministic way. But it also 
means that the order of key-value pairs is ma [...]
 It used in Literal::Map, to make it hashable, the order of key-value pairs is 
stored in a separate vector
 so that we can hash the map in a deterministic way. But it also means that the 
order of key-value pairs is matter
 for the hash value.</p>
-</div></details><h2 id="implementations" 
class="section-header">Implementations<a href="#implementations" 
class="anchor">§</a></h2><div id="implementations-list"><details class="toggle 
implementors-toggle" open><summary><section id="impl-Map" class="impl"><a 
class="src rightside" 
href="../../src/iceberg/spec/values.rs.html#1074-1128">source</a><a 
href="#impl-Map" class="anchor">§</a><h3 class="code-header">impl <a 
class="struct" href="struct.Map.html" title="struct iceberg::spec::Map">Ma [...]
-</div></details><details class="toggle method-toggle" open><summary><section 
id="method.len" class="method"><a class="src rightside" 
href="../../src/iceberg/spec/values.rs.html#1084-1086">source</a><h4 
class="code-header">pub fn <a href="#method.len" class="fn">len</a>(&amp;self) 
-&gt; <a class="primitive" 
href="https://doc.rust-lang.org/nightly/std/primitive.usize.html";>usize</a></h4></section></summary><div
 class="docblock"><p>Return the number of key-value pairs in the map.</p>
-</div></details><details class="toggle method-toggle" open><summary><section 
id="method.is_empty" class="method"><a class="src rightside" 
href="../../src/iceberg/spec/values.rs.html#1089-1091">source</a><h4 
class="code-header">pub fn <a href="#method.is_empty" 
class="fn">is_empty</a>(&amp;self) -&gt; <a class="primitive" 
href="https://doc.rust-lang.org/nightly/std/primitive.bool.html";>bool</a></h4></section></summary><div
 class="docblock"><p>Returns true if the map contains no elements.</p>
-</div></details><details class="toggle method-toggle" open><summary><section 
id="method.insert" class="method"><a class="src rightside" 
href="../../src/iceberg/spec/values.rs.html#1096-1105">source</a><h4 
class="code-header">pub fn <a href="#method.insert" class="fn">insert</a>(
+</div></details><h2 id="implementations" 
class="section-header">Implementations<a href="#implementations" 
class="anchor">§</a></h2><div id="implementations-list"><details class="toggle 
implementors-toggle" open><summary><section id="impl-Map" class="impl"><a 
class="src rightside" 
href="../../src/iceberg/spec/values.rs.html#1075-1129">source</a><a 
href="#impl-Map" class="anchor">§</a><h3 class="code-header">impl <a 
class="struct" href="struct.Map.html" title="struct iceberg::spec::Map">Ma [...]
+</div></details><details class="toggle method-toggle" open><summary><section 
id="method.len" class="method"><a class="src rightside" 
href="../../src/iceberg/spec/values.rs.html#1085-1087">source</a><h4 
class="code-header">pub fn <a href="#method.len" class="fn">len</a>(&amp;self) 
-&gt; <a class="primitive" 
href="https://doc.rust-lang.org/nightly/std/primitive.usize.html";>usize</a></h4></section></summary><div
 class="docblock"><p>Return the number of key-value pairs in the map.</p>
+</div></details><details class="toggle method-toggle" open><summary><section 
id="method.is_empty" class="method"><a class="src rightside" 
href="../../src/iceberg/spec/values.rs.html#1090-1092">source</a><h4 
class="code-header">pub fn <a href="#method.is_empty" 
class="fn">is_empty</a>(&amp;self) -&gt; <a class="primitive" 
href="https://doc.rust-lang.org/nightly/std/primitive.bool.html";>bool</a></h4></section></summary><div
 class="docblock"><p>Returns true if the map contains no elements.</p>
+</div></details><details class="toggle method-toggle" open><summary><section 
id="method.insert" class="method"><a class="src rightside" 
href="../../src/iceberg/spec/values.rs.html#1097-1106">source</a><h4 
class="code-header">pub fn <a href="#method.insert" class="fn">insert</a>(
     &amp;mut self,
     key: <a class="enum" href="enum.Literal.html" title="enum 
iceberg::spec::Literal">Literal</a>,
     value: <a class="enum" 
href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html"; 
title="enum core::option::Option">Option</a>&lt;<a class="enum" 
href="enum.Literal.html" title="enum iceberg::spec::Literal">Literal</a>&gt;,
 ) -&gt; <a class="enum" 
href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html"; 
title="enum core::option::Option">Option</a>&lt;<a class="enum" 
href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html"; 
title="enum core::option::Option">Option</a>&lt;<a class="enum" 
href="enum.Literal.html" title="enum 
iceberg::spec::Literal">Literal</a>&gt;&gt;</h4></section></summary><div 
class="docblock"><p>Inserts a key-value pair into the map.
 If the map did not have this key present, None is returned.
 If the map did have this key present, the value is updated, and the old value 
is returned.</p>
-</div></details><details class="toggle method-toggle" open><summary><section 
id="method.get" class="method"><a class="src rightside" 
href="../../src/iceberg/spec/values.rs.html#1109-1111">source</a><h4 
class="code-header">pub fn <a href="#method.get" class="fn">get</a>(&amp;self, 
key: &amp;<a class="enum" href="enum.Literal.html" title="enum 
iceberg::spec::Literal">Literal</a>) -&gt; <a class="enum" 
href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html"; 
title="enum core::o [...]
+</div></details><details class="toggle method-toggle" open><summary><section 
id="method.get" class="method"><a class="src rightside" 
href="../../src/iceberg/spec/values.rs.html#1110-1112">source</a><h4 
class="code-header">pub fn <a href="#method.get" class="fn">get</a>(&amp;self, 
key: &amp;<a class="enum" href="enum.Literal.html" title="enum 
iceberg::spec::Literal">Literal</a>) -&gt; <a class="enum" 
href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html"; 
title="enum core::o [...]
 If the key is not present in the map, None is returned.</p>
-</div></details><details class="toggle method-toggle" open><summary><section 
id="method.has_same_content" class="method"><a class="src rightside" 
href="../../src/iceberg/spec/values.rs.html#1114-1127">source</a><h4 
class="code-header">pub fn <a href="#method.has_same_content" 
class="fn">has_same_content</a>(&amp;self, other: &amp;<a class="struct" 
href="struct.Map.html" title="struct iceberg::spec::Map">Map</a>) -&gt; <a 
class="primitive" href="https://doc.rust-lang.org/nightly/std/primi [...]
-</div></details></div></details></div><h2 id="trait-implementations" 
class="section-header">Trait Implementations<a href="#trait-implementations" 
class="anchor">§</a></h2><div id="trait-implementations-list"><details 
class="toggle implementors-toggle" open><summary><section 
id="impl-Clone-for-Map" class="impl"><a class="src rightside" 
href="../../src/iceberg/spec/values.rs.html#1068">source</a><a 
href="#impl-Clone-for-Map" class="anchor">§</a><h3 class="code-header">impl <a 
class="trait" [...]
+</div></details><details class="toggle method-toggle" open><summary><section 
id="method.has_same_content" class="method"><a class="src rightside" 
href="../../src/iceberg/spec/values.rs.html#1115-1128">source</a><h4 
class="code-header">pub fn <a href="#method.has_same_content" 
class="fn">has_same_content</a>(&amp;self, other: &amp;<a class="struct" 
href="struct.Map.html" title="struct iceberg::spec::Map">Map</a>) -&gt; <a 
class="primitive" href="https://doc.rust-lang.org/nightly/std/primi [...]
+</div></details></div></details></div><h2 id="trait-implementations" 
class="section-header">Trait Implementations<a href="#trait-implementations" 
class="anchor">§</a></h2><div id="trait-implementations-list"><details 
class="toggle implementors-toggle" open><summary><section 
id="impl-Clone-for-Map" class="impl"><a class="src rightside" 
href="../../src/iceberg/spec/values.rs.html#1069">source</a><a 
href="#impl-Clone-for-Map" class="anchor">§</a><h3 class="code-header">impl <a 
class="trait" [...]
     iter: T,
-) -&gt; Self</h4></section></summary><div class='docblock'>Creates a value 
from an iterator. <a 
href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.FromIterator.html#tymethod.from_iter";>Read
 more</a></div></details></div></details><details class="toggle 
implementors-toggle" open><summary><section id="impl-Hash-for-Map" 
class="impl"><a class="src rightside" 
href="../../src/iceberg/spec/values.rs.html#1136-1143">source</a><a 
href="#impl-Hash-for-Map" class="anchor">§</a> [...]
+) -&gt; Self</h4></section></summary><div class='docblock'>Creates a value 
from an iterator. <a 
href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.FromIterator.html#tymethod.from_iter";>Read
 more</a></div></details></div></details><details class="toggle 
implementors-toggle" open><summary><section id="impl-Hash-for-Map" 
class="impl"><a class="src rightside" 
href="../../src/iceberg/spec/values.rs.html#1137-1144">source</a><a 
href="#impl-Hash-for-Map" class="anchor">§</a> [...]
     H: <a class="trait" 
href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html"; 
title="trait core::hash::Hasher">Hasher</a>,
-    Self: <a class="trait" 
href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html"; 
title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div 
class='docblock'>Feeds a slice of this type into the given <a 
href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html"; 
title="trait core::hash::Hasher"><code>Hasher</code></a>. <a 
href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#method.hash_slice";>Read
 more</a></div></details></div></d [...]
+    Self: <a class="trait" 
href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html"; 
title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div 
class='docblock'>Feeds a slice of this type into the given <a 
href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html"; 
title="trait core::hash::Hasher"><code>Hasher</code></a>. <a 
href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#method.hash_slice";>Read
 more</a></div></details></div></d [...]
 by <code>==</code>.</div></details><details class="toggle method-toggle" 
open><summary><section id="method.ne" class="method trait-impl"><span 
class="rightside"><span class="since" title="Stable since Rust version 
1.0.0">1.0.0</span> · <a class="src" 
href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263";>source</a></span><a
 href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a 
href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne";
 class= [...]
-sufficient, and should not be overridden without very good 
reason.</div></details></div></details><section id="impl-Eq-for-Map" 
class="impl"><a class="src rightside" 
href="../../src/iceberg/spec/values.rs.html#1068">source</a><a 
href="#impl-Eq-for-Map" class="anchor">§</a><h3 class="code-header">impl <a 
class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html"; 
title="trait core::cmp::Eq">Eq</a> for <a class="struct" href="struct.Map.html" 
title="struct iceberg::spec:: [...]
+sufficient, and should not be overridden without very good 
reason.</div></details></div></details><section id="impl-Eq-for-Map" 
class="impl"><a class="src rightside" 
href="../../src/iceberg/spec/values.rs.html#1069">source</a><a 
href="#impl-Eq-for-Map" class="anchor">§</a><h3 class="code-header">impl <a 
class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html"; 
title="trait core::cmp::Eq">Eq</a> for <a class="struct" href="struct.Map.html" 
title="struct iceberg::spec:: [...]
     T: 'static + ?<a class="trait" 
href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html"; 
title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div 
class="impl-items"><details class="toggle method-toggle" open><summary><section 
id="method.type_id" class="method trait-impl"><a class="src rightside" 
href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141";>source</a><a 
href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href 
[...]
     I: <a class="trait" 
href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html";
 title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a>,
     &lt;I as <a class="trait" 
href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html";
 title="trait 
core::iter::traits::collect::IntoIterator">IntoIterator</a>&gt;::<a 
class="associatedtype" 
href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.IntoIter";
 title="type core::iter::traits::collect::IntoIterator::IntoIter">IntoIter</a>: 
<a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/d 
[...]
diff --git a/api/iceberg/spec/struct.RawLiteral.html 
b/api/iceberg/spec/struct.RawLiteral.html
index 8be47b65..a61a7e37 100644
--- a/api/iceberg/spec/struct.RawLiteral.html
+++ b/api/iceberg/spec/struct.RawLiteral.html
@@ -1,8 +1,8 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta 
name="viewport" content="width=device-width, initial-scale=1.0"><meta 
name="generator" content="rustdoc"><meta name="description" content="Raw 
literal representation used for serde. The serialize way is used for Avro 
serializer."><title>RawLiteral in iceberg::spec - 
Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans
 [...]
-</div></details><h2 id="implementations" 
class="section-header">Implementations<a href="#implementations" 
class="anchor">§</a></h2><div id="implementations-list"><details class="toggle 
implementors-toggle" open><summary><section id="impl-RawLiteral" 
class="impl"><a class="src rightside" 
href="../../src/iceberg/spec/values.rs.html#2075-2085">source</a><a 
href="#impl-RawLiteral" class="anchor">§</a><h3 class="code-header">impl <a 
class="struct" href="struct.RawLiteral.html" title="struct i [...]
-</div></details><details class="toggle method-toggle" open><summary><section 
id="method.try_into" class="method"><a class="src rightside" 
href="../../src/iceberg/spec/values.rs.html#2082-2084">source</a><h4 
class="code-header">pub fn <a href="#method.try_into" 
class="fn">try_into</a>(self, ty: &amp;<a class="enum" href="enum.Type.html" 
title="enum iceberg::spec::Type">Type</a>) -&gt; <a class="enum" 
href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html"; 
title="enum core::r [...]
-</div></details></div></details></div><h2 id="trait-implementations" 
class="section-header">Trait Implementations<a href="#trait-implementations" 
class="anchor">§</a></h2><div id="trait-implementations-list"><details 
class="toggle implementors-toggle" open><summary><section 
id="impl-Debug-for-RawLiteral" class="impl"><a class="src rightside" 
href="../../src/iceberg/spec/values.rs.html#2070">source</a><a 
href="#impl-Debug-for-RawLiteral" class="anchor">§</a><h3 
class="code-header">impl <a [...]
-    __D: <a class="trait" 
href="https://docs.rs/serde/1.0.216/serde/de/trait.Deserializer.html"; 
title="trait 
serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div
 class='docblock'>Deserialize this value from the given Serde deserializer. <a 
href="https://docs.rs/serde/1.0.216/serde/de/trait.Deserialize.html#tymethod.deserialize";>Read
 more</a></div></details></div></details><details class="toggle 
implementors-toggle" open><summary><section id="impl-Seria [...]
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta 
name="viewport" content="width=device-width, initial-scale=1.0"><meta 
name="generator" content="rustdoc"><meta name="description" content="Raw 
literal representation used for serde. The serialize way is used for Avro 
serializer."><title>RawLiteral in iceberg::spec - 
Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans
 [...]
+</div></details><h2 id="implementations" 
class="section-header">Implementations<a href="#implementations" 
class="anchor">§</a></h2><div id="implementations-list"><details class="toggle 
implementors-toggle" open><summary><section id="impl-RawLiteral" 
class="impl"><a class="src rightside" 
href="../../src/iceberg/spec/values.rs.html#2076-2086">source</a><a 
href="#impl-RawLiteral" class="anchor">§</a><h3 class="code-header">impl <a 
class="struct" href="struct.RawLiteral.html" title="struct i [...]
+</div></details><details class="toggle method-toggle" open><summary><section 
id="method.try_into" class="method"><a class="src rightside" 
href="../../src/iceberg/spec/values.rs.html#2083-2085">source</a><h4 
class="code-header">pub fn <a href="#method.try_into" 
class="fn">try_into</a>(self, ty: &amp;<a class="enum" href="enum.Type.html" 
title="enum iceberg::spec::Type">Type</a>) -&gt; <a class="enum" 
href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html"; 
title="enum core::r [...]
+</div></details></div></details></div><h2 id="trait-implementations" 
class="section-header">Trait Implementations<a href="#trait-implementations" 
class="anchor">§</a></h2><div id="trait-implementations-list"><details 
class="toggle implementors-toggle" open><summary><section 
id="impl-Debug-for-RawLiteral" class="impl"><a class="src rightside" 
href="../../src/iceberg/spec/values.rs.html#2071">source</a><a 
href="#impl-Debug-for-RawLiteral" class="anchor">§</a><h3 
class="code-header">impl <a [...]
+    __D: <a class="trait" 
href="https://docs.rs/serde/1.0.216/serde/de/trait.Deserializer.html"; 
title="trait 
serde::de::Deserializer">Deserializer</a>&lt;'de&gt;,</div></h4></section></summary><div
 class='docblock'>Deserialize this value from the given Serde deserializer. <a 
href="https://docs.rs/serde/1.0.216/serde/de/trait.Deserialize.html#tymethod.deserialize";>Read
 more</a></div></details></div></details><details class="toggle 
implementors-toggle" open><summary><section id="impl-Seria [...]
     __S: <a class="trait" 
href="https://docs.rs/serde/1.0.216/serde/ser/trait.Serializer.html"; 
title="trait 
serde::ser::Serializer">Serializer</a>,</div></h4></section></summary><div 
class='docblock'>Serialize this value into the given Serde serializer. <a 
href="https://docs.rs/serde/1.0.216/serde/ser/trait.Serialize.html#tymethod.serialize";>Read
 more</a></div></details></div></details></div><h2 
id="synthetic-implementations" class="section-header">Auto Trait 
Implementations<a href="#syn [...]
     T: 'static + ?<a class="trait" 
href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html"; 
title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div 
class="impl-items"><details class="toggle method-toggle" open><summary><section 
id="method.type_id" class="method trait-impl"><a class="src rightside" 
href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141";>source</a><a 
href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href 
[...]
     T: ?<a class="trait" 
href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html"; 
title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div 
class="impl-items"><details class="toggle method-toggle" open><summary><section 
id="method.borrow" class="method trait-impl"><a class="src rightside" 
href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210";>source</a><a
 href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a 
href="https:/ [...]
diff --git a/api/iceberg/spec/struct.Struct.html 
b/api/iceberg/spec/struct.Struct.html
index eb118b7f..88a7f662 100644
--- a/api/iceberg/spec/struct.Struct.html
+++ b/api/iceberg/spec/struct.Struct.html
@@ -1,15 +1,15 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta 
name="viewport" content="width=device-width, initial-scale=1.0"><meta 
name="generator" content="rustdoc"><meta name="description" content="The 
partition struct stores the tuple of partition values for each file. Its type 
is derived from the partition fields of the partition spec used to write the 
manifest file. In v2, the partition struct’s field ids must match the ids from 
the partition spec."><title>Struct in iceberg::spe [...]
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta 
name="viewport" content="width=device-width, initial-scale=1.0"><meta 
name="generator" content="rustdoc"><meta name="description" content="The 
partition struct stores the tuple of partition values for each file. Its type 
is derived from the partition fields of the partition spec used to write the 
manifest file. In v2, the partition struct’s field ids must match the ids from 
the partition spec."><title>Struct in iceberg::spe [...]
 Its type is derived from the partition fields of the partition spec used to 
write the manifest file.
 In v2, the partition struct’s field ids must match the ids from the partition 
spec.</p>
-</div></details><h2 id="implementations" 
class="section-header">Implementations<a href="#implementations" 
class="anchor">§</a></h2><div id="implementations-list"><details class="toggle 
implementors-toggle" open><summary><section id="impl-Struct" class="impl"><a 
class="src rightside" 
href="../../src/iceberg/spec/values.rs.html#1561-1592">source</a><a 
href="#impl-Struct" class="anchor">§</a><h3 class="code-header">impl <a 
class="struct" href="struct.Struct.html" title="struct iceberg::spec [...]
-</div></details><details class="toggle method-toggle" open><summary><section 
id="method.iter" class="method"><a class="src rightside" 
href="../../src/iceberg/spec/values.rs.html#1571-1581">source</a><h4 
class="code-header">pub fn <a href="#method.iter" 
class="fn">iter</a>(&amp;self) -&gt; impl <a class="trait" 
href="https://doc.rust-lang.org/nightly/core/iter/traits/exact_size/trait.ExactSizeIterator.html";
 title="trait 
core::iter::traits::exact_size::ExactSizeIterator">ExactSizeIterator< [...]
-</div></details><details class="toggle method-toggle" open><summary><section 
id="method.is_null_at_index" class="method"><a class="src rightside" 
href="../../src/iceberg/spec/values.rs.html#1584-1586">source</a><h4 
class="code-header">pub fn <a href="#method.is_null_at_index" 
class="fn">is_null_at_index</a>(&amp;self, index: <a class="primitive" 
href="https://doc.rust-lang.org/nightly/std/primitive.usize.html";>usize</a>) 
-&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/ [...]
-</div></details><details class="toggle method-toggle" open><summary><section 
id="method.fields" class="method"><a class="src rightside" 
href="../../src/iceberg/spec/values.rs.html#1589-1591">source</a><h4 
class="code-header">pub fn <a href="#method.fields" 
class="fn">fields</a>(&amp;self) -&gt; &amp;[<a class="enum" 
href="enum.Literal.html" title="enum 
iceberg::spec::Literal">Literal</a>]</h4></section></summary><div 
class="docblock"><p>Return fields in the struct.</p>
-</div></details></div></details></div><h2 id="trait-implementations" 
class="section-header">Trait Implementations<a href="#trait-implementations" 
class="anchor">§</a></h2><div id="trait-implementations-list"><details 
class="toggle implementors-toggle" open><summary><section 
id="impl-Clone-for-Struct" class="impl"><a class="src rightside" 
href="../../src/iceberg/spec/values.rs.html#1553">source</a><a 
href="#impl-Clone-for-Struct" class="anchor">§</a><h3 class="code-header">impl 
<a class=" [...]
+</div></details><h2 id="implementations" 
class="section-header">Implementations<a href="#implementations" 
class="anchor">§</a></h2><div id="implementations-list"><details class="toggle 
implementors-toggle" open><summary><section id="impl-Struct" class="impl"><a 
class="src rightside" 
href="../../src/iceberg/spec/values.rs.html#1562-1593">source</a><a 
href="#impl-Struct" class="anchor">§</a><h3 class="code-header">impl <a 
class="struct" href="struct.Struct.html" title="struct iceberg::spec [...]
+</div></details><details class="toggle method-toggle" open><summary><section 
id="method.iter" class="method"><a class="src rightside" 
href="../../src/iceberg/spec/values.rs.html#1572-1582">source</a><h4 
class="code-header">pub fn <a href="#method.iter" 
class="fn">iter</a>(&amp;self) -&gt; impl <a class="trait" 
href="https://doc.rust-lang.org/nightly/core/iter/traits/exact_size/trait.ExactSizeIterator.html";
 title="trait 
core::iter::traits::exact_size::ExactSizeIterator">ExactSizeIterator< [...]
+</div></details><details class="toggle method-toggle" open><summary><section 
id="method.is_null_at_index" class="method"><a class="src rightside" 
href="../../src/iceberg/spec/values.rs.html#1585-1587">source</a><h4 
class="code-header">pub fn <a href="#method.is_null_at_index" 
class="fn">is_null_at_index</a>(&amp;self, index: <a class="primitive" 
href="https://doc.rust-lang.org/nightly/std/primitive.usize.html";>usize</a>) 
-&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/ [...]
+</div></details><details class="toggle method-toggle" open><summary><section 
id="method.fields" class="method"><a class="src rightside" 
href="../../src/iceberg/spec/values.rs.html#1590-1592">source</a><h4 
class="code-header">pub fn <a href="#method.fields" 
class="fn">fields</a>(&amp;self) -&gt; &amp;[<a class="enum" 
href="enum.Literal.html" title="enum 
iceberg::spec::Literal">Literal</a>]</h4></section></summary><div 
class="docblock"><p>Return fields in the struct.</p>
+</div></details></div></details></div><h2 id="trait-implementations" 
class="section-header">Trait Implementations<a href="#trait-implementations" 
class="anchor">§</a></h2><div id="trait-implementations-list"><details 
class="toggle implementors-toggle" open><summary><section 
id="impl-Clone-for-Struct" class="impl"><a class="src rightside" 
href="../../src/iceberg/spec/values.rs.html#1554">source</a><a 
href="#impl-Clone-for-Struct" class="anchor">§</a><h3 class="code-header">impl 
<a class=" [...]
     H: <a class="trait" 
href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html"; 
title="trait core::hash::Hasher">Hasher</a>,
-    Self: <a class="trait" 
href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html"; 
title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div 
class='docblock'>Feeds a slice of this type into the given <a 
href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html"; 
title="trait core::hash::Hasher"><code>Hasher</code></a>. <a 
href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#method.hash_slice";>Read
 more</a></div></details></div></d [...]
+    Self: <a class="trait" 
href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html"; 
title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div 
class='docblock'>Feeds a slice of this type into the given <a 
href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html"; 
title="trait core::hash::Hasher"><code>Hasher</code></a>. <a 
href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#method.hash_slice";>Read
 more</a></div></details></div></d [...]
 by <code>==</code>.</div></details><details class="toggle method-toggle" 
open><summary><section id="method.ne" class="method trait-impl"><span 
class="rightside"><span class="since" title="Stable since Rust version 
1.0.0">1.0.0</span> · <a class="src" 
href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#263";>source</a></span><a
 href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a 
href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne";
 class= [...]
-sufficient, and should not be overridden without very good 
reason.</div></details></div></details><section id="impl-Eq-for-Struct" 
class="impl"><a class="src rightside" 
href="../../src/iceberg/spec/values.rs.html#1553">source</a><a 
href="#impl-Eq-for-Struct" class="anchor">§</a><h3 class="code-header">impl <a 
class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html"; 
title="trait core::cmp::Eq">Eq</a> for <a class="struct" 
href="struct.Struct.html" title="struct iceber [...]
+sufficient, and should not be overridden without very good 
reason.</div></details></div></details><section id="impl-Eq-for-Struct" 
class="impl"><a class="src rightside" 
href="../../src/iceberg/spec/values.rs.html#1554">source</a><a 
href="#impl-Eq-for-Struct" class="anchor">§</a><h3 class="code-header">impl <a 
class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html"; 
title="trait core::cmp::Eq">Eq</a> for <a class="struct" 
href="struct.Struct.html" title="struct iceber [...]
     T: 'static + ?<a class="trait" 
href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html"; 
title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div 
class="impl-items"><details class="toggle method-toggle" open><summary><section 
id="method.type_id" class="method trait-impl"><a class="src rightside" 
href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#141";>source</a><a 
href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href 
[...]
     T: ?<a class="trait" 
href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html"; 
title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div 
class="impl-items"><details class="toggle method-toggle" open><summary><section 
id="method.borrow" class="method trait-impl"><a class="src rightside" 
href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210";>source</a><a
 href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a 
href="https:/ [...]
     T: ?<a class="trait" 
href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html"; 
title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div 
class="impl-items"><details class="toggle method-toggle" open><summary><section 
id="method.borrow_mut" class="method trait-impl"><a class="src rightside" 
href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217";>source</a><a
 href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a 
href= [...]
diff --git a/api/iceberg/spec/struct.StructValueIntoIter.html 
b/api/iceberg/spec/struct.StructValueIntoIter.html
index 5da7172b..97b075ab 100644
--- a/api/iceberg/spec/struct.StructValueIntoIter.html
+++ b/api/iceberg/spec/struct.StructValueIntoIter.html
@@ -1,5 +1,5 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta 
name="viewport" content="width=device-width, initial-scale=1.0"><meta 
name="generator" content="rustdoc"><meta name="description" content="An 
iterator that moves out of a struct."><title>StructValueIntoIter in 
iceberg::spec - 
Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-
 [...]
-</div></details><h2 id="trait-implementations" class="section-header">Trait 
Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div 
id="trait-implementations-list"><details class="toggle implementors-toggle" 
open><summary><section id="impl-Iterator-for-StructValueIntoIter" 
class="impl"><a class="src rightside" 
href="../../src/iceberg/spec/values.rs.html#1608-1617">source</a><a 
href="#impl-Iterator-for-StructValueIntoIter" class="anchor">§</a><h3 
class="code-header"> [...]
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta 
name="viewport" content="width=device-width, initial-scale=1.0"><meta 
name="generator" content="rustdoc"><meta name="description" content="An 
iterator that moves out of a struct."><title>StructValueIntoIter in 
iceberg::spec - 
Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-
 [...]
+</div></details><h2 id="trait-implementations" class="section-header">Trait 
Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div 
id="trait-implementations-list"><details class="toggle implementors-toggle" 
open><summary><section id="impl-Iterator-for-StructValueIntoIter" 
class="impl"><a class="src rightside" 
href="../../src/iceberg/spec/values.rs.html#1609-1618">source</a><a 
href="#impl-Iterator-for-StructValueIntoIter" class="anchor">§</a><h3 
class="code-header"> [...]
     &amp;mut self,
 ) -&gt; <a class="enum" 
href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html"; 
title="enum core::result::Result">Result</a>&lt;[Self::<a 
class="associatedtype" 
href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item";
 title="type core::iter::traits::iterator::Iterator::Item">Item</a>; <a 
class="primitive" 
href="https://doc.rust-lang.org/nightly/std/primitive.array.html";>N</a>], <a 
class="struct" href="https://doc.rust-lang.o [...]
     Self: <a class="trait" 
href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html"; 
title="trait 
core::marker::Sized">Sized</a>,</div></h4></section></summary><span 
class="item-info"><div class="stab unstable"><span 
class="emoji">🔬</span><span>This is a nightly-only experimental API. 
(<code>iter_next_chunk</code>)</span></div></span><div 
class='docblock'>Advances the iterator and returns an array containing the next 
<code>N</code> values. <a href="https://doc.rust-lang.org/n [...]
diff --git a/api/src/iceberg/arrow/reader.rs.html 
b/api/src/iceberg/arrow/reader.rs.html
index 33769b57..d51cf8fa 100644
--- a/api/src/iceberg/arrow/reader.rs.html
+++ b/api/src/iceberg/arrow/reader.rs.html
@@ -1181,6 +1181,34 @@
 <a href="#1181" id="1181">1181</a>
 <a href="#1182" id="1182">1182</a>
 <a href="#1183" id="1183">1183</a>
+<a href="#1184" id="1184">1184</a>
+<a href="#1185" id="1185">1185</a>
+<a href="#1186" id="1186">1186</a>
+<a href="#1187" id="1187">1187</a>
+<a href="#1188" id="1188">1188</a>
+<a href="#1189" id="1189">1189</a>
+<a href="#1190" id="1190">1190</a>
+<a href="#1191" id="1191">1191</a>
+<a href="#1192" id="1192">1192</a>
+<a href="#1193" id="1193">1193</a>
+<a href="#1194" id="1194">1194</a>
+<a href="#1195" id="1195">1195</a>
+<a href="#1196" id="1196">1196</a>
+<a href="#1197" id="1197">1197</a>
+<a href="#1198" id="1198">1198</a>
+<a href="#1199" id="1199">1199</a>
+<a href="#1200" id="1200">1200</a>
+<a href="#1201" id="1201">1201</a>
+<a href="#1202" id="1202">1202</a>
+<a href="#1203" id="1203">1203</a>
+<a href="#1204" id="1204">1204</a>
+<a href="#1205" id="1205">1205</a>
+<a href="#1206" id="1206">1206</a>
+<a href="#1207" id="1207">1207</a>
+<a href="#1208" id="1208">1208</a>
+<a href="#1209" id="1209">1209</a>
+<a href="#1210" id="1210">1210</a>
+<a href="#1211" id="1211">1211</a>
 </pre></div><pre class="rust"><code><span class="comment">// Licensed to the 
Apache Software Foundation (ASF) under one
 // or more contributor license agreements.  See the NOTICE file
 // distributed with this work for additional information
@@ -1231,7 +1259,7 @@
 <span class="kw">use </span><span class="kw">crate</span>::io::{FileIO, 
FileMetadata, FileRead};
 <span class="kw">use </span><span class="kw">crate</span>::runtime::spawn;
 <span class="kw">use </span><span 
class="kw">crate</span>::scan::{ArrowRecordBatchStream, FileScanTask, 
FileScanTaskStream};
-<span class="kw">use </span><span class="kw">crate</span>::spec::{Datum, 
Schema};
+<span class="kw">use </span><span class="kw">crate</span>::spec::{Datum, 
PrimitiveType, Schema};
 <span class="kw">use </span><span 
class="kw">crate</span>::utils::available_parallelism;
 <span class="kw">use crate</span>::{Error, ErrorKind};
 
@@ -1482,6 +1510,28 @@
         parquet_schema: <span class="kw-2">&amp;</span>SchemaDescriptor,
         arrow_schema: <span class="kw-2">&amp;</span>ArrowSchemaRef,
     ) -&gt; <span class="prelude-ty">Result</span>&lt;ProjectionMask&gt; {
+        <span class="kw">fn </span>type_promotion_is_valid(
+            file_type: <span class="prelude-ty">Option</span>&lt;<span 
class="kw-2">&amp;</span>PrimitiveType&gt;,
+            projected_type: <span class="prelude-ty">Option</span>&lt;<span 
class="kw-2">&amp;</span>PrimitiveType&gt;,
+        ) -&gt; bool {
+            <span class="kw">match </span>(file_type, projected_type) {
+                (<span class="prelude-val">Some</span>(lhs), <span 
class="prelude-val">Some</span>(rhs)) <span class="kw">if </span>lhs == rhs 
=&gt; <span class="bool-val">true</span>,
+                (<span class="prelude-val">Some</span>(PrimitiveType::Int), 
<span class="prelude-val">Some</span>(PrimitiveType::Long)) =&gt; <span 
class="bool-val">true</span>,
+                (<span class="prelude-val">Some</span>(PrimitiveType::Float), 
<span class="prelude-val">Some</span>(PrimitiveType::Double)) =&gt; <span 
class="bool-val">true</span>,
+                (
+                    <span 
class="prelude-val">Some</span>(PrimitiveType::Decimal {
+                        precision: file_precision,
+                        scale: file_scale,
+                    }),
+                    <span 
class="prelude-val">Some</span>(PrimitiveType::Decimal {
+                        precision: requested_precision,
+                        scale: requested_scale,
+                    }),
+                ) <span class="kw">if </span>requested_precision &gt;= 
file_precision &amp;&amp; file_scale == requested_scale =&gt; <span 
class="bool-val">true</span>,
+                <span class="kw">_ </span>=&gt; <span 
class="bool-val">false</span>,
+            }
+        }
+
         <span class="kw">if </span>field_ids.is_empty() {
             <span class="prelude-val">Ok</span>(ProjectionMask::all())
         } <span class="kw">else </span>{
@@ -1513,7 +1563,13 @@
                     <span class="kw">return </span><span 
class="bool-val">false</span>;
                 }
 
-                <span class="kw">if </span>iceberg_field.unwrap().field_type 
!= parquet_iceberg_field.unwrap().field_type {
+                <span class="kw">if </span>!type_promotion_is_valid(
+                    parquet_iceberg_field
+                        .unwrap()
+                        .field_type
+                        .as_primitive_type(),
+                    iceberg_field.unwrap().field_type.as_primitive_type(),
+                ) {
                     <span class="kw">return </span><span 
class="bool-val">false</span>;
                 }
 
diff --git a/api/src/iceberg/io/storage.rs.html 
b/api/src/iceberg/io/storage.rs.html
index 7666ce54..9cdb12e3 100644
--- a/api/src/iceberg/io/storage.rs.html
+++ b/api/src/iceberg/io/storage.rs.html
@@ -169,6 +169,13 @@
 <a href="#169" id="169">169</a>
 <a href="#170" id="170">170</a>
 <a href="#171" id="171">171</a>
+<a href="#172" id="172">172</a>
+<a href="#173" id="173">173</a>
+<a href="#174" id="174">174</a>
+<a href="#175" id="175">175</a>
+<a href="#176" id="176">176</a>
+<a href="#177" id="177">177</a>
+<a href="#178" id="178">178</a>
 </pre></div><pre class="rust"><code><span class="comment">// Licensed to the 
Apache Software Foundation (ASF) under one
 // or more contributor license agreements.  See the NOTICE file
 // distributed with this work for additional information
@@ -188,6 +195,7 @@
 
 </span><span class="kw">use </span>std::sync::Arc;
 
+<span class="kw">use </span>opendal::layers::RetryLayer;
 <span class="attr">#[cfg(feature = <span class="string">"storage-gcs"</span>)]
 </span><span class="kw">use </span>opendal::services::GcsConfig;
 <span class="attr">#[cfg(feature = <span class="string">"storage-s3"</span>)]
@@ -265,7 +273,7 @@
         path: <span class="kw-2">&amp;</span><span class="lifetime">'a 
</span><span class="kw">impl </span>AsRef&lt;str&gt;,
     ) -&gt; <span class="kw">crate</span>::Result&lt;(Operator, <span 
class="kw-2">&amp;</span><span class="lifetime">'a </span>str)&gt; {
         <span class="kw">let </span>path = path.as_ref();
-        <span class="kw">match </span><span class="self">self </span>{
+        <span class="kw">let </span>(operator, relative_path): (Operator, 
<span class="kw-2">&amp;</span>str) = <span class="kw">match </span><span 
class="self">self </span>{
             <span class="attr">#[cfg(feature = <span 
class="string">"storage-memory"</span>)]
             </span>Storage::Memory(op) =&gt; {
                 <span class="kw">if let </span><span 
class="prelude-val">Some</span>(stripped) = path.strip_prefix(<span 
class="string">"memory:/"</span>) {
@@ -326,7 +334,13 @@
                 ErrorKind::FeatureUnsupported,
                 <span class="string">"No storage service has been 
enabled"</span>,
             )),
-        }
+        }<span class="question-mark">?</span>;
+
+        <span class="comment">// Transient errors are common for object 
stores; however there's no
+        // harm in retrying temporary failures for other storage backends as 
well.
+        </span><span class="kw">let </span>operator = 
operator.layer(RetryLayer::new());
+
+        <span class="prelude-val">Ok</span>((operator, relative_path))
     }
 
     <span class="doccomment">/// Parse scheme.
diff --git a/api/src/iceberg/spec/values.rs.html 
b/api/src/iceberg/spec/values.rs.html
index a977c463..e66a610a 100644
--- a/api/src/iceberg/spec/values.rs.html
+++ b/api/src/iceberg/spec/values.rs.html
@@ -3476,6 +3476,7 @@
 <a href="#3476" id="3476">3476</a>
 <a href="#3477" id="3477">3477</a>
 <a href="#3478" id="3478">3478</a>
+<a href="#3479" id="3479">3479</a>
 </pre></div><pre class="rust"><code><span class="comment">// Licensed to the 
Apache Software Foundation (ASF) under one
 // or more contributor license agreements.  See the NOTICE file
 // distributed with this work for additional information
@@ -4497,6 +4498,7 @@
                 <span class="kw">match </span>(<span 
class="kw-2">&amp;</span><span class="self">self</span>.literal, <span 
class="kw-2">&amp;</span><span class="self">self</span>.r#type, 
target_primitive_type) {
                     (PrimitiveLiteral::Int(val), <span class="kw">_</span>, 
PrimitiveType::Int) =&gt; <span class="prelude-val">Ok</span>(Datum::int(<span 
class="kw-2">*</span>val)),
                     (PrimitiveLiteral::Int(val), <span class="kw">_</span>, 
PrimitiveType::Date) =&gt; <span 
class="prelude-val">Ok</span>(Datum::date(<span class="kw-2">*</span>val)),
+                    (PrimitiveLiteral::Int(val), <span class="kw">_</span>, 
PrimitiveType::Long) =&gt; <span 
class="prelude-val">Ok</span>(Datum::long(<span class="kw-2">*</span>val)),
                     <span class="comment">// TODO: implement more type 
conversions
                     </span>(<span class="kw">_</span>, self_type, target_type) 
<span class="kw">if </span>self_type == target_type =&gt; <span 
class="prelude-val">Ok</span>(<span class="self">self</span>),
                     <span class="kw">_ </span>=&gt; <span 
class="prelude-val">Err</span>(Error::new(

Reply via email to