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

github-actions[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 f7e2c062e deploy: 5b8e78c9c7a71d8569715c4a97ce9f87bf3fb550
f7e2c062e is described below

commit f7e2c062edbcda5ce06566247ef8e507acd964b7
Author: blackmwk <[email protected]>
AuthorDate: Thu May 21 09:19:27 2026 +0000

    deploy: 5b8e78c9c7a71d8569715c4a97ce9f87bf3fb550
---
 api/iceberg/spec/enum.Literal.html                 |   8 +-
 api/iceberg_catalog_hms/struct.HmsCatalog.html     |  96 ++--
 .../struct.HmsCatalogBuilder.html                  |   4 +-
 api/src/iceberg/spec/values/literal.rs.html        | 535 ++++++++++++---------
 api/trait.impl/iceberg/catalog/trait.Catalog.js    |   4 +-
 .../iceberg/catalog/trait.CatalogBuilder.js        |   4 +-
 6 files changed, 355 insertions(+), 296 deletions(-)

diff --git a/api/iceberg/spec/enum.Literal.html 
b/api/iceberg/spec/enum.Literal.html
index 9eca5b8fc..3e744b1bb 100644
--- a/api/iceberg/spec/enum.Literal.html
+++ b/api/iceberg/spec/enum.Literal.html
@@ -14,7 +14,7 @@ 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/literal.rs.html#58-746">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:: [...]
+</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/literal.rs.html#58-752">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:: [...]
 <p>Example:</p>
 
 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span 
class="kw">use </span>iceberg::spec::{Literal, PrimitiveLiteral};
@@ -156,11 +156,11 @@ 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/literal.rs.html#418-423">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.htm [...]
-</div></details><details class="toggle method-toggle" open><summary><section 
id="method.try_from_json" class="method"><a class="src rightside" 
href="../../src/iceberg/spec/values/literal.rs.html#428-599">Source</a><h4 
class="code-header">pub fn <a href="#method.try_from_json" 
class="fn">try_from_json</a>(value: <a class="enum" 
href="https://docs.rs/serde_json/1.0.149/serde_json/value/enum.Value.html"; 
title="enum serde_json::value::Value">JsonValue</a>, data_type: &amp;<a 
class="enum" hre [...]
+</div></details><details class="toggle method-toggle" open><summary><section 
id="method.try_from_json" class="method"><a class="src rightside" 
href="../../src/iceberg/spec/values/literal.rs.html#428-605">Source</a><h4 
class="code-header">pub fn <a href="#method.try_from_json" 
class="fn">try_from_json</a>(value: <a class="enum" 
href="https://docs.rs/serde_json/1.0.149/serde_json/value/enum.Value.html"; 
title="enum serde_json::value::Value">JsonValue</a>, data_type: &amp;<a 
class="enum" hre [...]
 <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/literal.rs.html#604-726">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> 
[...]
+</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/literal.rs.html#610-732">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> 
[...]
 <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/literal.rs.html#729-745">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/night [...]
+</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/literal.rs.html#735-751">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/night [...]
 </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/literal.rs.html#40">Source</a><a 
href="#impl-Clone-for-Literal" class="anchor">§</a><h3 class="code-header">impl 
<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 [...]
diff --git a/api/iceberg_catalog_hms/struct.HmsCatalog.html 
b/api/iceberg_catalog_hms/struct.HmsCatalog.html
index afe9f9a7a..9c9eaf7b4 100644
--- a/api/iceberg_catalog_hms/struct.HmsCatalog.html
+++ b/api/iceberg_catalog_hms/struct.HmsCatalog.html
@@ -1,19 +1,19 @@
 <!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="Hive 
metastore Catalog."><title>HmsCatalog in iceberg_catalog_hms - 
Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-6b053e98.ttf.woff2,FiraSans-Italic-81dc35de.woff2,FiraSans-Regular-0fe48ade.woff2,FiraSans-Medi
 [...]
-</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-HmsCatalog" 
class="impl"><a class="src rightside" 
href="../src/iceberg_catalog_hms/catalog.rs.html#195-247">Source</a><a 
href="#impl-HmsCatalog" class="anchor">§</a><h3 class="code-header">impl <a 
class="struct" href="struct.HmsCatalog.html" title="struc [...]
-</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-Catalog-for-HmsCatalog" class="impl"><a class="src rightside" 
href="../src/iceberg_catalog_hms/catalog.rs.html#250-720">Source</a><a 
href="#impl-Catalog-for-HmsCatalog" class="anchor">§</a><h3 class="code-hea 
[...]
+</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-HmsCatalog" 
class="impl"><a class="src rightside" 
href="../src/iceberg_catalog_hms/catalog.rs.html#195-247">Source</a><a 
href="#impl-HmsCatalog" class="anchor">§</a><h3 class="code-header">impl <a 
class="struct" href="struct.HmsCatalog.html" title="struc [...]
+</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-Catalog-for-HmsCatalog" class="impl"><a class="src rightside" 
href="../src/iceberg_catalog_hms/catalog.rs.html#250-720">Source</a><a 
href="#impl-Catalog-for-HmsCatalog" class="anchor">§</a><h3 class="code-hea 
[...]
     &amp;'life0 self,
-    parent: <a class="enum" 
href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html"; 
title="enum core::option::Option">Option</a>&lt;&amp;'life1 <a class="struct" 
href="../iceberg/catalog/struct.NamespaceIdent.html" title="struct 
iceberg::catalog::NamespaceIdent">NamespaceIdent</a>&gt;,
-) -&gt; <a class="struct" 
href="https://doc.rust-lang.org/nightly/core/pin/struct.Pin.html"; title="struct 
core::pin::Pin">Pin</a>&lt;<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/core/future/future/trait.Future.html"; 
title="trait core::future::future::Future">Future</a>&lt;Output = <a 
class="type" href="../iceberg/error/type.Result.html" title= [...]
+    parent: <a class="enum" 
href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html"; 
title="enum core::option::Option">Option</a>&lt;&amp;'life1 NamespaceIdent&gt;,
+) -&gt; <a class="struct" 
href="https://doc.rust-lang.org/nightly/core/pin/struct.Pin.html"; title="struct 
core::pin::Pin">Pin</a>&lt;<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/core/future/future/trait.Future.html"; 
title="trait core::future::future::Future">Future</a>&lt;Output = Result&lt;<a 
class="struct" href="https://doc.rust-lang.org/nig [...]
     Self: 'async_trait,
     'life0: 'async_trait,
     'life1: 'async_trait,</div></h4></section></summary><div 
class="docblock"><p>HMS doesn’t support nested namespaces.</p>
 <p>We will return empty list if parent is some.</p>
 <p>Align with java implementation: <a 
href="https://github.com/apache/iceberg/blob/9bd62f79f8cd973c39d14e89163cb1c707470ed2/hive-metastore/src/main/java/org/apache/iceberg/hive/HiveCatalog.java#L305C26-L330";>https://github.com/apache/iceberg/blob/9bd62f79f8cd973c39d14e89163cb1c707470ed2/hive-metastore/src/main/java/org/apache/iceberg/hive/HiveCatalog.java#L305C26-L330</a></p>
-</div></details><details class="toggle method-toggle" open><summary><section 
id="method.create_namespace" class="method trait-impl"><a class="src rightside" 
href="../src/iceberg_catalog_hms/catalog.rs.html#292-312">Source</a><a 
href="#method.create_namespace" class="anchor">§</a><h4 class="code-header">fn 
<a href="../iceberg/catalog/trait.Catalog.html#tymethod.create_namespace" 
class="fn">create_namespace</a>&lt;'life0, 'life1, 'async_trait&gt;(
+</div></details><details class="toggle method-toggle" open><summary><section 
id="method.create_namespace" class="method trait-impl"><a class="src rightside" 
href="../src/iceberg_catalog_hms/catalog.rs.html#292-312">Source</a><a 
href="#method.create_namespace" class="anchor">§</a><h4 class="code-header">fn 
<a class="fn">create_namespace</a>&lt;'life0, 'life1, 'async_trait&gt;(
     &amp;'life0 self,
-    namespace: &amp;'life1 <a class="struct" 
href="../iceberg/catalog/struct.NamespaceIdent.html" title="struct 
iceberg::catalog::NamespaceIdent">NamespaceIdent</a>,
+    namespace: &amp;'life1 NamespaceIdent,
     properties: <a class="struct" 
href="https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html";
 title="struct std::collections::hash::map::HashMap">HashMap</a>&lt;<a 
class="struct" 
href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html"; 
title="struct alloc::string::String">String</a>, <a class="struct" 
href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html"; 
title="struct alloc::string::String">String</a>&gt;,
-) -&gt; <a class="struct" 
href="https://doc.rust-lang.org/nightly/core/pin/struct.Pin.html"; title="struct 
core::pin::Pin">Pin</a>&lt;<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/core/future/future/trait.Future.html"; 
title="trait core::future::future::Future">Future</a>&lt;Output = <a 
class="type" href="../iceberg/error/type.Result.html" title= [...]
+) -&gt; <a class="struct" 
href="https://doc.rust-lang.org/nightly/core/pin/struct.Pin.html"; title="struct 
core::pin::Pin">Pin</a>&lt;<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/core/future/future/trait.Future.html"; 
title="trait core::future::future::Future">Future</a>&lt;Output = 
Result&lt;Namespace&gt;&gt; + <a class="trait" href="https://do [...]
     Self: 'async_trait,
     'life0: 'async_trait,
     'life1: 'async_trait,</div></h4></section></summary><div 
class="docblock"><p>Creates a new namespace with the given identifier and 
properties.</p>
@@ -30,10 +30,10 @@ successfully converted into a database configuration.</li>
 <li>Errors from the underlying database creation process, converted using
 <code>from_thrift_error</code>.</li>
 </ul>
-</div></details><details class="toggle method-toggle" open><summary><section 
id="method.get_namespace" class="method trait-impl"><a class="src rightside" 
href="../src/iceberg_catalog_hms/catalog.rs.html#324-354">Source</a><a 
href="#method.get_namespace" class="anchor">§</a><h4 class="code-header">fn <a 
href="../iceberg/catalog/trait.Catalog.html#tymethod.get_namespace" 
class="fn">get_namespace</a>&lt;'life0, 'life1, 'async_trait&gt;(
+</div></details><details class="toggle method-toggle" open><summary><section 
id="method.get_namespace" class="method trait-impl"><a class="src rightside" 
href="../src/iceberg_catalog_hms/catalog.rs.html#324-354">Source</a><a 
href="#method.get_namespace" class="anchor">§</a><h4 class="code-header">fn <a 
class="fn">get_namespace</a>&lt;'life0, 'life1, 'async_trait&gt;(
     &amp;'life0 self,
-    namespace: &amp;'life1 <a class="struct" 
href="../iceberg/catalog/struct.NamespaceIdent.html" title="struct 
iceberg::catalog::NamespaceIdent">NamespaceIdent</a>,
-) -&gt; <a class="struct" 
href="https://doc.rust-lang.org/nightly/core/pin/struct.Pin.html"; title="struct 
core::pin::Pin">Pin</a>&lt;<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/core/future/future/trait.Future.html"; 
title="trait core::future::future::Future">Future</a>&lt;Output = <a 
class="type" href="../iceberg/error/type.Result.html" title= [...]
+    namespace: &amp;'life1 NamespaceIdent,
+) -&gt; <a class="struct" 
href="https://doc.rust-lang.org/nightly/core/pin/struct.Pin.html"; title="struct 
core::pin::Pin">Pin</a>&lt;<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/core/future/future/trait.Future.html"; 
title="trait core::future::future::Future">Future</a>&lt;Output = 
Result&lt;Namespace&gt;&gt; + <a class="trait" href="https://do [...]
     Self: 'async_trait,
     'life0: 'async_trait,
     'life1: 'async_trait,</div></h4></section></summary><div 
class="docblock"><p>Retrieves a namespace by its identifier.</p>
@@ -46,10 +46,10 @@ Constructs a <code>Namespace</code> object with the 
retrieved data and returns i
 <li>If there is an error querying the database, returned by
 <code>from_thrift_error</code>.</li>
 </ul>
-</div></details><details class="toggle method-toggle" open><summary><section 
id="method.namespace_exists" class="method trait-impl"><a class="src rightside" 
href="../src/iceberg_catalog_hms/catalog.rs.html#368-385">Source</a><a 
href="#method.namespace_exists" class="anchor">§</a><h4 class="code-header">fn 
<a href="../iceberg/catalog/trait.Catalog.html#tymethod.namespace_exists" 
class="fn">namespace_exists</a>&lt;'life0, 'life1, 'async_trait&gt;(
+</div></details><details class="toggle method-toggle" open><summary><section 
id="method.namespace_exists" class="method trait-impl"><a class="src rightside" 
href="../src/iceberg_catalog_hms/catalog.rs.html#368-385">Source</a><a 
href="#method.namespace_exists" class="anchor">§</a><h4 class="code-header">fn 
<a class="fn">namespace_exists</a>&lt;'life0, 'life1, 'async_trait&gt;(
     &amp;'life0 self,
-    namespace: &amp;'life1 <a class="struct" 
href="../iceberg/catalog/struct.NamespaceIdent.html" title="struct 
iceberg::catalog::NamespaceIdent">NamespaceIdent</a>,
-) -&gt; <a class="struct" 
href="https://doc.rust-lang.org/nightly/core/pin/struct.Pin.html"; title="struct 
core::pin::Pin">Pin</a>&lt;<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/core/future/future/trait.Future.html"; 
title="trait core::future::future::Future">Future</a>&lt;Output = <a 
class="type" href="../iceberg/error/type.Result.html" title= [...]
+    namespace: &amp;'life1 NamespaceIdent,
+) -&gt; <a class="struct" 
href="https://doc.rust-lang.org/nightly/core/pin/struct.Pin.html"; title="struct 
core::pin::Pin">Pin</a>&lt;<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/core/future/future/trait.Future.html"; 
title="trait core::future::future::Future">Future</a>&lt;Output = Result&lt;<a 
class="primitive" href="https://doc.rust-lang.org/ [...]
     Self: 'async_trait,
     'life0: 'async_trait,
     'life1: 'async_trait,</div></h4></section></summary><div 
class="docblock"><p>Checks if a namespace exists within the Hive Metastore.</p>
@@ -64,11 +64,11 @@ to determine if the specified namespace (database) 
exists.</p>
 <li><code>Err(...)</code> if an error occurs during validation or the Hive 
Metastore
 query, with the error encapsulating the issue.</li>
 </ul>
-</div></details><details class="toggle method-toggle" open><summary><section 
id="method.update_namespace" class="method trait-impl"><a class="src rightside" 
href="../src/iceberg_catalog_hms/catalog.rs.html#397-427">Source</a><a 
href="#method.update_namespace" class="anchor">§</a><h4 class="code-header">fn 
<a href="../iceberg/catalog/trait.Catalog.html#tymethod.update_namespace" 
class="fn">update_namespace</a>&lt;'life0, 'life1, 'async_trait&gt;(
+</div></details><details class="toggle method-toggle" open><summary><section 
id="method.update_namespace" class="method trait-impl"><a class="src rightside" 
href="../src/iceberg_catalog_hms/catalog.rs.html#397-427">Source</a><a 
href="#method.update_namespace" class="anchor">§</a><h4 class="code-header">fn 
<a class="fn">update_namespace</a>&lt;'life0, 'life1, 'async_trait&gt;(
     &amp;'life0 self,
-    namespace: &amp;'life1 <a class="struct" 
href="../iceberg/catalog/struct.NamespaceIdent.html" title="struct 
iceberg::catalog::NamespaceIdent">NamespaceIdent</a>,
+    namespace: &amp;'life1 NamespaceIdent,
     properties: <a class="struct" 
href="https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html";
 title="struct std::collections::hash::map::HashMap">HashMap</a>&lt;<a 
class="struct" 
href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html"; 
title="struct alloc::string::String">String</a>, <a class="struct" 
href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html"; 
title="struct alloc::string::String">String</a>&gt;,
-) -&gt; <a class="struct" 
href="https://doc.rust-lang.org/nightly/core/pin/struct.Pin.html"; title="struct 
core::pin::Pin">Pin</a>&lt;<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/core/future/future/trait.Future.html"; 
title="trait core::future::future::Future">Future</a>&lt;Output = <a 
class="type" href="../iceberg/error/type.Result.html" title= [...]
+) -&gt; <a class="struct" 
href="https://doc.rust-lang.org/nightly/core/pin/struct.Pin.html"; title="struct 
core::pin::Pin">Pin</a>&lt;<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/core/future/future/trait.Future.html"; 
title="trait core::future::future::Future">Future</a>&lt;Output = Result&lt;<a 
class="primitive" href="https://doc.rust-lang.org/ [...]
     Self: 'async_trait,
     'life0: 'async_trait,
     'life1: 'async_trait,</div></h4></section></summary><div 
class="docblock"><p>Asynchronously updates properties of an existing 
namespace.</p>
@@ -79,10 +79,10 @@ in the Hive Metastore.</p>
 <p>Returns <code>Ok(())</code> if the namespace update is successful. If the
 namespace cannot be updated due to missing information or an error
 during the update process, an <code>Err(...)</code> is returned.</p>
-</div></details><details class="toggle method-toggle" open><summary><section 
id="method.drop_namespace" class="method trait-impl"><a class="src rightside" 
href="../src/iceberg_catalog_hms/catalog.rs.html#436-453">Source</a><a 
href="#method.drop_namespace" class="anchor">§</a><h4 class="code-header">fn <a 
href="../iceberg/catalog/trait.Catalog.html#tymethod.drop_namespace" 
class="fn">drop_namespace</a>&lt;'life0, 'life1, 'async_trait&gt;(
+</div></details><details class="toggle method-toggle" open><summary><section 
id="method.drop_namespace" class="method trait-impl"><a class="src rightside" 
href="../src/iceberg_catalog_hms/catalog.rs.html#436-453">Source</a><a 
href="#method.drop_namespace" class="anchor">§</a><h4 class="code-header">fn <a 
class="fn">drop_namespace</a>&lt;'life0, 'life1, 'async_trait&gt;(
     &amp;'life0 self,
-    namespace: &amp;'life1 <a class="struct" 
href="../iceberg/catalog/struct.NamespaceIdent.html" title="struct 
iceberg::catalog::NamespaceIdent">NamespaceIdent</a>,
-) -&gt; <a class="struct" 
href="https://doc.rust-lang.org/nightly/core/pin/struct.Pin.html"; title="struct 
core::pin::Pin">Pin</a>&lt;<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/core/future/future/trait.Future.html"; 
title="trait core::future::future::Future">Future</a>&lt;Output = <a 
class="type" href="../iceberg/error/type.Result.html" title= [...]
+    namespace: &amp;'life1 NamespaceIdent,
+) -&gt; <a class="struct" 
href="https://doc.rust-lang.org/nightly/core/pin/struct.Pin.html"; title="struct 
core::pin::Pin">Pin</a>&lt;<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/core/future/future/trait.Future.html"; 
title="trait core::future::future::Future">Future</a>&lt;Output = Result&lt;<a 
class="primitive" href="https://doc.rust-lang.org/ [...]
     Self: 'async_trait,
     'life0: 'async_trait,
     'life1: 'async_trait,</div></h4></section></summary><div 
class="docblock"><p>Asynchronously drops a namespace from the Hive 
Metastore.</p>
@@ -93,10 +93,10 @@ during the update process, an <code>Err(...)</code> is 
returned.</p>
 <li><code>Err(...)</code> signifies failure to drop the namespace due to 
validation
 errors, connectivity issues, or Hive Metastore constraints.</li>
 </ul>
-</div></details><details class="toggle method-toggle" open><summary><section 
id="method.list_tables" class="method trait-impl"><a class="src rightside" 
href="../src/iceberg_catalog_hms/catalog.rs.html#464-487">Source</a><a 
href="#method.list_tables" class="anchor">§</a><h4 class="code-header">fn <a 
href="../iceberg/catalog/trait.Catalog.html#tymethod.list_tables" 
class="fn">list_tables</a>&lt;'life0, 'life1, 'async_trait&gt;(
+</div></details><details class="toggle method-toggle" open><summary><section 
id="method.list_tables" class="method trait-impl"><a class="src rightside" 
href="../src/iceberg_catalog_hms/catalog.rs.html#464-487">Source</a><a 
href="#method.list_tables" class="anchor">§</a><h4 class="code-header">fn <a 
class="fn">list_tables</a>&lt;'life0, 'life1, 'async_trait&gt;(
     &amp;'life0 self,
-    namespace: &amp;'life1 <a class="struct" 
href="../iceberg/catalog/struct.NamespaceIdent.html" title="struct 
iceberg::catalog::NamespaceIdent">NamespaceIdent</a>,
-) -&gt; <a class="struct" 
href="https://doc.rust-lang.org/nightly/core/pin/struct.Pin.html"; title="struct 
core::pin::Pin">Pin</a>&lt;<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/core/future/future/trait.Future.html"; 
title="trait core::future::future::Future">Future</a>&lt;Output = <a 
class="type" href="../iceberg/error/type.Result.html" title= [...]
+    namespace: &amp;'life1 NamespaceIdent,
+) -&gt; <a class="struct" 
href="https://doc.rust-lang.org/nightly/core/pin/struct.Pin.html"; title="struct 
core::pin::Pin">Pin</a>&lt;<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/core/future/future/trait.Future.html"; 
title="trait core::future::future::Future">Future</a>&lt;Output = Result&lt;<a 
class="struct" href="https://doc.rust-lang.org/nig [...]
     Self: 'async_trait,
     'life0: 'async_trait,
     'life1: 'async_trait,</div></h4></section></summary><div 
class="docblock"><p>Asynchronously lists all tables within a specified 
namespace.</p>
@@ -108,11 +108,11 @@ representing a table within the specified namespace.</li>
 <li><code>Err(...)</code> if an error occurs during namespace validation or 
while
 querying the database.</li>
 </ul>
-</div></details><details class="toggle method-toggle" open><summary><section 
id="method.create_table" class="method trait-impl"><a class="src rightside" 
href="../src/iceberg_catalog_hms/catalog.rs.html#501-549">Source</a><a 
href="#method.create_table" class="anchor">§</a><h4 class="code-header">fn <a 
href="../iceberg/catalog/trait.Catalog.html#tymethod.create_table" 
class="fn">create_table</a>&lt;'life0, 'life1, 'async_trait&gt;(
+</div></details><details class="toggle method-toggle" open><summary><section 
id="method.create_table" class="method trait-impl"><a class="src rightside" 
href="../src/iceberg_catalog_hms/catalog.rs.html#501-549">Source</a><a 
href="#method.create_table" class="anchor">§</a><h4 class="code-header">fn <a 
class="fn">create_table</a>&lt;'life0, 'life1, 'async_trait&gt;(
     &amp;'life0 self,
-    namespace: &amp;'life1 <a class="struct" 
href="../iceberg/catalog/struct.NamespaceIdent.html" title="struct 
iceberg::catalog::NamespaceIdent">NamespaceIdent</a>,
-    creation: <a class="struct" 
href="../iceberg/catalog/struct.TableCreation.html" title="struct 
iceberg::catalog::TableCreation">TableCreation</a>,
-) -&gt; <a class="struct" 
href="https://doc.rust-lang.org/nightly/core/pin/struct.Pin.html"; title="struct 
core::pin::Pin">Pin</a>&lt;<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/core/future/future/trait.Future.html"; 
title="trait core::future::future::Future">Future</a>&lt;Output = <a 
class="type" href="../iceberg/error/type.Result.html" title= [...]
+    namespace: &amp;'life1 NamespaceIdent,
+    creation: TableCreation,
+) -&gt; <a class="struct" 
href="https://doc.rust-lang.org/nightly/core/pin/struct.Pin.html"; title="struct 
core::pin::Pin">Pin</a>&lt;<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/core/future/future/trait.Future.html"; 
title="trait core::future::future::Future">Future</a>&lt;Output = 
Result&lt;Table&gt;&gt; + <a class="trait" href="https://doc.ru [...]
     Self: 'async_trait,
     'life0: 'async_trait,
     'life1: 'async_trait,</div></h4></section></summary><div 
class="docblock"><p>Creates a new table within a specified namespace using the 
provided
@@ -125,10 +125,10 @@ table.</p>
 namespace identifiers, failure to determine a default storage location,
 issues generating or writing table metadata, and errors communicating
 with the Hive Metastore.</p>
-</div></details><details class="toggle method-toggle" open><summary><section 
id="method.load_table" class="method trait-impl"><a class="src rightside" 
href="../src/iceberg_catalog_hms/catalog.rs.html#563-588">Source</a><a 
href="#method.load_table" class="anchor">§</a><h4 class="code-header">fn <a 
href="../iceberg/catalog/trait.Catalog.html#tymethod.load_table" 
class="fn">load_table</a>&lt;'life0, 'life1, 'async_trait&gt;(
+</div></details><details class="toggle method-toggle" open><summary><section 
id="method.load_table" class="method trait-impl"><a class="src rightside" 
href="../src/iceberg_catalog_hms/catalog.rs.html#563-588">Source</a><a 
href="#method.load_table" class="anchor">§</a><h4 class="code-header">fn <a 
class="fn">load_table</a>&lt;'life0, 'life1, 'async_trait&gt;(
     &amp;'life0 self,
-    table: &amp;'life1 <a class="struct" 
href="../iceberg/catalog/struct.TableIdent.html" title="struct 
iceberg::catalog::TableIdent">TableIdent</a>,
-) -&gt; <a class="struct" 
href="https://doc.rust-lang.org/nightly/core/pin/struct.Pin.html"; title="struct 
core::pin::Pin">Pin</a>&lt;<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/core/future/future/trait.Future.html"; 
title="trait core::future::future::Future">Future</a>&lt;Output = <a 
class="type" href="../iceberg/error/type.Result.html" title= [...]
+    table: &amp;'life1 TableIdent,
+) -&gt; <a class="struct" 
href="https://doc.rust-lang.org/nightly/core/pin/struct.Pin.html"; title="struct 
core::pin::Pin">Pin</a>&lt;<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/core/future/future/trait.Future.html"; 
title="trait core::future::future::Future">Future</a>&lt;Output = 
Result&lt;Table&gt;&gt; + <a class="trait" href="https://doc.ru [...]
     Self: 'async_trait,
     'life0: 'async_trait,
     'life1: 'async_trait,</div></h4></section></summary><div 
class="docblock"><p>Loads a table from the Hive Metastore and constructs a 
<code>Table</code> object
@@ -143,10 +143,10 @@ based on its metadata.</p>
 <li>Absence of metadata location information in the table’s properties.</li>
 <li>Issues reading or deserializing the table’s metadata file.</li>
 </ul>
-</div></details><details class="toggle method-toggle" open><summary><section 
id="method.drop_table" class="method trait-impl"><a class="src rightside" 
href="../src/iceberg_catalog_hms/catalog.rs.html#600-622">Source</a><a 
href="#method.drop_table" class="anchor">§</a><h4 class="code-header">fn <a 
href="../iceberg/catalog/trait.Catalog.html#tymethod.drop_table" 
class="fn">drop_table</a>&lt;'life0, 'life1, 'async_trait&gt;(
+</div></details><details class="toggle method-toggle" open><summary><section 
id="method.drop_table" class="method trait-impl"><a class="src rightside" 
href="../src/iceberg_catalog_hms/catalog.rs.html#600-622">Source</a><a 
href="#method.drop_table" class="anchor">§</a><h4 class="code-header">fn <a 
class="fn">drop_table</a>&lt;'life0, 'life1, 'async_trait&gt;(
     &amp;'life0 self,
-    table: &amp;'life1 <a class="struct" 
href="../iceberg/catalog/struct.TableIdent.html" title="struct 
iceberg::catalog::TableIdent">TableIdent</a>,
-) -&gt; <a class="struct" 
href="https://doc.rust-lang.org/nightly/core/pin/struct.Pin.html"; title="struct 
core::pin::Pin">Pin</a>&lt;<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/core/future/future/trait.Future.html"; 
title="trait core::future::future::Future">Future</a>&lt;Output = <a 
class="type" href="../iceberg/error/type.Result.html" title= [...]
+    table: &amp;'life1 TableIdent,
+) -&gt; <a class="struct" 
href="https://doc.rust-lang.org/nightly/core/pin/struct.Pin.html"; title="struct 
core::pin::Pin">Pin</a>&lt;<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/core/future/future/trait.Future.html"; 
title="trait core::future::future::Future">Future</a>&lt;Output = Result&lt;<a 
class="primitive" href="https://doc.rust-lang.org/ [...]
     Self: 'async_trait,
     'life0: 'async_trait,
     'life1: 'async_trait,</div></h4></section></summary><div 
class="docblock"><p>Asynchronously drops a table from the database.</p>
@@ -160,10 +160,10 @@ attempting to drop the table. This includes scenarios 
where
 the table does not exist.</li>
 <li>Any network or communication error occurs with the database backend.</li>
 </ul>
-</div></details><details class="toggle method-toggle" open><summary><section 
id="method.table_exists" class="method trait-impl"><a class="src rightside" 
href="../src/iceberg_catalog_hms/catalog.rs.html#642-662">Source</a><a 
href="#method.table_exists" class="anchor">§</a><h4 class="code-header">fn <a 
href="../iceberg/catalog/trait.Catalog.html#tymethod.table_exists" 
class="fn">table_exists</a>&lt;'life0, 'life1, 'async_trait&gt;(
+</div></details><details class="toggle method-toggle" open><summary><section 
id="method.table_exists" class="method trait-impl"><a class="src rightside" 
href="../src/iceberg_catalog_hms/catalog.rs.html#642-662">Source</a><a 
href="#method.table_exists" class="anchor">§</a><h4 class="code-header">fn <a 
class="fn">table_exists</a>&lt;'life0, 'life1, 'async_trait&gt;(
     &amp;'life0 self,
-    table: &amp;'life1 <a class="struct" 
href="../iceberg/catalog/struct.TableIdent.html" title="struct 
iceberg::catalog::TableIdent">TableIdent</a>,
-) -&gt; <a class="struct" 
href="https://doc.rust-lang.org/nightly/core/pin/struct.Pin.html"; title="struct 
core::pin::Pin">Pin</a>&lt;<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/core/future/future/trait.Future.html"; 
title="trait core::future::future::Future">Future</a>&lt;Output = <a 
class="type" href="../iceberg/error/type.Result.html" title= [...]
+    table: &amp;'life1 TableIdent,
+) -&gt; <a class="struct" 
href="https://doc.rust-lang.org/nightly/core/pin/struct.Pin.html"; title="struct 
core::pin::Pin">Pin</a>&lt;<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/core/future/future/trait.Future.html"; 
title="trait core::future::future::Future">Future</a>&lt;Output = Result&lt;<a 
class="primitive" href="https://doc.rust-lang.org/ [...]
     Self: 'async_trait,
     'life0: 'async_trait,
     'life1: 'async_trait,</div></h4></section></summary><div 
class="docblock"><p>Asynchronously checks the existence of a specified table
@@ -174,11 +174,11 @@ in the database.</p>
 <li><code>Ok(false)</code> if the table does not exist in the database.</li>
 <li><code>Err(...)</code> if an error occurs during the process</li>
 </ul>
-</div></details><details class="toggle method-toggle" open><summary><section 
id="method.rename_table" class="method trait-impl"><a class="src rightside" 
href="../src/iceberg_catalog_hms/catalog.rs.html#670-701">Source</a><a 
href="#method.rename_table" class="anchor">§</a><h4 class="code-header">fn <a 
href="../iceberg/catalog/trait.Catalog.html#tymethod.rename_table" 
class="fn">rename_table</a>&lt;'life0, 'life1, 'life2, 'async_trait&gt;(
+</div></details><details class="toggle method-toggle" open><summary><section 
id="method.rename_table" class="method trait-impl"><a class="src rightside" 
href="../src/iceberg_catalog_hms/catalog.rs.html#670-701">Source</a><a 
href="#method.rename_table" class="anchor">§</a><h4 class="code-header">fn <a 
class="fn">rename_table</a>&lt;'life0, 'life1, 'life2, 'async_trait&gt;(
     &amp;'life0 self,
-    src: &amp;'life1 <a class="struct" 
href="../iceberg/catalog/struct.TableIdent.html" title="struct 
iceberg::catalog::TableIdent">TableIdent</a>,
-    dest: &amp;'life2 <a class="struct" 
href="../iceberg/catalog/struct.TableIdent.html" title="struct 
iceberg::catalog::TableIdent">TableIdent</a>,
-) -&gt; <a class="struct" 
href="https://doc.rust-lang.org/nightly/core/pin/struct.Pin.html"; title="struct 
core::pin::Pin">Pin</a>&lt;<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/core/future/future/trait.Future.html"; 
title="trait core::future::future::Future">Future</a>&lt;Output = <a 
class="type" href="../iceberg/error/type.Result.html" title= [...]
+    src: &amp;'life1 TableIdent,
+    dest: &amp;'life2 TableIdent,
+) -&gt; <a class="struct" 
href="https://doc.rust-lang.org/nightly/core/pin/struct.Pin.html"; title="struct 
core::pin::Pin">Pin</a>&lt;<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/core/future/future/trait.Future.html"; 
title="trait core::future::future::Future">Future</a>&lt;Output = Result&lt;<a 
class="primitive" href="https://doc.rust-lang.org/ [...]
     Self: 'async_trait,
     'life0: 'async_trait,
     'life1: 'async_trait,
@@ -189,23 +189,23 @@ or moves it between namespaces (databases).</p>
 <li><code>Ok(())</code> on successful rename or move of the table.</li>
 <li><code>Err(...)</code> if an error occurs during the process.</li>
 </ul>
-</div></details><details class="toggle method-toggle" open><summary><section 
id="method.purge_table" class="method trait-impl"><a class="src rightside" 
href="../src/iceberg_catalog_hms/catalog.rs.html#624-633">Source</a><a 
href="#method.purge_table" class="anchor">§</a><h4 class="code-header">fn <a 
href="../iceberg/catalog/trait.Catalog.html#tymethod.purge_table" 
class="fn">purge_table</a>&lt;'life0, 'life1, 'async_trait&gt;(
+</div></details><details class="toggle method-toggle" open><summary><section 
id="method.purge_table" class="method trait-impl"><a class="src rightside" 
href="../src/iceberg_catalog_hms/catalog.rs.html#624-633">Source</a><a 
href="#method.purge_table" class="anchor">§</a><h4 class="code-header">fn <a 
class="fn">purge_table</a>&lt;'life0, 'life1, 'async_trait&gt;(
     &amp;'life0 self,
-    table: &amp;'life1 <a class="struct" 
href="../iceberg/catalog/struct.TableIdent.html" title="struct 
iceberg::catalog::TableIdent">TableIdent</a>,
-) -&gt; <a class="struct" 
href="https://doc.rust-lang.org/nightly/core/pin/struct.Pin.html"; title="struct 
core::pin::Pin">Pin</a>&lt;<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/core/future/future/trait.Future.html"; 
title="trait core::future::future::Future">Future</a>&lt;Output = <a 
class="type" href="../iceberg/error/type.Result.html" title= [...]
+    table: &amp;'life1 TableIdent,
+) -&gt; <a class="struct" 
href="https://doc.rust-lang.org/nightly/core/pin/struct.Pin.html"; title="struct 
core::pin::Pin">Pin</a>&lt;<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/core/future/future/trait.Future.html"; 
title="trait core::future::future::Future">Future</a>&lt;Output = Result&lt;<a 
class="primitive" href="https://doc.rust-lang.org/ [...]
     Self: 'async_trait,
     'life0: 'async_trait,
-    'life1: 'async_trait,</div></h4></section></summary><div 
class='docblock'>Drop a table from the catalog and delete the underlying table 
data. <a href="../iceberg/catalog/trait.Catalog.html#tymethod.purge_table">Read 
more</a></div></details><details class="toggle method-toggle" 
open><summary><section id="method.register_table" class="method trait-impl"><a 
class="src rightside" 
href="../src/iceberg_catalog_hms/catalog.rs.html#703-712">Source</a><a 
href="#method.register_table" class="a [...]
+    'life1: 'async_trait,</div></h4></section></summary><div 
class='docblock'>Drop a table from the catalog and delete the underlying table 
data. <a>Read more</a></div></details><details class="toggle method-toggle" 
open><summary><section id="method.register_table" class="method trait-impl"><a 
class="src rightside" 
href="../src/iceberg_catalog_hms/catalog.rs.html#703-712">Source</a><a 
href="#method.register_table" class="anchor">§</a><h4 class="code-header">fn <a 
class="fn">register_tabl [...]
     &amp;'life0 self,
-    _table_ident: &amp;'life1 <a class="struct" 
href="../iceberg/catalog/struct.TableIdent.html" title="struct 
iceberg::catalog::TableIdent">TableIdent</a>,
+    _table_ident: &amp;'life1 TableIdent,
     _metadata_location: <a class="struct" 
href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html"; 
title="struct alloc::string::String">String</a>,
-) -&gt; <a class="struct" 
href="https://doc.rust-lang.org/nightly/core/pin/struct.Pin.html"; title="struct 
core::pin::Pin">Pin</a>&lt;<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/core/future/future/trait.Future.html"; 
title="trait core::future::future::Future">Future</a>&lt;Output = <a 
class="type" href="../iceberg/error/type.Result.html" title= [...]
+) -&gt; <a class="struct" 
href="https://doc.rust-lang.org/nightly/core/pin/struct.Pin.html"; title="struct 
core::pin::Pin">Pin</a>&lt;<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/core/future/future/trait.Future.html"; 
title="trait core::future::future::Future">Future</a>&lt;Output = 
Result&lt;Table&gt;&gt; + <a class="trait" href="https://doc.ru [...]
     Self: 'async_trait,
     'life0: 'async_trait,
-    'life1: 'async_trait,</div></h4></section></summary><div 
class='docblock'>Register an existing table to the 
catalog.</div></details><details class="toggle method-toggle" 
open><summary><section id="method.update_table" class="method trait-impl"><a 
class="src rightside" 
href="../src/iceberg_catalog_hms/catalog.rs.html#714-719">Source</a><a 
href="#method.update_table" class="anchor">§</a><h4 class="code-header">fn <a 
href="../iceberg/catalog/trait.Catalog.html#tymethod.update_table" cla [...]
+    'life1: 'async_trait,</div></h4></section></summary><div 
class='docblock'>Register an existing table to the 
catalog.</div></details><details class="toggle method-toggle" 
open><summary><section id="method.update_table" class="method trait-impl"><a 
class="src rightside" 
href="../src/iceberg_catalog_hms/catalog.rs.html#714-719">Source</a><a 
href="#method.update_table" class="anchor">§</a><h4 class="code-header">fn <a 
class="fn">update_table</a>&lt;'life0, 'async_trait&gt;(
     &amp;'life0 self,
-    _commit: <a class="struct" 
href="../iceberg/catalog/struct.TableCommit.html" title="struct 
iceberg::catalog::TableCommit">TableCommit</a>,
-) -&gt; <a class="struct" 
href="https://doc.rust-lang.org/nightly/core/pin/struct.Pin.html"; title="struct 
core::pin::Pin">Pin</a>&lt;<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/core/future/future/trait.Future.html"; 
title="trait core::future::future::Future">Future</a>&lt;Output = <a 
class="type" href="../iceberg/error/type.Result.html" title= [...]
+    _commit: TableCommit,
+) -&gt; <a class="struct" 
href="https://doc.rust-lang.org/nightly/core/pin/struct.Pin.html"; title="struct 
core::pin::Pin">Pin</a>&lt;<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/core/future/future/trait.Future.html"; 
title="trait core::future::future::Future">Future</a>&lt;Output = 
Result&lt;Table&gt;&gt; + <a class="trait" href="https://doc.ru [...]
     Self: 'async_trait,
     'life0: 'async_trait,</div></h4></section></summary><div 
class='docblock'>Update a table to the 
catalog.</div></details></div></details><details class="toggle 
implementors-toggle" open><summary><section id="impl-Debug-for-HmsCatalog" 
class="impl"><a class="src rightside" 
href="../src/iceberg_catalog_hms/catalog.rs.html#187-193">Source</a><a 
href="#impl-Debug-for-HmsCatalog" class="anchor">§</a><h3 
class="code-header">impl <a class="trait" 
href="https://doc.rust-lang.org/nightly/core/ [...]
     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#139";>Source</a><a 
href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href 
[...]
diff --git a/api/iceberg_catalog_hms/struct.HmsCatalogBuilder.html 
b/api/iceberg_catalog_hms/struct.HmsCatalogBuilder.html
index 05c6c6d7c..f3c72a234 100644
--- a/api/iceberg_catalog_hms/struct.HmsCatalogBuilder.html
+++ b/api/iceberg_catalog_hms/struct.HmsCatalogBuilder.html
@@ -1,9 +1,9 @@
 <!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="Builder 
for `HmsCatalog`."><title>HmsCatalogBuilder in iceberg_catalog_hms - 
Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-6b053e98.ttf.woff2,FiraSans-Italic-81dc35de.woff2,FiraSans-Regular-0fe48ade.woff2,Fira
 [...]
-</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-CatalogBuilder-for-HmsCatalogBuilder" 
class="impl"><a class="src rightside" 
href="../src/iceberg_catalog_hms/catalog.rs.html#78-154">Source</a><a 
href="#impl-CatalogBuilder-for-HmsCatalogBuilder" class="anchor">§</a><h3 
class="cod [...]
+</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-CatalogBuilder-for-HmsCatalogBuilder" 
class="impl"><a class="src rightside" 
href="../src/iceberg_catalog_hms/catalog.rs.html#78-154">Source</a><a 
href="#impl-CatalogBuilder-for-HmsCatalogBuilder" class="anchor">§</a><h3 
class="cod [...]
     self,
     name: impl <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="struct" 
href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html"; 
title="struct alloc::string::String">String</a>&gt;,
     props: <a class="struct" 
href="https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html";
 title="struct std::collections::hash::map::HashMap">HashMap</a>&lt;<a 
class="struct" 
href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html"; 
title="struct alloc::string::String">String</a>, <a class="struct" 
href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html"; 
title="struct alloc::string::String">String</a>&gt;,
-) -&gt; impl <a class="trait" 
href="https://doc.rust-lang.org/nightly/core/future/future/trait.Future.html"; 
title="trait core::future::future::Future">Future</a>&lt;Output = <a 
class="type" href="../iceberg/error/type.Result.html" title="type 
iceberg::error::Result">Result</a>&lt;Self::<a class="associatedtype" 
href="../iceberg/catalog/trait.CatalogBuilder.html#associatedtype.C" 
title="type iceberg::catalog::CatalogBuilder::C">C</a>&gt;&gt; + <a 
class="trait" href="https://doc.rust-lang. [...]
+) -&gt; impl <a class="trait" 
href="https://doc.rust-lang.org/nightly/core/future/future/trait.Future.html"; 
title="trait core::future::future::Future">Future</a>&lt;Output = 
Result&lt;Self::C&gt;&gt; + <a class="trait" 
href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html"; 
title="trait core::marker::Send">Send</a></h4></section></summary><div 
class='docblock'>Create a new catalog 
instance.</div></details></div></details><details class="toggle 
implementors-toggle" open><summ [...]
     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#139";>Source</a><a 
href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href 
[...]
     T: CastFrom&lt;U&gt;,</div></h4></section></summary><div 
class='docblock'>Casts <code>self</code> to type <code>T</code>. The <a 
href="https://doc.rust-lang.org/reference/expressions/operator-expr.html#semantics";>semantics
 of numeric casting</a> with the <code>as</code> operator are followed, so 
<code>&lt;T as As&gt;::as_::&lt;U&gt;</code> can be used in the same way as 
<code>T as U</code> for numeric conversions. <a>Read 
more</a></div></details></div></details><details class="toggle [...]
     T: <a class="trait" 
href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html"; title="trait 
core::any::Any">Any</a>,</div></h3></section></summary><div 
class="impl-items"><section id="method.as_any" class="method trait-impl"><a 
href="#method.as_any" class="anchor">§</a><h4 class="code-header">fn <a 
class="fn">as_any</a>(&amp;self) -&gt; &amp;(dyn <a class="trait" 
href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html"; title="trait 
core::any::Any">Any</a> + 'static)</h4 [...]
diff --git a/api/src/iceberg/spec/values/literal.rs.html 
b/api/src/iceberg/spec/values/literal.rs.html
index 35515ad2f..dced2ec05 100644
--- a/api/src/iceberg/spec/values/literal.rs.html
+++ b/api/src/iceberg/spec/values/literal.rs.html
@@ -499,249 +499,308 @@
 <a href=#499 id=499 data-nosnippet>499</a>                
(PrimitiveType::Uuid, JsonValue::String(s)) =&gt; <span 
class="prelude-val">Ok</span>(<span 
class="prelude-val">Some</span>(Literal::Primitive(
 <a href=#500 id=500 data-nosnippet>500</a>                    
PrimitiveLiteral::UInt128(Uuid::parse_str(<span 
class="kw-2">&amp;</span>s)<span class="question-mark">?</span>.as_u128()),
 <a href=#501 id=501 data-nosnippet>501</a>                ))),
-<a href=#502 id=502 data-nosnippet>502</a>                
(PrimitiveType::Fixed(<span class="kw">_</span>), JsonValue::String(<span 
class="kw">_</span>)) =&gt; <span class="macro">todo!</span>(),
-<a href=#503 id=503 data-nosnippet>503</a>                
(PrimitiveType::Binary, JsonValue::String(<span class="kw">_</span>)) =&gt; 
<span class="macro">todo!</span>(),
-<a href=#504 id=504 data-nosnippet>504</a>                (
-<a href=#505 id=505 data-nosnippet>505</a>                    
PrimitiveType::Decimal {
-<a href=#506 id=506 data-nosnippet>506</a>                        precision: 
<span class="kw">_</span>,
-<a href=#507 id=507 data-nosnippet>507</a>                        scale,
-<a href=#508 id=508 data-nosnippet>508</a>                    },
-<a href=#509 id=509 data-nosnippet>509</a>                    
JsonValue::String(s),
-<a href=#510 id=510 data-nosnippet>510</a>                ) =&gt; {
-<a href=#511 id=511 data-nosnippet>511</a>                    <span 
class="kw">let </span>decimal = decimal_from_str_exact(<span 
class="kw-2">&amp;</span>s)<span class="question-mark">?</span>;
-<a href=#512 id=512 data-nosnippet>512</a>                    <span 
class="kw">let </span>rescaled = decimal_rescale(decimal, <span 
class="kw-2">*</span>scale);
-<a href=#513 id=513 data-nosnippet>513</a>                    <span 
class="prelude-val">Ok</span>(<span 
class="prelude-val">Some</span>(Literal::Primitive(PrimitiveLiteral::Int128(
-<a href=#514 id=514 data-nosnippet>514</a>                        
decimal_mantissa(<span class="kw-2">&amp;</span>rescaled),
-<a href=#515 id=515 data-nosnippet>515</a>                    ))))
-<a href=#516 id=516 data-nosnippet>516</a>                }
-<a href=#517 id=517 data-nosnippet>517</a>                (<span 
class="kw">_</span>, JsonValue::Null) =&gt; <span 
class="prelude-val">Ok</span>(<span class="prelude-val">None</span>),
-<a href=#518 id=518 data-nosnippet>518</a>                (i, j) =&gt; <span 
class="prelude-val">Err</span>(Error::new(
-<a href=#519 id=519 data-nosnippet>519</a>                    <span 
class="kw">crate</span>::ErrorKind::DataInvalid,
-<a href=#520 id=520 data-nosnippet>520</a>                    <span 
class="macro">format!</span>(<span class="string">"The json value {j} doesn't 
fit to the iceberg type {i}."</span>),
-<a href=#521 id=521 data-nosnippet>521</a>                )),
-<a href=#522 id=522 data-nosnippet>522</a>            },
-<a href=#523 id=523 data-nosnippet>523</a>            Type::Struct(schema) 
=&gt; {
-<a href=#524 id=524 data-nosnippet>524</a>                <span class="kw">if 
let </span>JsonValue::Object(<span class="kw-2">mut </span>object) = value {
-<a href=#525 id=525 data-nosnippet>525</a>                    <span 
class="prelude-val">Ok</span>(<span 
class="prelude-val">Some</span>(Literal::Struct(Struct::from_iter(
-<a href=#526 id=526 data-nosnippet>526</a>                        
schema.fields().iter().map(|field| {
-<a href=#527 id=527 data-nosnippet>527</a>                            
object.remove(<span 
class="kw-2">&amp;</span>field.id.to_string()).and_then(|value| {
-<a href=#528 id=528 data-nosnippet>528</a>                                
Literal::try_from_json(value, <span class="kw-2">&amp;</span>field.field_type)
-<a href=#529 id=529 data-nosnippet>529</a>                                    
.and_then(|value| {
-<a href=#530 id=530 data-nosnippet>530</a>                                     
   value.ok_or(Error::new(
-<a href=#531 id=531 data-nosnippet>531</a>                                     
       ErrorKind::DataInvalid,
-<a href=#532 id=532 data-nosnippet>532</a>                                     
       <span class="string">"Key of map cannot be null"</span>,
-<a href=#533 id=533 data-nosnippet>533</a>                                     
   ))
-<a href=#534 id=534 data-nosnippet>534</a>                                    
})
-<a href=#535 id=535 data-nosnippet>535</a>                                    
.ok()
-<a href=#536 id=536 data-nosnippet>536</a>                            })
-<a href=#537 id=537 data-nosnippet>537</a>                        }),
-<a href=#538 id=538 data-nosnippet>538</a>                    ))))
-<a href=#539 id=539 data-nosnippet>539</a>                } <span 
class="kw">else </span>{
-<a href=#540 id=540 data-nosnippet>540</a>                    <span 
class="prelude-val">Err</span>(Error::new(
-<a href=#541 id=541 data-nosnippet>541</a>                        <span 
class="kw">crate</span>::ErrorKind::DataInvalid,
-<a href=#542 id=542 data-nosnippet>542</a>                        <span 
class="string">"The json value for a struct type must be an object."</span>,
-<a href=#543 id=543 data-nosnippet>543</a>                    ))
-<a href=#544 id=544 data-nosnippet>544</a>                }
-<a href=#545 id=545 data-nosnippet>545</a>            }
-<a href=#546 id=546 data-nosnippet>546</a>            Type::List(list) =&gt; {
-<a href=#547 id=547 data-nosnippet>547</a>                <span class="kw">if 
let </span>JsonValue::Array(array) = value {
-<a href=#548 id=548 data-nosnippet>548</a>                    <span 
class="prelude-val">Ok</span>(<span 
class="prelude-val">Some</span>(Literal::List(
-<a href=#549 id=549 data-nosnippet>549</a>                        array
-<a href=#550 id=550 data-nosnippet>550</a>                            
.into_iter()
-<a href=#551 id=551 data-nosnippet>551</a>                            
.map(|value| {
-<a href=#552 id=552 data-nosnippet>552</a>                                
Literal::try_from_json(value, <span 
class="kw-2">&amp;</span>list.element_field.field_type)
-<a href=#553 id=553 data-nosnippet>553</a>                            })
-<a href=#554 id=554 data-nosnippet>554</a>                            
.collect::&lt;<span class="prelude-ty">Result</span>&lt;Vec&lt;<span 
class="kw">_</span>&gt;&gt;&gt;()<span class="question-mark">?</span>,
-<a href=#555 id=555 data-nosnippet>555</a>                    )))
-<a href=#556 id=556 data-nosnippet>556</a>                } <span 
class="kw">else </span>{
-<a href=#557 id=557 data-nosnippet>557</a>                    <span 
class="prelude-val">Err</span>(Error::new(
-<a href=#558 id=558 data-nosnippet>558</a>                        <span 
class="kw">crate</span>::ErrorKind::DataInvalid,
-<a href=#559 id=559 data-nosnippet>559</a>                        <span 
class="string">"The json value for a list type must be an array."</span>,
-<a href=#560 id=560 data-nosnippet>560</a>                    ))
-<a href=#561 id=561 data-nosnippet>561</a>                }
-<a href=#562 id=562 data-nosnippet>562</a>            }
-<a href=#563 id=563 data-nosnippet>563</a>            Type::Map(map) =&gt; {
-<a href=#564 id=564 data-nosnippet>564</a>                <span class="kw">if 
let </span>JsonValue::Object(<span class="kw-2">mut </span>object) = value {
-<a href=#565 id=565 data-nosnippet>565</a>                    <span 
class="kw">if let </span>(<span 
class="prelude-val">Some</span>(JsonValue::Array(keys)), <span 
class="prelude-val">Some</span>(JsonValue::Array(values))) =
-<a href=#566 id=566 data-nosnippet>566</a>                        
(object.remove(<span class="string">"keys"</span>), object.remove(<span 
class="string">"values"</span>))
-<a href=#567 id=567 data-nosnippet>567</a>                    {
-<a href=#568 id=568 data-nosnippet>568</a>                        <span 
class="prelude-val">Ok</span>(<span 
class="prelude-val">Some</span>(Literal::Map(Map::from_iter(
-<a href=#569 id=569 data-nosnippet>569</a>                            
keys.into_iter()
-<a href=#570 id=570 data-nosnippet>570</a>                                
.zip(values.into_iter())
-<a href=#571 id=571 data-nosnippet>571</a>                                
.map(|(key, value)| {
-<a href=#572 id=572 data-nosnippet>572</a>                                    
<span class="prelude-val">Ok</span>((
-<a href=#573 id=573 data-nosnippet>573</a>                                     
   Literal::try_from_json(key, <span 
class="kw-2">&amp;</span>map.key_field.field_type)
-<a href=#574 id=574 data-nosnippet>574</a>                                     
       .and_then(|value| {
-<a href=#575 id=575 data-nosnippet>575</a>                                     
           value.ok_or(Error::new(
-<a href=#576 id=576 data-nosnippet>576</a>                                     
               ErrorKind::DataInvalid,
-<a href=#577 id=577 data-nosnippet>577</a>                                     
               <span class="string">"Key of map cannot be null"</span>,
-<a href=#578 id=578 data-nosnippet>578</a>                                     
           ))
-<a href=#579 id=579 data-nosnippet>579</a>                                     
       })<span class="question-mark">?</span>,
-<a href=#580 id=580 data-nosnippet>580</a>                                     
   Literal::try_from_json(value, <span 
class="kw-2">&amp;</span>map.value_field.field_type)<span 
class="question-mark">?</span>,
-<a href=#581 id=581 data-nosnippet>581</a>                                    
))
-<a href=#582 id=582 data-nosnippet>582</a>                                })
-<a href=#583 id=583 data-nosnippet>583</a>                                
.collect::&lt;<span class="prelude-ty">Result</span>&lt;Vec&lt;<span 
class="kw">_</span>&gt;&gt;&gt;()<span class="question-mark">?</span>,
-<a href=#584 id=584 data-nosnippet>584</a>                        ))))
-<a href=#585 id=585 data-nosnippet>585</a>                    } <span 
class="kw">else </span>{
-<a href=#586 id=586 data-nosnippet>586</a>                        <span 
class="prelude-val">Err</span>(Error::new(
-<a href=#587 id=587 data-nosnippet>587</a>                            <span 
class="kw">crate</span>::ErrorKind::DataInvalid,
-<a href=#588 id=588 data-nosnippet>588</a>                            <span 
class="string">"The json value for a list type must be an array."</span>,
-<a href=#589 id=589 data-nosnippet>589</a>                        ))
-<a href=#590 id=590 data-nosnippet>590</a>                    }
-<a href=#591 id=591 data-nosnippet>591</a>                } <span 
class="kw">else </span>{
-<a href=#592 id=592 data-nosnippet>592</a>                    <span 
class="prelude-val">Err</span>(Error::new(
-<a href=#593 id=593 data-nosnippet>593</a>                        <span 
class="kw">crate</span>::ErrorKind::DataInvalid,
-<a href=#594 id=594 data-nosnippet>594</a>                        <span 
class="string">"The json value for a list type must be an array."</span>,
-<a href=#595 id=595 data-nosnippet>595</a>                    ))
-<a href=#596 id=596 data-nosnippet>596</a>                }
-<a href=#597 id=597 data-nosnippet>597</a>            }
-<a href=#598 id=598 data-nosnippet>598</a>        }
-<a href=#599 id=599 data-nosnippet>599</a>    }
-<a href=#600 id=600 data-nosnippet>600</a>
-<a href=#601 id=601 data-nosnippet>601</a>    <span class="doccomment">/// 
Converting iceberg value to json value.
-<a href=#602 id=602 data-nosnippet>602</a>    ///
-<a href=#603 id=603 data-nosnippet>603</a>    /// See [this 
spec](https://iceberg.apache.org/spec/#json-single-value-serialization) for 
reference.
-<a href=#604 id=604 data-nosnippet>604</a>    </span><span class="kw">pub fn 
</span>try_into_json(<span class="self">self</span>, r#type: <span 
class="kw-2">&amp;</span>Type) -&gt; <span 
class="prelude-ty">Result</span>&lt;JsonValue&gt; {
-<a href=#605 id=605 data-nosnippet>605</a>        <span class="kw">match 
</span>(<span class="self">self</span>, r#type) {
-<a href=#606 id=606 data-nosnippet>606</a>            
(Literal::Primitive(prim), Type::Primitive(prim_type)) =&gt; <span 
class="kw">match </span>(prim_type, prim) {
-<a href=#607 id=607 data-nosnippet>607</a>                
(PrimitiveType::Boolean, PrimitiveLiteral::Boolean(val)) =&gt; {
-<a href=#608 id=608 data-nosnippet>608</a>                    <span 
class="prelude-val">Ok</span>(JsonValue::Bool(val))
-<a href=#609 id=609 data-nosnippet>609</a>                }
-<a href=#610 id=610 data-nosnippet>610</a>                (PrimitiveType::Int, 
PrimitiveLiteral::Int(val)) =&gt; {
-<a href=#611 id=611 data-nosnippet>611</a>                    <span 
class="prelude-val">Ok</span>(JsonValue::Number((val).into()))
-<a href=#612 id=612 data-nosnippet>612</a>                }
-<a href=#613 id=613 data-nosnippet>613</a>                
(PrimitiveType::Long, PrimitiveLiteral::Long(val)) =&gt; {
-<a href=#614 id=614 data-nosnippet>614</a>                    <span 
class="prelude-val">Ok</span>(JsonValue::Number((val).into()))
+<a href=#502 id=502 data-nosnippet>502</a>                
(PrimitiveType::Fixed(size), JsonValue::String(s)) =&gt; {
+<a href=#503 id=503 data-nosnippet>503</a>                    <span 
class="kw">let </span>bytes = decode_hex_bytes(<span 
class="kw-2">&amp;</span>s)<span class="question-mark">?</span>;
+<a href=#504 id=504 data-nosnippet>504</a>                    
validate_fixed_size(bytes.len(), <span class="kw-2">*</span>size)<span 
class="question-mark">?</span>;
+<a href=#505 id=505 data-nosnippet>505</a>                    <span 
class="prelude-val">Ok</span>(<span 
class="prelude-val">Some</span>(Literal::Primitive(PrimitiveLiteral::Binary(bytes))))
+<a href=#506 id=506 data-nosnippet>506</a>                }
+<a href=#507 id=507 data-nosnippet>507</a>                
(PrimitiveType::Binary, JsonValue::String(s)) =&gt; <span 
class="prelude-val">Ok</span>(<span 
class="prelude-val">Some</span>(Literal::Primitive(
+<a href=#508 id=508 data-nosnippet>508</a>                    
PrimitiveLiteral::Binary(decode_hex_bytes(<span 
class="kw-2">&amp;</span>s)<span class="question-mark">?</span>),
+<a href=#509 id=509 data-nosnippet>509</a>                ))),
+<a href=#510 id=510 data-nosnippet>510</a>                (
+<a href=#511 id=511 data-nosnippet>511</a>                    
PrimitiveType::Decimal {
+<a href=#512 id=512 data-nosnippet>512</a>                        precision: 
<span class="kw">_</span>,
+<a href=#513 id=513 data-nosnippet>513</a>                        scale,
+<a href=#514 id=514 data-nosnippet>514</a>                    },
+<a href=#515 id=515 data-nosnippet>515</a>                    
JsonValue::String(s),
+<a href=#516 id=516 data-nosnippet>516</a>                ) =&gt; {
+<a href=#517 id=517 data-nosnippet>517</a>                    <span 
class="kw">let </span>decimal = decimal_from_str_exact(<span 
class="kw-2">&amp;</span>s)<span class="question-mark">?</span>;
+<a href=#518 id=518 data-nosnippet>518</a>                    <span 
class="kw">let </span>rescaled = decimal_rescale(decimal, <span 
class="kw-2">*</span>scale);
+<a href=#519 id=519 data-nosnippet>519</a>                    <span 
class="prelude-val">Ok</span>(<span 
class="prelude-val">Some</span>(Literal::Primitive(PrimitiveLiteral::Int128(
+<a href=#520 id=520 data-nosnippet>520</a>                        
decimal_mantissa(<span class="kw-2">&amp;</span>rescaled),
+<a href=#521 id=521 data-nosnippet>521</a>                    ))))
+<a href=#522 id=522 data-nosnippet>522</a>                }
+<a href=#523 id=523 data-nosnippet>523</a>                (<span 
class="kw">_</span>, JsonValue::Null) =&gt; <span 
class="prelude-val">Ok</span>(<span class="prelude-val">None</span>),
+<a href=#524 id=524 data-nosnippet>524</a>                (i, j) =&gt; <span 
class="prelude-val">Err</span>(Error::new(
+<a href=#525 id=525 data-nosnippet>525</a>                    <span 
class="kw">crate</span>::ErrorKind::DataInvalid,
+<a href=#526 id=526 data-nosnippet>526</a>                    <span 
class="macro">format!</span>(<span class="string">"The json value {j} doesn't 
fit to the iceberg type {i}."</span>),
+<a href=#527 id=527 data-nosnippet>527</a>                )),
+<a href=#528 id=528 data-nosnippet>528</a>            },
+<a href=#529 id=529 data-nosnippet>529</a>            Type::Struct(schema) 
=&gt; {
+<a href=#530 id=530 data-nosnippet>530</a>                <span class="kw">if 
let </span>JsonValue::Object(<span class="kw-2">mut </span>object) = value {
+<a href=#531 id=531 data-nosnippet>531</a>                    <span 
class="prelude-val">Ok</span>(<span 
class="prelude-val">Some</span>(Literal::Struct(Struct::from_iter(
+<a href=#532 id=532 data-nosnippet>532</a>                        
schema.fields().iter().map(|field| {
+<a href=#533 id=533 data-nosnippet>533</a>                            
object.remove(<span 
class="kw-2">&amp;</span>field.id.to_string()).and_then(|value| {
+<a href=#534 id=534 data-nosnippet>534</a>                                
Literal::try_from_json(value, <span class="kw-2">&amp;</span>field.field_type)
+<a href=#535 id=535 data-nosnippet>535</a>                                    
.and_then(|value| {
+<a href=#536 id=536 data-nosnippet>536</a>                                     
   value.ok_or(Error::new(
+<a href=#537 id=537 data-nosnippet>537</a>                                     
       ErrorKind::DataInvalid,
+<a href=#538 id=538 data-nosnippet>538</a>                                     
       <span class="string">"Key of map cannot be null"</span>,
+<a href=#539 id=539 data-nosnippet>539</a>                                     
   ))
+<a href=#540 id=540 data-nosnippet>540</a>                                    
})
+<a href=#541 id=541 data-nosnippet>541</a>                                    
.ok()
+<a href=#542 id=542 data-nosnippet>542</a>                            })
+<a href=#543 id=543 data-nosnippet>543</a>                        }),
+<a href=#544 id=544 data-nosnippet>544</a>                    ))))
+<a href=#545 id=545 data-nosnippet>545</a>                } <span 
class="kw">else </span>{
+<a href=#546 id=546 data-nosnippet>546</a>                    <span 
class="prelude-val">Err</span>(Error::new(
+<a href=#547 id=547 data-nosnippet>547</a>                        <span 
class="kw">crate</span>::ErrorKind::DataInvalid,
+<a href=#548 id=548 data-nosnippet>548</a>                        <span 
class="string">"The json value for a struct type must be an object."</span>,
+<a href=#549 id=549 data-nosnippet>549</a>                    ))
+<a href=#550 id=550 data-nosnippet>550</a>                }
+<a href=#551 id=551 data-nosnippet>551</a>            }
+<a href=#552 id=552 data-nosnippet>552</a>            Type::List(list) =&gt; {
+<a href=#553 id=553 data-nosnippet>553</a>                <span class="kw">if 
let </span>JsonValue::Array(array) = value {
+<a href=#554 id=554 data-nosnippet>554</a>                    <span 
class="prelude-val">Ok</span>(<span 
class="prelude-val">Some</span>(Literal::List(
+<a href=#555 id=555 data-nosnippet>555</a>                        array
+<a href=#556 id=556 data-nosnippet>556</a>                            
.into_iter()
+<a href=#557 id=557 data-nosnippet>557</a>                            
.map(|value| {
+<a href=#558 id=558 data-nosnippet>558</a>                                
Literal::try_from_json(value, <span 
class="kw-2">&amp;</span>list.element_field.field_type)
+<a href=#559 id=559 data-nosnippet>559</a>                            })
+<a href=#560 id=560 data-nosnippet>560</a>                            
.collect::&lt;<span class="prelude-ty">Result</span>&lt;Vec&lt;<span 
class="kw">_</span>&gt;&gt;&gt;()<span class="question-mark">?</span>,
+<a href=#561 id=561 data-nosnippet>561</a>                    )))
+<a href=#562 id=562 data-nosnippet>562</a>                } <span 
class="kw">else </span>{
+<a href=#563 id=563 data-nosnippet>563</a>                    <span 
class="prelude-val">Err</span>(Error::new(
+<a href=#564 id=564 data-nosnippet>564</a>                        <span 
class="kw">crate</span>::ErrorKind::DataInvalid,
+<a href=#565 id=565 data-nosnippet>565</a>                        <span 
class="string">"The json value for a list type must be an array."</span>,
+<a href=#566 id=566 data-nosnippet>566</a>                    ))
+<a href=#567 id=567 data-nosnippet>567</a>                }
+<a href=#568 id=568 data-nosnippet>568</a>            }
+<a href=#569 id=569 data-nosnippet>569</a>            Type::Map(map) =&gt; {
+<a href=#570 id=570 data-nosnippet>570</a>                <span class="kw">if 
let </span>JsonValue::Object(<span class="kw-2">mut </span>object) = value {
+<a href=#571 id=571 data-nosnippet>571</a>                    <span 
class="kw">if let </span>(<span 
class="prelude-val">Some</span>(JsonValue::Array(keys)), <span 
class="prelude-val">Some</span>(JsonValue::Array(values))) =
+<a href=#572 id=572 data-nosnippet>572</a>                        
(object.remove(<span class="string">"keys"</span>), object.remove(<span 
class="string">"values"</span>))
+<a href=#573 id=573 data-nosnippet>573</a>                    {
+<a href=#574 id=574 data-nosnippet>574</a>                        <span 
class="prelude-val">Ok</span>(<span 
class="prelude-val">Some</span>(Literal::Map(Map::from_iter(
+<a href=#575 id=575 data-nosnippet>575</a>                            
keys.into_iter()
+<a href=#576 id=576 data-nosnippet>576</a>                                
.zip(values.into_iter())
+<a href=#577 id=577 data-nosnippet>577</a>                                
.map(|(key, value)| {
+<a href=#578 id=578 data-nosnippet>578</a>                                    
<span class="prelude-val">Ok</span>((
+<a href=#579 id=579 data-nosnippet>579</a>                                     
   Literal::try_from_json(key, <span 
class="kw-2">&amp;</span>map.key_field.field_type)
+<a href=#580 id=580 data-nosnippet>580</a>                                     
       .and_then(|value| {
+<a href=#581 id=581 data-nosnippet>581</a>                                     
           value.ok_or(Error::new(
+<a href=#582 id=582 data-nosnippet>582</a>                                     
               ErrorKind::DataInvalid,
+<a href=#583 id=583 data-nosnippet>583</a>                                     
               <span class="string">"Key of map cannot be null"</span>,
+<a href=#584 id=584 data-nosnippet>584</a>                                     
           ))
+<a href=#585 id=585 data-nosnippet>585</a>                                     
       })<span class="question-mark">?</span>,
+<a href=#586 id=586 data-nosnippet>586</a>                                     
   Literal::try_from_json(value, <span 
class="kw-2">&amp;</span>map.value_field.field_type)<span 
class="question-mark">?</span>,
+<a href=#587 id=587 data-nosnippet>587</a>                                    
))
+<a href=#588 id=588 data-nosnippet>588</a>                                })
+<a href=#589 id=589 data-nosnippet>589</a>                                
.collect::&lt;<span class="prelude-ty">Result</span>&lt;Vec&lt;<span 
class="kw">_</span>&gt;&gt;&gt;()<span class="question-mark">?</span>,
+<a href=#590 id=590 data-nosnippet>590</a>                        ))))
+<a href=#591 id=591 data-nosnippet>591</a>                    } <span 
class="kw">else </span>{
+<a href=#592 id=592 data-nosnippet>592</a>                        <span 
class="prelude-val">Err</span>(Error::new(
+<a href=#593 id=593 data-nosnippet>593</a>                            <span 
class="kw">crate</span>::ErrorKind::DataInvalid,
+<a href=#594 id=594 data-nosnippet>594</a>                            <span 
class="string">"The json value for a list type must be an array."</span>,
+<a href=#595 id=595 data-nosnippet>595</a>                        ))
+<a href=#596 id=596 data-nosnippet>596</a>                    }
+<a href=#597 id=597 data-nosnippet>597</a>                } <span 
class="kw">else </span>{
+<a href=#598 id=598 data-nosnippet>598</a>                    <span 
class="prelude-val">Err</span>(Error::new(
+<a href=#599 id=599 data-nosnippet>599</a>                        <span 
class="kw">crate</span>::ErrorKind::DataInvalid,
+<a href=#600 id=600 data-nosnippet>600</a>                        <span 
class="string">"The json value for a list type must be an array."</span>,
+<a href=#601 id=601 data-nosnippet>601</a>                    ))
+<a href=#602 id=602 data-nosnippet>602</a>                }
+<a href=#603 id=603 data-nosnippet>603</a>            }
+<a href=#604 id=604 data-nosnippet>604</a>        }
+<a href=#605 id=605 data-nosnippet>605</a>    }
+<a href=#606 id=606 data-nosnippet>606</a>
+<a href=#607 id=607 data-nosnippet>607</a>    <span class="doccomment">/// 
Converting iceberg value to json value.
+<a href=#608 id=608 data-nosnippet>608</a>    ///
+<a href=#609 id=609 data-nosnippet>609</a>    /// See [this 
spec](https://iceberg.apache.org/spec/#json-single-value-serialization) for 
reference.
+<a href=#610 id=610 data-nosnippet>610</a>    </span><span class="kw">pub fn 
</span>try_into_json(<span class="self">self</span>, r#type: <span 
class="kw-2">&amp;</span>Type) -&gt; <span 
class="prelude-ty">Result</span>&lt;JsonValue&gt; {
+<a href=#611 id=611 data-nosnippet>611</a>        <span class="kw">match 
</span>(<span class="self">self</span>, r#type) {
+<a href=#612 id=612 data-nosnippet>612</a>            
(Literal::Primitive(prim), Type::Primitive(prim_type)) =&gt; <span 
class="kw">match </span>(prim_type, prim) {
+<a href=#613 id=613 data-nosnippet>613</a>                
(PrimitiveType::Boolean, PrimitiveLiteral::Boolean(val)) =&gt; {
+<a href=#614 id=614 data-nosnippet>614</a>                    <span 
class="prelude-val">Ok</span>(JsonValue::Bool(val))
 <a href=#615 id=615 data-nosnippet>615</a>                }
-<a href=#616 id=616 data-nosnippet>616</a>                
(PrimitiveType::Float, PrimitiveLiteral::Float(val)) =&gt; {
-<a href=#617 id=617 data-nosnippet>617</a>                    <span 
class="kw">match </span>Number::from_f64(val.<span class="number">0 
</span><span class="kw">as </span>f64) {
-<a href=#618 id=618 data-nosnippet>618</a>                        <span 
class="prelude-val">Some</span>(number) =&gt; <span 
class="prelude-val">Ok</span>(JsonValue::Number(number)),
-<a href=#619 id=619 data-nosnippet>619</a>                        <span 
class="prelude-val">None </span>=&gt; <span 
class="prelude-val">Ok</span>(JsonValue::Null),
-<a href=#620 id=620 data-nosnippet>620</a>                    }
+<a href=#616 id=616 data-nosnippet>616</a>                (PrimitiveType::Int, 
PrimitiveLiteral::Int(val)) =&gt; {
+<a href=#617 id=617 data-nosnippet>617</a>                    <span 
class="prelude-val">Ok</span>(JsonValue::Number((val).into()))
+<a href=#618 id=618 data-nosnippet>618</a>                }
+<a href=#619 id=619 data-nosnippet>619</a>                
(PrimitiveType::Long, PrimitiveLiteral::Long(val)) =&gt; {
+<a href=#620 id=620 data-nosnippet>620</a>                    <span 
class="prelude-val">Ok</span>(JsonValue::Number((val).into()))
 <a href=#621 id=621 data-nosnippet>621</a>                }
-<a href=#622 id=622 data-nosnippet>622</a>                
(PrimitiveType::Double, PrimitiveLiteral::Double(val)) =&gt; {
-<a href=#623 id=623 data-nosnippet>623</a>                    <span 
class="kw">match </span>Number::from_f64(val.<span class="number">0</span>) {
+<a href=#622 id=622 data-nosnippet>622</a>                
(PrimitiveType::Float, PrimitiveLiteral::Float(val)) =&gt; {
+<a href=#623 id=623 data-nosnippet>623</a>                    <span 
class="kw">match </span>Number::from_f64(val.<span class="number">0 
</span><span class="kw">as </span>f64) {
 <a href=#624 id=624 data-nosnippet>624</a>                        <span 
class="prelude-val">Some</span>(number) =&gt; <span 
class="prelude-val">Ok</span>(JsonValue::Number(number)),
 <a href=#625 id=625 data-nosnippet>625</a>                        <span 
class="prelude-val">None </span>=&gt; <span 
class="prelude-val">Ok</span>(JsonValue::Null),
 <a href=#626 id=626 data-nosnippet>626</a>                    }
 <a href=#627 id=627 data-nosnippet>627</a>                }
-<a href=#628 id=628 data-nosnippet>628</a>                
(PrimitiveType::Date, PrimitiveLiteral::Int(val)) =&gt; {
-<a href=#629 id=629 data-nosnippet>629</a>                    <span 
class="prelude-val">Ok</span>(JsonValue::String(date::days_to_date(val).to_string()))
-<a href=#630 id=630 data-nosnippet>630</a>                }
-<a href=#631 id=631 data-nosnippet>631</a>                
(PrimitiveType::Time, PrimitiveLiteral::Long(val)) =&gt; <span 
class="prelude-val">Ok</span>(JsonValue::String(
-<a href=#632 id=632 data-nosnippet>632</a>                    
time::microseconds_to_time(val).to_string(),
-<a href=#633 id=633 data-nosnippet>633</a>                )),
-<a href=#634 id=634 data-nosnippet>634</a>                
(PrimitiveType::Timestamp, PrimitiveLiteral::Long(val)) =&gt; <span 
class="prelude-val">Ok</span>(JsonValue::String(
-<a href=#635 id=635 data-nosnippet>635</a>                    
timestamp::microseconds_to_datetime(val)
-<a href=#636 id=636 data-nosnippet>636</a>                        
.format(<span class="string">"%Y-%m-%dT%H:%M:%S%.f"</span>)
-<a href=#637 id=637 data-nosnippet>637</a>                        .to_string(),
-<a href=#638 id=638 data-nosnippet>638</a>                )),
-<a href=#639 id=639 data-nosnippet>639</a>                
(PrimitiveType::Timestamptz, PrimitiveLiteral::Long(val)) =&gt; <span 
class="prelude-val">Ok</span>(JsonValue::String(
-<a href=#640 id=640 data-nosnippet>640</a>                    
timestamptz::microseconds_to_datetimetz(val)
-<a href=#641 id=641 data-nosnippet>641</a>                        
.format(<span class="string">"%Y-%m-%dT%H:%M:%S%.f+00:00"</span>)
-<a href=#642 id=642 data-nosnippet>642</a>                        .to_string(),
-<a href=#643 id=643 data-nosnippet>643</a>                )),
-<a href=#644 id=644 data-nosnippet>644</a>                
(PrimitiveType::TimestampNs, PrimitiveLiteral::Long(val)) =&gt; <span 
class="prelude-val">Ok</span>(JsonValue::String(
-<a href=#645 id=645 data-nosnippet>645</a>                    
timestamp::nanoseconds_to_datetime(val)
-<a href=#646 id=646 data-nosnippet>646</a>                        
.format(<span class="string">"%Y-%m-%dT%H:%M:%S%.f"</span>)
-<a href=#647 id=647 data-nosnippet>647</a>                        .to_string(),
-<a href=#648 id=648 data-nosnippet>648</a>                )),
-<a href=#649 id=649 data-nosnippet>649</a>                
(PrimitiveType::TimestamptzNs, PrimitiveLiteral::Long(val)) =&gt; {
-<a href=#650 id=650 data-nosnippet>650</a>                    <span 
class="prelude-val">Ok</span>(JsonValue::String(
-<a href=#651 id=651 data-nosnippet>651</a>                        
timestamptz::nanoseconds_to_datetimetz(val)
-<a href=#652 id=652 data-nosnippet>652</a>                            
.format(<span class="string">"%Y-%m-%dT%H:%M:%S%.f+00:00"</span>)
-<a href=#653 id=653 data-nosnippet>653</a>                            
.to_string(),
-<a href=#654 id=654 data-nosnippet>654</a>                    ))
-<a href=#655 id=655 data-nosnippet>655</a>                }
-<a href=#656 id=656 data-nosnippet>656</a>                
(PrimitiveType::String, PrimitiveLiteral::String(val)) =&gt; {
-<a href=#657 id=657 data-nosnippet>657</a>                    <span 
class="prelude-val">Ok</span>(JsonValue::String(val.clone()))
-<a href=#658 id=658 data-nosnippet>658</a>                }
-<a href=#659 id=659 data-nosnippet>659</a>                (<span 
class="kw">_</span>, PrimitiveLiteral::UInt128(val)) =&gt; {
-<a href=#660 id=660 data-nosnippet>660</a>                    <span 
class="prelude-val">Ok</span>(JsonValue::String(Uuid::from_u128(val).to_string()))
+<a href=#628 id=628 data-nosnippet>628</a>                
(PrimitiveType::Double, PrimitiveLiteral::Double(val)) =&gt; {
+<a href=#629 id=629 data-nosnippet>629</a>                    <span 
class="kw">match </span>Number::from_f64(val.<span class="number">0</span>) {
+<a href=#630 id=630 data-nosnippet>630</a>                        <span 
class="prelude-val">Some</span>(number) =&gt; <span 
class="prelude-val">Ok</span>(JsonValue::Number(number)),
+<a href=#631 id=631 data-nosnippet>631</a>                        <span 
class="prelude-val">None </span>=&gt; <span 
class="prelude-val">Ok</span>(JsonValue::Null),
+<a href=#632 id=632 data-nosnippet>632</a>                    }
+<a href=#633 id=633 data-nosnippet>633</a>                }
+<a href=#634 id=634 data-nosnippet>634</a>                
(PrimitiveType::Date, PrimitiveLiteral::Int(val)) =&gt; {
+<a href=#635 id=635 data-nosnippet>635</a>                    <span 
class="prelude-val">Ok</span>(JsonValue::String(date::days_to_date(val).to_string()))
+<a href=#636 id=636 data-nosnippet>636</a>                }
+<a href=#637 id=637 data-nosnippet>637</a>                
(PrimitiveType::Time, PrimitiveLiteral::Long(val)) =&gt; <span 
class="prelude-val">Ok</span>(JsonValue::String(
+<a href=#638 id=638 data-nosnippet>638</a>                    
time::microseconds_to_time(val).to_string(),
+<a href=#639 id=639 data-nosnippet>639</a>                )),
+<a href=#640 id=640 data-nosnippet>640</a>                
(PrimitiveType::Timestamp, PrimitiveLiteral::Long(val)) =&gt; <span 
class="prelude-val">Ok</span>(JsonValue::String(
+<a href=#641 id=641 data-nosnippet>641</a>                    
timestamp::microseconds_to_datetime(val)
+<a href=#642 id=642 data-nosnippet>642</a>                        
.format(<span class="string">"%Y-%m-%dT%H:%M:%S%.f"</span>)
+<a href=#643 id=643 data-nosnippet>643</a>                        .to_string(),
+<a href=#644 id=644 data-nosnippet>644</a>                )),
+<a href=#645 id=645 data-nosnippet>645</a>                
(PrimitiveType::Timestamptz, PrimitiveLiteral::Long(val)) =&gt; <span 
class="prelude-val">Ok</span>(JsonValue::String(
+<a href=#646 id=646 data-nosnippet>646</a>                    
timestamptz::microseconds_to_datetimetz(val)
+<a href=#647 id=647 data-nosnippet>647</a>                        
.format(<span class="string">"%Y-%m-%dT%H:%M:%S%.f+00:00"</span>)
+<a href=#648 id=648 data-nosnippet>648</a>                        .to_string(),
+<a href=#649 id=649 data-nosnippet>649</a>                )),
+<a href=#650 id=650 data-nosnippet>650</a>                
(PrimitiveType::TimestampNs, PrimitiveLiteral::Long(val)) =&gt; <span 
class="prelude-val">Ok</span>(JsonValue::String(
+<a href=#651 id=651 data-nosnippet>651</a>                    
timestamp::nanoseconds_to_datetime(val)
+<a href=#652 id=652 data-nosnippet>652</a>                        
.format(<span class="string">"%Y-%m-%dT%H:%M:%S%.f"</span>)
+<a href=#653 id=653 data-nosnippet>653</a>                        .to_string(),
+<a href=#654 id=654 data-nosnippet>654</a>                )),
+<a href=#655 id=655 data-nosnippet>655</a>                
(PrimitiveType::TimestamptzNs, PrimitiveLiteral::Long(val)) =&gt; {
+<a href=#656 id=656 data-nosnippet>656</a>                    <span 
class="prelude-val">Ok</span>(JsonValue::String(
+<a href=#657 id=657 data-nosnippet>657</a>                        
timestamptz::nanoseconds_to_datetimetz(val)
+<a href=#658 id=658 data-nosnippet>658</a>                            
.format(<span class="string">"%Y-%m-%dT%H:%M:%S%.f+00:00"</span>)
+<a href=#659 id=659 data-nosnippet>659</a>                            
.to_string(),
+<a href=#660 id=660 data-nosnippet>660</a>                    ))
 <a href=#661 id=661 data-nosnippet>661</a>                }
-<a href=#662 id=662 data-nosnippet>662</a>                (<span 
class="kw">_</span>, PrimitiveLiteral::Binary(val)) =&gt; <span 
class="prelude-val">Ok</span>(JsonValue::String(val.iter().fold(
-<a href=#663 id=663 data-nosnippet>663</a>                    String::new(),
-<a href=#664 id=664 data-nosnippet>664</a>                    |<span 
class="kw-2">mut </span>acc, x| {
-<a href=#665 id=665 data-nosnippet>665</a>                        
acc.push_str(<span class="kw-2">&amp;</span><span 
class="macro">format!</span>(<span class="string">"{x:x}"</span>));
-<a href=#666 id=666 data-nosnippet>666</a>                        acc
-<a href=#667 id=667 data-nosnippet>667</a>                    },
-<a href=#668 id=668 data-nosnippet>668</a>                ))),
-<a href=#669 id=669 data-nosnippet>669</a>                (<span 
class="kw">_</span>, PrimitiveLiteral::Int128(val)) =&gt; <span 
class="kw">match </span>r#type {
-<a href=#670 id=670 data-nosnippet>670</a>                    
Type::Primitive(PrimitiveType::Decimal {
-<a href=#671 id=671 data-nosnippet>671</a>                        precision: 
_precision,
-<a href=#672 id=672 data-nosnippet>672</a>                        scale,
-<a href=#673 id=673 data-nosnippet>673</a>                    }) =&gt; {
-<a href=#674 id=674 data-nosnippet>674</a>                        <span 
class="kw">let </span>decimal = try_decimal_from_i128_with_scale(val, <span 
class="kw-2">*</span>scale)<span class="question-mark">?</span>;
-<a href=#675 id=675 data-nosnippet>675</a>                        <span 
class="prelude-val">Ok</span>(JsonValue::String(decimal.to_string()))
-<a href=#676 id=676 data-nosnippet>676</a>                    }
-<a href=#677 id=677 data-nosnippet>677</a>                    <span 
class="kw">_ </span>=&gt; <span class="prelude-val">Err</span>(Error::new(
-<a href=#678 id=678 data-nosnippet>678</a>                        
ErrorKind::DataInvalid,
-<a href=#679 id=679 data-nosnippet>679</a>                        <span 
class="string">"The iceberg type for decimal literal must be decimal."</span>,
-<a href=#680 id=680 data-nosnippet>680</a>                    ))<span 
class="question-mark">?</span>,
-<a href=#681 id=681 data-nosnippet>681</a>                },
-<a href=#682 id=682 data-nosnippet>682</a>                <span class="kw">_ 
</span>=&gt; <span class="prelude-val">Err</span>(Error::new(
-<a href=#683 id=683 data-nosnippet>683</a>                    
ErrorKind::DataInvalid,
-<a href=#684 id=684 data-nosnippet>684</a>                    <span 
class="string">"The iceberg value doesn't fit to the iceberg type."</span>,
-<a href=#685 id=685 data-nosnippet>685</a>                )),
-<a href=#686 id=686 data-nosnippet>686</a>            },
-<a href=#687 id=687 data-nosnippet>687</a>            (Literal::Struct(s), 
Type::Struct(struct_type)) =&gt; {
-<a href=#688 id=688 data-nosnippet>688</a>                <span class="kw">let 
</span><span class="kw-2">mut </span>id_and_value = 
Vec::with_capacity(struct_type.fields().len());
-<a href=#689 id=689 data-nosnippet>689</a>                <span class="kw">for 
</span>(value, field) <span class="kw">in 
</span>s.into_iter().zip(struct_type.fields()) {
-<a href=#690 id=690 data-nosnippet>690</a>                    <span 
class="kw">let </span>json = <span class="kw">match </span>value {
-<a href=#691 id=691 data-nosnippet>691</a>                        <span 
class="prelude-val">Some</span>(val) =&gt; val.try_into_json(<span 
class="kw-2">&amp;</span>field.field_type)<span class="question-mark">?</span>,
-<a href=#692 id=692 data-nosnippet>692</a>                        <span 
class="prelude-val">None </span>=&gt; JsonValue::Null,
-<a href=#693 id=693 data-nosnippet>693</a>                    };
-<a href=#694 id=694 data-nosnippet>694</a>                    
id_and_value.push((field.id.to_string(), json));
-<a href=#695 id=695 data-nosnippet>695</a>                }
-<a href=#696 id=696 data-nosnippet>696</a>                <span 
class="prelude-val">Ok</span>(JsonValue::Object(JsonMap::from_iter(id_and_value)))
-<a href=#697 id=697 data-nosnippet>697</a>            }
-<a href=#698 id=698 data-nosnippet>698</a>            (Literal::List(list), 
Type::List(list_type)) =&gt; <span 
class="prelude-val">Ok</span>(JsonValue::Array(
-<a href=#699 id=699 data-nosnippet>699</a>                list.into_iter()
-<a href=#700 id=700 data-nosnippet>700</a>                    .map(|opt| <span 
class="kw">match </span>opt {
-<a href=#701 id=701 data-nosnippet>701</a>                        <span 
class="prelude-val">Some</span>(literal) =&gt; literal.try_into_json(<span 
class="kw-2">&amp;</span>list_type.element_field.field_type),
-<a href=#702 id=702 data-nosnippet>702</a>                        <span 
class="prelude-val">None </span>=&gt; <span 
class="prelude-val">Ok</span>(JsonValue::Null),
-<a href=#703 id=703 data-nosnippet>703</a>                    })
-<a href=#704 id=704 data-nosnippet>704</a>                    
.collect::&lt;<span 
class="prelude-ty">Result</span>&lt;Vec&lt;JsonValue&gt;&gt;&gt;()<span 
class="question-mark">?</span>,
-<a href=#705 id=705 data-nosnippet>705</a>            )),
-<a href=#706 id=706 data-nosnippet>706</a>            (Literal::Map(map), 
Type::Map(map_type)) =&gt; {
-<a href=#707 id=707 data-nosnippet>707</a>                <span class="kw">let 
</span><span class="kw-2">mut </span>object = JsonMap::with_capacity(<span 
class="number">2</span>);
-<a href=#708 id=708 data-nosnippet>708</a>                <span class="kw">let 
</span><span class="kw-2">mut </span>json_keys = Vec::with_capacity(map.len());
-<a href=#709 id=709 data-nosnippet>709</a>                <span class="kw">let 
</span><span class="kw-2">mut </span>json_values = 
Vec::with_capacity(map.len());
-<a href=#710 id=710 data-nosnippet>710</a>                <span class="kw">for 
</span>(key, value) <span class="kw">in </span>map.into_iter() {
-<a href=#711 id=711 data-nosnippet>711</a>                    
json_keys.push(key.try_into_json(<span 
class="kw-2">&amp;</span>map_type.key_field.field_type)<span 
class="question-mark">?</span>);
-<a href=#712 id=712 data-nosnippet>712</a>                    
json_values.push(<span class="kw">match </span>value {
-<a href=#713 id=713 data-nosnippet>713</a>                        <span 
class="prelude-val">Some</span>(literal) =&gt; literal.try_into_json(<span 
class="kw-2">&amp;</span>map_type.value_field.field_type)<span 
class="question-mark">?</span>,
-<a href=#714 id=714 data-nosnippet>714</a>                        <span 
class="prelude-val">None </span>=&gt; JsonValue::Null,
-<a href=#715 id=715 data-nosnippet>715</a>                    });
-<a href=#716 id=716 data-nosnippet>716</a>                }
-<a href=#717 id=717 data-nosnippet>717</a>                object.insert(<span 
class="string">"keys"</span>.to_string(), JsonValue::Array(json_keys));
-<a href=#718 id=718 data-nosnippet>718</a>                object.insert(<span 
class="string">"values"</span>.to_string(), JsonValue::Array(json_values));
-<a href=#719 id=719 data-nosnippet>719</a>                <span 
class="prelude-val">Ok</span>(JsonValue::Object(object))
-<a href=#720 id=720 data-nosnippet>720</a>            }
-<a href=#721 id=721 data-nosnippet>721</a>            (value, r#type) =&gt; 
<span class="prelude-val">Err</span>(Error::new(
-<a href=#722 id=722 data-nosnippet>722</a>                
ErrorKind::DataInvalid,
-<a href=#723 id=723 data-nosnippet>723</a>                <span 
class="macro">format!</span>(<span class="string">"The iceberg value {value:?} 
doesn't fit to the iceberg type {type}."</span>),
-<a href=#724 id=724 data-nosnippet>724</a>            )),
-<a href=#725 id=725 data-nosnippet>725</a>        }
-<a href=#726 id=726 data-nosnippet>726</a>    }
-<a href=#727 id=727 data-nosnippet>727</a>
-<a href=#728 id=728 data-nosnippet>728</a>    <span class="doccomment">/// 
Convert Value to the any type
-<a href=#729 id=729 data-nosnippet>729</a>    </span><span class="kw">pub fn 
</span>into_any(<span class="self">self</span>) -&gt; Box&lt;<span 
class="kw">dyn </span>Any&gt; {
-<a href=#730 id=730 data-nosnippet>730</a>        <span class="kw">match 
</span><span class="self">self </span>{
-<a href=#731 id=731 data-nosnippet>731</a>            Literal::Primitive(prim) 
=&gt; <span class="kw">match </span>prim {
-<a href=#732 id=732 data-nosnippet>732</a>                
PrimitiveLiteral::Boolean(any) =&gt; Box::new(any),
-<a href=#733 id=733 data-nosnippet>733</a>                
PrimitiveLiteral::Int(any) =&gt; Box::new(any),
-<a href=#734 id=734 data-nosnippet>734</a>                
PrimitiveLiteral::Long(any) =&gt; Box::new(any),
-<a href=#735 id=735 data-nosnippet>735</a>                
PrimitiveLiteral::Float(any) =&gt; Box::new(any),
-<a href=#736 id=736 data-nosnippet>736</a>                
PrimitiveLiteral::Double(any) =&gt; Box::new(any),
-<a href=#737 id=737 data-nosnippet>737</a>                
PrimitiveLiteral::Binary(any) =&gt; Box::new(any),
-<a href=#738 id=738 data-nosnippet>738</a>                
PrimitiveLiteral::String(any) =&gt; Box::new(any),
-<a href=#739 id=739 data-nosnippet>739</a>                
PrimitiveLiteral::UInt128(any) =&gt; Box::new(any),
-<a href=#740 id=740 data-nosnippet>740</a>                
PrimitiveLiteral::Int128(any) =&gt; Box::new(any),
-<a href=#741 id=741 data-nosnippet>741</a>                
PrimitiveLiteral::AboveMax | PrimitiveLiteral::BelowMin =&gt; <span 
class="macro">unimplemented!</span>(),
-<a href=#742 id=742 data-nosnippet>742</a>            },
-<a href=#743 id=743 data-nosnippet>743</a>            <span class="kw">_ 
</span>=&gt; <span class="macro">unimplemented!</span>(),
-<a href=#744 id=744 data-nosnippet>744</a>        }
-<a href=#745 id=745 data-nosnippet>745</a>    }
-<a href=#746 id=746 data-nosnippet>746</a>}
+<a href=#662 id=662 data-nosnippet>662</a>                
(PrimitiveType::String, PrimitiveLiteral::String(val)) =&gt; {
+<a href=#663 id=663 data-nosnippet>663</a>                    <span 
class="prelude-val">Ok</span>(JsonValue::String(val.clone()))
+<a href=#664 id=664 data-nosnippet>664</a>                }
+<a href=#665 id=665 data-nosnippet>665</a>                (<span 
class="kw">_</span>, PrimitiveLiteral::UInt128(val)) =&gt; {
+<a href=#666 id=666 data-nosnippet>666</a>                    <span 
class="prelude-val">Ok</span>(JsonValue::String(Uuid::from_u128(val).to_string()))
+<a href=#667 id=667 data-nosnippet>667</a>                }
+<a href=#668 id=668 data-nosnippet>668</a>                
(PrimitiveType::Fixed(size), PrimitiveLiteral::Binary(val)) =&gt; {
+<a href=#669 id=669 data-nosnippet>669</a>                    
validate_fixed_size(val.len(), <span class="kw-2">*</span>size)<span 
class="question-mark">?</span>;
+<a href=#670 id=670 data-nosnippet>670</a>                    <span 
class="prelude-val">Ok</span>(JsonValue::String(encode_hex_bytes(<span 
class="kw-2">&amp;</span>val)))
+<a href=#671 id=671 data-nosnippet>671</a>                }
+<a href=#672 id=672 data-nosnippet>672</a>                
(PrimitiveType::Binary, PrimitiveLiteral::Binary(val)) =&gt; {
+<a href=#673 id=673 data-nosnippet>673</a>                    <span 
class="prelude-val">Ok</span>(JsonValue::String(encode_hex_bytes(<span 
class="kw-2">&amp;</span>val)))
+<a href=#674 id=674 data-nosnippet>674</a>                }
+<a href=#675 id=675 data-nosnippet>675</a>                (<span 
class="kw">_</span>, PrimitiveLiteral::Int128(val)) =&gt; <span 
class="kw">match </span>r#type {
+<a href=#676 id=676 data-nosnippet>676</a>                    
Type::Primitive(PrimitiveType::Decimal {
+<a href=#677 id=677 data-nosnippet>677</a>                        precision: 
_precision,
+<a href=#678 id=678 data-nosnippet>678</a>                        scale,
+<a href=#679 id=679 data-nosnippet>679</a>                    }) =&gt; {
+<a href=#680 id=680 data-nosnippet>680</a>                        <span 
class="kw">let </span>decimal = try_decimal_from_i128_with_scale(val, <span 
class="kw-2">*</span>scale)<span class="question-mark">?</span>;
+<a href=#681 id=681 data-nosnippet>681</a>                        <span 
class="prelude-val">Ok</span>(JsonValue::String(decimal.to_string()))
+<a href=#682 id=682 data-nosnippet>682</a>                    }
+<a href=#683 id=683 data-nosnippet>683</a>                    <span 
class="kw">_ </span>=&gt; <span class="prelude-val">Err</span>(Error::new(
+<a href=#684 id=684 data-nosnippet>684</a>                        
ErrorKind::DataInvalid,
+<a href=#685 id=685 data-nosnippet>685</a>                        <span 
class="string">"The iceberg type for decimal literal must be decimal."</span>,
+<a href=#686 id=686 data-nosnippet>686</a>                    ))<span 
class="question-mark">?</span>,
+<a href=#687 id=687 data-nosnippet>687</a>                },
+<a href=#688 id=688 data-nosnippet>688</a>                <span class="kw">_ 
</span>=&gt; <span class="prelude-val">Err</span>(Error::new(
+<a href=#689 id=689 data-nosnippet>689</a>                    
ErrorKind::DataInvalid,
+<a href=#690 id=690 data-nosnippet>690</a>                    <span 
class="string">"The iceberg value doesn't fit to the iceberg type."</span>,
+<a href=#691 id=691 data-nosnippet>691</a>                )),
+<a href=#692 id=692 data-nosnippet>692</a>            },
+<a href=#693 id=693 data-nosnippet>693</a>            (Literal::Struct(s), 
Type::Struct(struct_type)) =&gt; {
+<a href=#694 id=694 data-nosnippet>694</a>                <span class="kw">let 
</span><span class="kw-2">mut </span>id_and_value = 
Vec::with_capacity(struct_type.fields().len());
+<a href=#695 id=695 data-nosnippet>695</a>                <span class="kw">for 
</span>(value, field) <span class="kw">in 
</span>s.into_iter().zip(struct_type.fields()) {
+<a href=#696 id=696 data-nosnippet>696</a>                    <span 
class="kw">let </span>json = <span class="kw">match </span>value {
+<a href=#697 id=697 data-nosnippet>697</a>                        <span 
class="prelude-val">Some</span>(val) =&gt; val.try_into_json(<span 
class="kw-2">&amp;</span>field.field_type)<span class="question-mark">?</span>,
+<a href=#698 id=698 data-nosnippet>698</a>                        <span 
class="prelude-val">None </span>=&gt; JsonValue::Null,
+<a href=#699 id=699 data-nosnippet>699</a>                    };
+<a href=#700 id=700 data-nosnippet>700</a>                    
id_and_value.push((field.id.to_string(), json));
+<a href=#701 id=701 data-nosnippet>701</a>                }
+<a href=#702 id=702 data-nosnippet>702</a>                <span 
class="prelude-val">Ok</span>(JsonValue::Object(JsonMap::from_iter(id_and_value)))
+<a href=#703 id=703 data-nosnippet>703</a>            }
+<a href=#704 id=704 data-nosnippet>704</a>            (Literal::List(list), 
Type::List(list_type)) =&gt; <span 
class="prelude-val">Ok</span>(JsonValue::Array(
+<a href=#705 id=705 data-nosnippet>705</a>                list.into_iter()
+<a href=#706 id=706 data-nosnippet>706</a>                    .map(|opt| <span 
class="kw">match </span>opt {
+<a href=#707 id=707 data-nosnippet>707</a>                        <span 
class="prelude-val">Some</span>(literal) =&gt; literal.try_into_json(<span 
class="kw-2">&amp;</span>list_type.element_field.field_type),
+<a href=#708 id=708 data-nosnippet>708</a>                        <span 
class="prelude-val">None </span>=&gt; <span 
class="prelude-val">Ok</span>(JsonValue::Null),
+<a href=#709 id=709 data-nosnippet>709</a>                    })
+<a href=#710 id=710 data-nosnippet>710</a>                    
.collect::&lt;<span 
class="prelude-ty">Result</span>&lt;Vec&lt;JsonValue&gt;&gt;&gt;()<span 
class="question-mark">?</span>,
+<a href=#711 id=711 data-nosnippet>711</a>            )),
+<a href=#712 id=712 data-nosnippet>712</a>            (Literal::Map(map), 
Type::Map(map_type)) =&gt; {
+<a href=#713 id=713 data-nosnippet>713</a>                <span class="kw">let 
</span><span class="kw-2">mut </span>object = JsonMap::with_capacity(<span 
class="number">2</span>);
+<a href=#714 id=714 data-nosnippet>714</a>                <span class="kw">let 
</span><span class="kw-2">mut </span>json_keys = Vec::with_capacity(map.len());
+<a href=#715 id=715 data-nosnippet>715</a>                <span class="kw">let 
</span><span class="kw-2">mut </span>json_values = 
Vec::with_capacity(map.len());
+<a href=#716 id=716 data-nosnippet>716</a>                <span class="kw">for 
</span>(key, value) <span class="kw">in </span>map.into_iter() {
+<a href=#717 id=717 data-nosnippet>717</a>                    
json_keys.push(key.try_into_json(<span 
class="kw-2">&amp;</span>map_type.key_field.field_type)<span 
class="question-mark">?</span>);
+<a href=#718 id=718 data-nosnippet>718</a>                    
json_values.push(<span class="kw">match </span>value {
+<a href=#719 id=719 data-nosnippet>719</a>                        <span 
class="prelude-val">Some</span>(literal) =&gt; literal.try_into_json(<span 
class="kw-2">&amp;</span>map_type.value_field.field_type)<span 
class="question-mark">?</span>,
+<a href=#720 id=720 data-nosnippet>720</a>                        <span 
class="prelude-val">None </span>=&gt; JsonValue::Null,
+<a href=#721 id=721 data-nosnippet>721</a>                    });
+<a href=#722 id=722 data-nosnippet>722</a>                }
+<a href=#723 id=723 data-nosnippet>723</a>                object.insert(<span 
class="string">"keys"</span>.to_string(), JsonValue::Array(json_keys));
+<a href=#724 id=724 data-nosnippet>724</a>                object.insert(<span 
class="string">"values"</span>.to_string(), JsonValue::Array(json_values));
+<a href=#725 id=725 data-nosnippet>725</a>                <span 
class="prelude-val">Ok</span>(JsonValue::Object(object))
+<a href=#726 id=726 data-nosnippet>726</a>            }
+<a href=#727 id=727 data-nosnippet>727</a>            (value, r#type) =&gt; 
<span class="prelude-val">Err</span>(Error::new(
+<a href=#728 id=728 data-nosnippet>728</a>                
ErrorKind::DataInvalid,
+<a href=#729 id=729 data-nosnippet>729</a>                <span 
class="macro">format!</span>(<span class="string">"The iceberg value {value:?} 
doesn't fit to the iceberg type {type}."</span>),
+<a href=#730 id=730 data-nosnippet>730</a>            )),
+<a href=#731 id=731 data-nosnippet>731</a>        }
+<a href=#732 id=732 data-nosnippet>732</a>    }
+<a href=#733 id=733 data-nosnippet>733</a>
+<a href=#734 id=734 data-nosnippet>734</a>    <span class="doccomment">/// 
Convert Value to the any type
+<a href=#735 id=735 data-nosnippet>735</a>    </span><span class="kw">pub fn 
</span>into_any(<span class="self">self</span>) -&gt; Box&lt;<span 
class="kw">dyn </span>Any&gt; {
+<a href=#736 id=736 data-nosnippet>736</a>        <span class="kw">match 
</span><span class="self">self </span>{
+<a href=#737 id=737 data-nosnippet>737</a>            Literal::Primitive(prim) 
=&gt; <span class="kw">match </span>prim {
+<a href=#738 id=738 data-nosnippet>738</a>                
PrimitiveLiteral::Boolean(any) =&gt; Box::new(any),
+<a href=#739 id=739 data-nosnippet>739</a>                
PrimitiveLiteral::Int(any) =&gt; Box::new(any),
+<a href=#740 id=740 data-nosnippet>740</a>                
PrimitiveLiteral::Long(any) =&gt; Box::new(any),
+<a href=#741 id=741 data-nosnippet>741</a>                
PrimitiveLiteral::Float(any) =&gt; Box::new(any),
+<a href=#742 id=742 data-nosnippet>742</a>                
PrimitiveLiteral::Double(any) =&gt; Box::new(any),
+<a href=#743 id=743 data-nosnippet>743</a>                
PrimitiveLiteral::Binary(any) =&gt; Box::new(any),
+<a href=#744 id=744 data-nosnippet>744</a>                
PrimitiveLiteral::String(any) =&gt; Box::new(any),
+<a href=#745 id=745 data-nosnippet>745</a>                
PrimitiveLiteral::UInt128(any) =&gt; Box::new(any),
+<a href=#746 id=746 data-nosnippet>746</a>                
PrimitiveLiteral::Int128(any) =&gt; Box::new(any),
+<a href=#747 id=747 data-nosnippet>747</a>                
PrimitiveLiteral::AboveMax | PrimitiveLiteral::BelowMin =&gt; <span 
class="macro">unimplemented!</span>(),
+<a href=#748 id=748 data-nosnippet>748</a>            },
+<a href=#749 id=749 data-nosnippet>749</a>            <span class="kw">_ 
</span>=&gt; <span class="macro">unimplemented!</span>(),
+<a href=#750 id=750 data-nosnippet>750</a>        }
+<a href=#751 id=751 data-nosnippet>751</a>    }
+<a href=#752 id=752 data-nosnippet>752</a>}
+<a href=#753 id=753 data-nosnippet>753</a>
+<a href=#754 id=754 data-nosnippet>754</a><span class="kw">fn 
</span>decode_hex_bytes(value: <span class="kw-2">&amp;</span>str) -&gt; <span 
class="prelude-ty">Result</span>&lt;Vec&lt;u8&gt;&gt; {
+<a href=#755 id=755 data-nosnippet>755</a>    <span class="macro">if 
!</span>value.len().is_multiple_of(<span class="number">2</span>) {
+<a href=#756 id=756 data-nosnippet>756</a>        <span class="kw">return 
</span><span class="prelude-val">Err</span>(Error::new(
+<a href=#757 id=757 data-nosnippet>757</a>            ErrorKind::DataInvalid,
+<a href=#758 id=758 data-nosnippet>758</a>            <span 
class="macro">format!</span>(<span class="string">"Hex string must have an even 
number of characters: {value:?}"</span>),
+<a href=#759 id=759 data-nosnippet>759</a>        ));
+<a href=#760 id=760 data-nosnippet>760</a>    }
+<a href=#761 id=761 data-nosnippet>761</a>
+<a href=#762 id=762 data-nosnippet>762</a>    value
+<a href=#763 id=763 data-nosnippet>763</a>        .as_bytes()
+<a href=#764 id=764 data-nosnippet>764</a>        .chunks_exact(<span 
class="number">2</span>)
+<a href=#765 id=765 data-nosnippet>765</a>        .map(|chunk| {
+<a href=#766 id=766 data-nosnippet>766</a>            <span class="kw">let 
</span>high = decode_hex_digit(chunk[<span class="number">0</span>], 
value)<span class="question-mark">?</span>;
+<a href=#767 id=767 data-nosnippet>767</a>            <span class="kw">let 
</span>low = decode_hex_digit(chunk[<span class="number">1</span>], value)<span 
class="question-mark">?</span>;
+<a href=#768 id=768 data-nosnippet>768</a>            <span 
class="prelude-val">Ok</span>((high &lt;&lt; <span class="number">4</span>) | 
low)
+<a href=#769 id=769 data-nosnippet>769</a>        })
+<a href=#770 id=770 data-nosnippet>770</a>        .collect()
+<a href=#771 id=771 data-nosnippet>771</a>}
+<a href=#772 id=772 data-nosnippet>772</a>
+<a href=#773 id=773 data-nosnippet>773</a><span class="kw">fn 
</span>decode_hex_digit(digit: u8, value: <span class="kw-2">&amp;</span>str) 
-&gt; <span class="prelude-ty">Result</span>&lt;u8&gt; {
+<a href=#774 id=774 data-nosnippet>774</a>    <span class="kw">match 
</span>digit {
+<a href=#775 id=775 data-nosnippet>775</a>        <span 
class="string">b'0'</span>..=<span class="string">b'9' </span>=&gt; <span 
class="prelude-val">Ok</span>(digit - <span class="string">b'0'</span>),
+<a href=#776 id=776 data-nosnippet>776</a>        <span 
class="string">b'a'</span>..=<span class="string">b'f' </span>=&gt; <span 
class="prelude-val">Ok</span>(digit - <span class="string">b'a' </span>+ <span 
class="number">10</span>),
+<a href=#777 id=777 data-nosnippet>777</a>        <span 
class="string">b'A'</span>..=<span class="string">b'F' </span>=&gt; <span 
class="prelude-val">Ok</span>(digit - <span class="string">b'A' </span>+ <span 
class="number">10</span>),
+<a href=#778 id=778 data-nosnippet>778</a>        <span class="kw">_ 
</span>=&gt; <span class="prelude-val">Err</span>(Error::new(
+<a href=#779 id=779 data-nosnippet>779</a>            ErrorKind::DataInvalid,
+<a href=#780 id=780 data-nosnippet>780</a>            <span 
class="macro">format!</span>(<span class="string">"Hex string contains invalid 
character: {value:?}"</span>),
+<a href=#781 id=781 data-nosnippet>781</a>        )),
+<a href=#782 id=782 data-nosnippet>782</a>    }
+<a href=#783 id=783 data-nosnippet>783</a>}
+<a href=#784 id=784 data-nosnippet>784</a>
+<a href=#785 id=785 data-nosnippet>785</a><span class="kw">fn 
</span>encode_hex_bytes(bytes: <span class="kw-2">&amp;</span>[u8]) -&gt; 
String {
+<a href=#786 id=786 data-nosnippet>786</a>    <span class="kw">const 
</span>HEX_DIGITS: <span class="kw-2">&amp;</span>[u8; <span 
class="number">16</span>] = <span class="string">b"0123456789abcdef"</span>;
+<a href=#787 id=787 data-nosnippet>787</a>
+<a href=#788 id=788 data-nosnippet>788</a>    <span class="kw">let 
</span><span class="kw-2">mut </span>output = String::with_capacity(bytes.len() 
* <span class="number">2</span>);
+<a href=#789 id=789 data-nosnippet>789</a>    <span class="kw">for </span>byte 
<span class="kw">in </span>bytes {
+<a href=#790 id=790 data-nosnippet>790</a>        output.push(HEX_DIGITS[(byte 
&gt;&gt; <span class="number">4</span>) <span class="kw">as </span>usize] <span 
class="kw">as </span>char);
+<a href=#791 id=791 data-nosnippet>791</a>        output.push(HEX_DIGITS[(byte 
&amp; <span class="number">0x0f</span>) <span class="kw">as </span>usize] <span 
class="kw">as </span>char);
+<a href=#792 id=792 data-nosnippet>792</a>    }
+<a href=#793 id=793 data-nosnippet>793</a>    output
+<a href=#794 id=794 data-nosnippet>794</a>}
+<a href=#795 id=795 data-nosnippet>795</a>
+<a href=#796 id=796 data-nosnippet>796</a><span class="kw">fn 
</span>validate_fixed_size(actual: usize, expected: u64) -&gt; <span 
class="prelude-ty">Result</span>&lt;()&gt; {
+<a href=#797 id=797 data-nosnippet>797</a>    <span class="kw">if 
</span>actual <span class="kw">as </span>u64 == expected {
+<a href=#798 id=798 data-nosnippet>798</a>        <span 
class="prelude-val">Ok</span>(())
+<a href=#799 id=799 data-nosnippet>799</a>    } <span class="kw">else </span>{
+<a href=#800 id=800 data-nosnippet>800</a>        <span 
class="prelude-val">Err</span>(Error::new(
+<a href=#801 id=801 data-nosnippet>801</a>            ErrorKind::DataInvalid,
+<a href=#802 id=802 data-nosnippet>802</a>            <span 
class="macro">format!</span>(<span class="string">"Fixed type must be exactly 
{expected} bytes, got {actual}"</span>),
+<a href=#803 id=803 data-nosnippet>803</a>        ))
+<a href=#804 id=804 data-nosnippet>804</a>    }
+<a href=#805 id=805 data-nosnippet>805</a>}
 </code></pre></div></section></main></body></html>
\ No newline at end of file
diff --git a/api/trait.impl/iceberg/catalog/trait.Catalog.js 
b/api/trait.impl/iceberg/catalog/trait.Catalog.js
index 818669858..6a5715595 100644
--- a/api/trait.impl/iceberg/catalog/trait.Catalog.js
+++ b/api/trait.impl/iceberg/catalog/trait.Catalog.js
@@ -1,9 +1,9 @@
 (function() {
-    var implementors = 
Object.fromEntries([["iceberg",[]],["iceberg_catalog_glue",[["impl <a 
class=\"trait\" href=\"iceberg/catalog/trait.Catalog.html\" title=\"trait 
iceberg::catalog::Catalog\">Catalog</a> for <a class=\"struct\" 
href=\"iceberg_catalog_glue/struct.GlueCatalog.html\" title=\"struct 
iceberg_catalog_glue::GlueCatalog\">GlueCatalog</a>"]]],["iceberg_catalog_hms",[["impl
 <a class=\"trait\" href=\"iceberg/catalog/trait.Catalog.html\" title=\"trait 
iceberg::catalog::Catalog\"> [...]
+    var implementors = 
Object.fromEntries([["iceberg",[]],["iceberg_catalog_glue",[["impl <a 
class=\"trait\" href=\"iceberg/catalog/trait.Catalog.html\" title=\"trait 
iceberg::catalog::Catalog\">Catalog</a> for <a class=\"struct\" 
href=\"iceberg_catalog_glue/struct.GlueCatalog.html\" title=\"struct 
iceberg_catalog_glue::GlueCatalog\">GlueCatalog</a>"]]],["iceberg_catalog_hms",[["impl
 Catalog for <a class=\"struct\" 
href=\"iceberg_catalog_hms/struct.HmsCatalog.html\" title=\"struct iceber [...]
     if (window.register_implementors) {
         window.register_implementors(implementors);
     } else {
         window.pending_implementors = implementors;
     }
 })()
-//{"start":57,"fragment_lengths":[14,298,292,189,213,183]}
\ No newline at end of file
+//{"start":57,"fragment_lengths":[14,298,183,189,213,183]}
\ No newline at end of file
diff --git a/api/trait.impl/iceberg/catalog/trait.CatalogBuilder.js 
b/api/trait.impl/iceberg/catalog/trait.CatalogBuilder.js
index 878cb1be5..a53aa68a0 100644
--- a/api/trait.impl/iceberg/catalog/trait.CatalogBuilder.js
+++ b/api/trait.impl/iceberg/catalog/trait.CatalogBuilder.js
@@ -1,9 +1,9 @@
 (function() {
-    var implementors = 
Object.fromEntries([["iceberg",[]],["iceberg_catalog_glue",[["impl <a 
class=\"trait\" href=\"iceberg/catalog/trait.CatalogBuilder.html\" 
title=\"trait iceberg::catalog::CatalogBuilder\">CatalogBuilder</a> for <a 
class=\"struct\" href=\"iceberg_catalog_glue/struct.GlueCatalogBuilder.html\" 
title=\"struct 
iceberg_catalog_glue::GlueCatalogBuilder\">GlueCatalogBuilder</a>"]]],["iceberg_catalog_hms",[["impl
 <a class=\"trait\" href=\"iceberg/catalog/trait.CatalogBuilder. [...]
+    var implementors = 
Object.fromEntries([["iceberg",[]],["iceberg_catalog_glue",[["impl <a 
class=\"trait\" href=\"iceberg/catalog/trait.CatalogBuilder.html\" 
title=\"trait iceberg::catalog::CatalogBuilder\">CatalogBuilder</a> for <a 
class=\"struct\" href=\"iceberg_catalog_glue/struct.GlueCatalogBuilder.html\" 
title=\"struct 
iceberg_catalog_glue::GlueCatalogBuilder\">GlueCatalogBuilder</a>"]]],["iceberg_catalog_hms",[["impl
 CatalogBuilder for <a class=\"struct\" href=\"iceberg_catalog_h [...]
     if (window.register_implementors) {
         window.register_implementors(implementors);
     } else {
         window.pending_implementors = implementors;
     }
 })()
-//{"start":57,"fragment_lengths":[14,340,334,217,241,211]}
\ No newline at end of file
+//{"start":57,"fragment_lengths":[14,340,211,217,241,211]}
\ No newline at end of file

Reply via email to