You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@arrow.apache.org by gi...@apache.org on 2023/09/17 10:52:10 UTC

[arrow-rs] branch asf-site updated: deploy: 9cb4a75f183c6a8ae729de51e7480ee1ece9a662

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

github-bot pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/arrow-rs.git


The following commit(s) were added to refs/heads/asf-site by this push:
     new 37df1a1e8f deploy: 9cb4a75f183c6a8ae729de51e7480ee1ece9a662
37df1a1e8f is described below

commit 37df1a1e8fa4ec7c291b83503a1392334c349815
Author: tustvold <tu...@users.noreply.github.com>
AuthorDate: Sun Sep 17 10:52:04 2023 +0000

    deploy: 9cb4a75f183c6a8ae729de51e7480ee1ece9a662
---
 .../auth_basic_proto/fn.authenticate.html          |    2 +-
 .../auth_basic_proto/type.Client.html              |    2 +-
 .../fn.consume_flight_location.html                |    4 +-
 .../fn.receive_batch_flight_data.html              |    4 +-
 .../fn.receive_schema_flight_data.html             |    2 +-
 .../integration_test/fn.send_batch.html            |    2 +-
 .../integration_test/fn.upload_data.html           |    4 +-
 .../integration_test/fn.verify_data.html           |    4 +-
 .../integration_test/type.Client.html              |    2 +-
 .../struct.AuthBasicProtoScenarioImpl.html         |   54 +-
 .../flight_server_scenarios/fn.endpoint.html       |    2 +-
 .../integration_test/fn.save_uploaded_chunks.html  |    4 +-
 .../integration_test/fn.send_app_metadata.html     |    2 +-
 .../integration_test/struct.FlightServiceImpl.html |   54 +-
 .../middleware/struct.MiddlewareScenarioImpl.html  |   54 +-
 arrow_row/all.html                                 |    2 +-
 .../dictionary/fn.compute_dictionary_mapping.html  |    5 -
 arrow_row/dictionary/fn.decode_binary.html         |    4 -
 arrow_row/dictionary/fn.decode_bool.html           |    2 -
 arrow_row/dictionary/fn.decode_dictionary.html     |    9 -
 arrow_row/dictionary/fn.decode_fixed.html          |    7 -
 arrow_row/dictionary/fn.decode_primitive.html      |    6 -
 arrow_row/dictionary/fn.decode_string.html         |    4 -
 arrow_row/dictionary/fn.encode_dictionary.html     |   12 -
 .../dictionary/fn.encode_dictionary_values.html    |    8 -
 arrow_row/dictionary/index.html                    |    1 -
 .../dictionary/macro.decode_primitive_helper!.html |   11 -
 .../dictionary/macro.decode_primitive_helper.html  |    3 -
 arrow_row/dictionary/sidebar-items.js              |    1 -
 arrow_row/enum.Codec.html                          |   16 +-
 arrow_row/enum.Encoder.html                        |   10 +-
 arrow_row/fn.decode_column.html                    |    2 +-
 arrow_row/fn.encode_column.html                    |    2 +-
 arrow_row/fn.encode_dictionary_values.html         |    8 +
 arrow_row/fn.null_sentinel.html                    |    2 +-
 arrow_row/fn.row_lengths.html                      |    2 +-
 arrow_row/index.html                               |    8 +-
 arrow_row/interner/index.html                      |    2 -
 arrow_row/interner/sidebar-items.js                |    1 -
 arrow_row/interner/struct.Bucket.html              |   58 --
 arrow_row/interner/struct.InternBuffer.html        |   23 -
 arrow_row/interner/struct.Interned.html            |   21 -
 .../interner/struct.OrderPreservingInterner.html   |   35 -
 arrow_row/interner/struct.Slot.html                |   21 -
 arrow_row/macro.decode_dictionary_helper!.html     |   11 -
 arrow_row/macro.decode_dictionary_helper.html      |    3 -
 arrow_row/macro.decode_primitive_helper.html       |    2 +-
 arrow_row/sidebar-items.js                         |    2 +-
 arrow_row/struct.OwnedRow.html                     |   14 +-
 arrow_row/struct.Row.html                          |   14 +-
 arrow_row/struct.RowConfig.html                    |    4 +-
 arrow_row/struct.RowConverter.html                 |   73 +-
 arrow_row/struct.RowParser.html                    |    6 +-
 arrow_row/struct.Rows.html                         |   16 +-
 arrow_row/struct.RowsIter.html                     |    6 +-
 arrow_row/struct.SortField.html                    |   23 +-
 .../flight_service_server/trait.FlightService.js   |    2 +-
 implementors/core/clone/trait.Clone.js             |    2 +-
 implementors/core/cmp/trait.Eq.js                  |    2 +-
 implementors/core/cmp/trait.PartialEq.js           |    2 +-
 implementors/core/default/trait.Default.js         |    1 -
 implementors/core/fmt/trait.Debug.js               |    2 +-
 implementors/core/hash/trait.Hash.js               |    2 +-
 implementors/core/marker/trait.Copy.js             |    2 +-
 implementors/core/marker/trait.Freeze.js           |    2 +-
 implementors/core/marker/trait.Send.js             |    2 +-
 implementors/core/marker/trait.StructuralEq.js     |    2 +-
 .../core/marker/trait.StructuralPartialEq.js       |    2 +-
 implementors/core/marker/trait.Sync.js             |    2 +-
 implementors/core/marker/trait.Unpin.js            |    2 +-
 implementors/core/ops/index/trait.Index.js         |    1 -
 .../core/panic/unwind_safe/trait.RefUnwindSafe.js  |    2 +-
 .../core/panic/unwind_safe/trait.UnwindSafe.js     |    2 +-
 search-index.js                                    |    2 +-
 src-files.js                                       |    2 +-
 src/arrow_flight/sql/metadata/mod.rs.html          |    2 +-
 src/arrow_row/dictionary.rs.html                   |  593 -----------
 src/arrow_row/interner.rs.html                     | 1047 --------------------
 src/arrow_row/lib.rs.html                          |  598 +++--------
 79 files changed, 318 insertions(+), 2614 deletions(-)

diff --git a/arrow_integration_testing/flight_client_scenarios/auth_basic_proto/fn.authenticate.html b/arrow_integration_testing/flight_client_scenarios/auth_basic_proto/fn.authenticate.html
index 247ecd22e9..9bd66a0bf4 100644
--- a/arrow_integration_testing/flight_client_scenarios/auth_basic_proto/fn.authenticate.html
+++ b/arrow_integration_testing/flight_client_scenarios/auth_basic_proto/fn.authenticate.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `authenticate` fn in crate `arrow_integration_testing`."><title>authenticate in arrow_integration_testing::flight_client_scenarios::auth_basic_proto - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/Source [...]
-    client: &amp;mut FlightServiceClient&lt;<a class="struct" href="https://docs.rs/tonic/0.9.2/tonic/transport/channel/struct.Channel.html" title="struct tonic::transport::channel::Channel">Channel</a>&gt;,
+    client: &amp;mut <a class="struct" href="../../../arrow_flight/gen/flight_service_client/struct.FlightServiceClient.html" title="struct arrow_flight::gen::flight_service_client::FlightServiceClient">FlightServiceClient</a>&lt;<a class="struct" href="https://docs.rs/tonic/0.9.2/tonic/transport/channel/struct.Channel.html" title="struct tonic::transport::channel::Channel">Channel</a>&gt;,
     username: &amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>,
     password: &amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>
 ) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</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/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/nightly/core/error/trait.E [...]
\ No newline at end of file
diff --git a/arrow_integration_testing/flight_client_scenarios/auth_basic_proto/type.Client.html b/arrow_integration_testing/flight_client_scenarios/auth_basic_proto/type.Client.html
index 3893120ef2..de8fca0c86 100644
--- a/arrow_integration_testing/flight_client_scenarios/auth_basic_proto/type.Client.html
+++ b/arrow_integration_testing/flight_client_scenarios/auth_basic_proto/type.Client.html
@@ -1,3 +1,3 @@
-<!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="API documentation for the Rust `Client` type in crate `arrow_integration_testing`."><title>Client in arrow_integration_testing::flight_client_scenarios::auth_basic_proto - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Reg [...]
+<!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="API documentation for the Rust `Client` type in crate `arrow_integration_testing`."><title>Client in arrow_integration_testing::flight_client_scenarios::auth_basic_proto - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Reg [...]
     inner: <a class="struct" href="https://docs.rs/tonic/0.9.2/tonic/client/grpc/struct.Grpc.html" title="struct tonic::client::grpc::Grpc">Grpc</a>&lt;<a class="struct" href="https://docs.rs/tonic/0.9.2/tonic/transport/channel/struct.Channel.html" title="struct tonic::transport::channel::Channel">Channel</a>&gt;,
 }</code></pre><h2 id="fields" class="fields small-section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.inner" class="structfield small-section-header"><a href="#structfield.inner" class="anchor field">§</a><code>inner: <a class="struct" href="https://docs.rs/tonic/0.9.2/tonic/client/grpc/struct.Grpc.html" title="struct tonic::client::grpc::Grpc">Grpc</a>&lt;<a class="struct" href="https://docs.rs/tonic/0.9.2/tonic/transport/channel/struct.Channel.html" t [...]
\ No newline at end of file
diff --git a/arrow_integration_testing/flight_client_scenarios/integration_test/fn.consume_flight_location.html b/arrow_integration_testing/flight_client_scenarios/integration_test/fn.consume_flight_location.html
index b295d84508..44a3c8f081 100644
--- a/arrow_integration_testing/flight_client_scenarios/integration_test/fn.consume_flight_location.html
+++ b/arrow_integration_testing/flight_client_scenarios/integration_test/fn.consume_flight_location.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `consume_flight_location` fn in crate `arrow_integration_testing`."><title>consume_flight_location in arrow_integration_testing::flight_client_scenarios::integration_test - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../ [...]
-    location: Location,
-    ticket: Ticket,
+    location: <a class="struct" href="../../../arrow_flight/gen/struct.Location.html" title="struct arrow_flight::gen::Location">Location</a>,
+    ticket: <a class="struct" href="../../../arrow_flight/gen/struct.Ticket.html" title="struct arrow_flight::gen::Ticket">Ticket</a>,
     expected_data: &amp;[<a class="struct" href="../../../arrow_array/record_batch/struct.RecordBatch.html" title="struct arrow_array::record_batch::RecordBatch">RecordBatch</a>]
 ) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <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/error/trait.Error.html" title="trait core::error::Error">Er [...]
\ No newline at end of file
diff --git a/arrow_integration_testing/flight_client_scenarios/integration_test/fn.receive_batch_flight_data.html b/arrow_integration_testing/flight_client_scenarios/integration_test/fn.receive_batch_flight_data.html
index f93601daec..a4a0476da6 100644
--- a/arrow_integration_testing/flight_client_scenarios/integration_test/fn.receive_batch_flight_data.html
+++ b/arrow_integration_testing/flight_client_scenarios/integration_test/fn.receive_batch_flight_data.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `receive_batch_flight_data` fn in crate `arrow_integration_testing`."><title>receive_batch_flight_data in arrow_integration_testing::flight_client_scenarios::integration_test - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href=".. [...]
-    resp: &amp;mut <a class="struct" href="https://docs.rs/tonic/0.9.2/tonic/codec/decode/struct.Streaming.html" title="struct tonic::codec::decode::Streaming">Streaming</a>&lt;FlightData&gt;,
+    resp: &amp;mut <a class="struct" href="https://docs.rs/tonic/0.9.2/tonic/codec/decode/struct.Streaming.html" title="struct tonic::codec::decode::Streaming">Streaming</a>&lt;<a class="struct" href="../../../arrow_flight/gen/struct.FlightData.html" title="struct arrow_flight::gen::FlightData">FlightData</a>&gt;,
     schema: <a class="type" href="../../../arrow_schema/schema/type.SchemaRef.html" title="type arrow_schema::schema::SchemaRef">SchemaRef</a>,
     dictionaries_by_id: &amp;mut <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="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.i64.html">i64</a>, <a class="type" href="../../../arrow_array/array/type.ArrayRef.html" title="type arrow_array::array::ArrayRef">ArrayRef</a>&gt;
-) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;FlightData&gt;</code></pre></section></div></main></body></html>
\ No newline at end of file
+) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="../../../arrow_flight/gen/struct.FlightData.html" title="struct arrow_flight::gen::FlightData">FlightData</a>&gt;</code></pre></section></div></main></body></html>
\ No newline at end of file
diff --git a/arrow_integration_testing/flight_client_scenarios/integration_test/fn.receive_schema_flight_data.html b/arrow_integration_testing/flight_client_scenarios/integration_test/fn.receive_schema_flight_data.html
index 1b606fac55..0534590ed5 100644
--- a/arrow_integration_testing/flight_client_scenarios/integration_test/fn.receive_schema_flight_data.html
+++ b/arrow_integration_testing/flight_client_scenarios/integration_test/fn.receive_schema_flight_data.html
@@ -1,3 +1,3 @@
 <!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="API documentation for the Rust `receive_schema_flight_data` fn in crate `arrow_integration_testing`."><title>receive_schema_flight_data in arrow_integration_testing::flight_client_scenarios::integration_test - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href=" [...]
-    resp: &amp;mut <a class="struct" href="https://docs.rs/tonic/0.9.2/tonic/codec/decode/struct.Streaming.html" title="struct tonic::codec::decode::Streaming">Streaming</a>&lt;FlightData&gt;
+    resp: &amp;mut <a class="struct" href="https://docs.rs/tonic/0.9.2/tonic/codec/decode/struct.Streaming.html" title="struct tonic::codec::decode::Streaming">Streaming</a>&lt;<a class="struct" href="../../../arrow_flight/gen/struct.FlightData.html" title="struct arrow_flight::gen::FlightData">FlightData</a>&gt;
 ) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="../../../arrow_schema/schema/struct.Schema.html" title="struct arrow_schema::schema::Schema">Schema</a>&gt;</code></pre></section></div></main></body></html>
\ No newline at end of file
diff --git a/arrow_integration_testing/flight_client_scenarios/integration_test/fn.send_batch.html b/arrow_integration_testing/flight_client_scenarios/integration_test/fn.send_batch.html
index 0701354ead..36ef09e9c2 100644
--- a/arrow_integration_testing/flight_client_scenarios/integration_test/fn.send_batch.html
+++ b/arrow_integration_testing/flight_client_scenarios/integration_test/fn.send_batch.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `send_batch` fn in crate `arrow_integration_testing`."><title>send_batch in arrow_integration_testing::flight_client_scenarios::integration_test - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSeri [...]
-    upload_tx: &amp;mut Sender&lt;FlightData&gt;,
+    upload_tx: &amp;mut Sender&lt;<a class="struct" href="../../../arrow_flight/gen/struct.FlightData.html" title="struct arrow_flight::gen::FlightData">FlightData</a>&gt;,
     metadata: &amp;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>],
     batch: &amp;<a class="struct" href="../../../arrow_array/record_batch/struct.RecordBatch.html" title="struct arrow_array::record_batch::RecordBatch">RecordBatch</a>,
     options: &amp;<a class="struct" href="../../../arrow_ipc/writer/struct.IpcWriteOptions.html" title="struct arrow_ipc::writer::IpcWriteOptions">IpcWriteOptions</a>
diff --git a/arrow_integration_testing/flight_client_scenarios/integration_test/fn.upload_data.html b/arrow_integration_testing/flight_client_scenarios/integration_test/fn.upload_data.html
index ee950fd7dd..bc8a94b977 100644
--- a/arrow_integration_testing/flight_client_scenarios/integration_test/fn.upload_data.html
+++ b/arrow_integration_testing/flight_client_scenarios/integration_test/fn.upload_data.html
@@ -1,6 +1,6 @@
 <!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="API documentation for the Rust `upload_data` fn in crate `arrow_integration_testing`."><title>upload_data in arrow_integration_testing::flight_client_scenarios::integration_test - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSe [...]
-    client: FlightServiceClient&lt;<a class="struct" href="https://docs.rs/tonic/0.9.2/tonic/transport/channel/struct.Channel.html" title="struct tonic::transport::channel::Channel">Channel</a>&gt;,
+    client: <a class="struct" href="../../../arrow_flight/gen/flight_service_client/struct.FlightServiceClient.html" title="struct arrow_flight::gen::flight_service_client::FlightServiceClient">FlightServiceClient</a>&lt;<a class="struct" href="https://docs.rs/tonic/0.9.2/tonic/transport/channel/struct.Channel.html" title="struct tonic::transport::channel::Channel">Channel</a>&gt;,
     schema: <a class="type" href="../../../arrow_schema/schema/type.SchemaRef.html" title="type arrow_schema::schema::SchemaRef">SchemaRef</a>,
-    descriptor: FlightDescriptor,
+    descriptor: <a class="struct" href="../../../arrow_flight/gen/struct.FlightDescriptor.html" title="struct arrow_flight::gen::FlightDescriptor">FlightDescriptor</a>,
     original_data: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="struct" href="../../../arrow_array/record_batch/struct.RecordBatch.html" title="struct arrow_array::record_batch::RecordBatch">RecordBatch</a>&gt;
 ) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <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/error/trait.Error.html" title="trait core::error::Error">Er [...]
\ No newline at end of file
diff --git a/arrow_integration_testing/flight_client_scenarios/integration_test/fn.verify_data.html b/arrow_integration_testing/flight_client_scenarios/integration_test/fn.verify_data.html
index 75cbb2dc72..ab32c6001b 100644
--- a/arrow_integration_testing/flight_client_scenarios/integration_test/fn.verify_data.html
+++ b/arrow_integration_testing/flight_client_scenarios/integration_test/fn.verify_data.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `verify_data` fn in crate `arrow_integration_testing`."><title>verify_data in arrow_integration_testing::flight_client_scenarios::integration_test - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSe [...]
-    client: FlightServiceClient&lt;<a class="struct" href="https://docs.rs/tonic/0.9.2/tonic/transport/channel/struct.Channel.html" title="struct tonic::transport::channel::Channel">Channel</a>&gt;,
-    descriptor: FlightDescriptor,
+    client: <a class="struct" href="../../../arrow_flight/gen/flight_service_client/struct.FlightServiceClient.html" title="struct arrow_flight::gen::flight_service_client::FlightServiceClient">FlightServiceClient</a>&lt;<a class="struct" href="https://docs.rs/tonic/0.9.2/tonic/transport/channel/struct.Channel.html" title="struct tonic::transport::channel::Channel">Channel</a>&gt;,
+    descriptor: <a class="struct" href="../../../arrow_flight/gen/struct.FlightDescriptor.html" title="struct arrow_flight::gen::FlightDescriptor">FlightDescriptor</a>,
     expected_data: &amp;[<a class="struct" href="../../../arrow_array/record_batch/struct.RecordBatch.html" title="struct arrow_array::record_batch::RecordBatch">RecordBatch</a>]
 ) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <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/error/trait.Error.html" title="trait core::error::Error">Er [...]
\ No newline at end of file
diff --git a/arrow_integration_testing/flight_client_scenarios/integration_test/type.Client.html b/arrow_integration_testing/flight_client_scenarios/integration_test/type.Client.html
index be5f5fa42e..b2bba4de24 100644
--- a/arrow_integration_testing/flight_client_scenarios/integration_test/type.Client.html
+++ b/arrow_integration_testing/flight_client_scenarios/integration_test/type.Client.html
@@ -1,3 +1,3 @@
-<!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="API documentation for the Rust `Client` type in crate `arrow_integration_testing`."><title>Client in arrow_integration_testing::flight_client_scenarios::integration_test - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Reg [...]
+<!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="API documentation for the Rust `Client` type in crate `arrow_integration_testing`."><title>Client in arrow_integration_testing::flight_client_scenarios::integration_test - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Reg [...]
     inner: <a class="struct" href="https://docs.rs/tonic/0.9.2/tonic/client/grpc/struct.Grpc.html" title="struct tonic::client::grpc::Grpc">Grpc</a>&lt;<a class="struct" href="https://docs.rs/tonic/0.9.2/tonic/transport/channel/struct.Channel.html" title="struct tonic::transport::channel::Channel">Channel</a>&gt;,
 }</code></pre><h2 id="fields" class="fields small-section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.inner" class="structfield small-section-header"><a href="#structfield.inner" class="anchor field">§</a><code>inner: <a class="struct" href="https://docs.rs/tonic/0.9.2/tonic/client/grpc/struct.Grpc.html" title="struct tonic::client::grpc::Grpc">Grpc</a>&lt;<a class="struct" href="https://docs.rs/tonic/0.9.2/tonic/transport/channel/struct.Channel.html" t [...]
\ No newline at end of file
diff --git a/arrow_integration_testing/flight_server_scenarios/auth_basic_proto/struct.AuthBasicProtoScenarioImpl.html b/arrow_integration_testing/flight_server_scenarios/auth_basic_proto/struct.AuthBasicProtoScenarioImpl.html
index 4c95cd3b5e..e9b0d702f5 100644
--- a/arrow_integration_testing/flight_server_scenarios/auth_basic_proto/struct.AuthBasicProtoScenarioImpl.html
+++ b/arrow_integration_testing/flight_server_scenarios/auth_basic_proto/struct.AuthBasicProtoScenarioImpl.html
@@ -8,44 +8,44 @@
 ) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="struct" href="struct.GrpcServerCallContext.html" title="struct arrow_integration_testing::flight_server_scenarios::auth_basic_proto::GrpcServerCallContext">GrpcServerCallContext</a>, <a class="struct" href="https://docs.rs/tonic/0.9.2/tonic/status/struct.Status.html" title="struct tonic::status::Status">Status</a>&gt;</h4></section><secti [...]
     &amp;self,
     token: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>&gt;
-) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="struct" href="struct.GrpcServerCallContext.html" title="struct arrow_integration_testing::flight_server_scenarios::auth_basic_proto::GrpcServerCallContext">GrpcServerCallContext</a>, <a class="struct" href="https://docs.rs/tonic/0.9.2/tonic/status/struct.Status.html" title="struct tonic::status::Status">Status</a>&gt;</h4></section></div> [...]
+) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="struct" href="struct.GrpcServerCallContext.html" title="struct arrow_integration_testing::flight_server_scenarios::auth_basic_proto::GrpcServerCallContext">GrpcServerCallContext</a>, <a class="struct" href="https://docs.rs/tonic/0.9.2/tonic/status/struct.Status.html" title="struct tonic::status::Status">Status</a>&gt;</h4></section></div> [...]
     &amp;'life0 self,
-    request: <a class="struct" href="https://docs.rs/tonic/0.9.2/tonic/request/struct.Request.html" title="struct tonic::request::Request">Request</a>&lt;FlightDescriptor&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="enum" href="https://doc.rust-lang.org/nightly/core/re [...]
+    request: <a class="struct" href="https://docs.rs/tonic/0.9.2/tonic/request/struct.Request.html" title="struct tonic::request::Request">Request</a>&lt;<a class="struct" href="../../../arrow_flight/gen/struct.FlightDescriptor.html" title="struct arrow_flight::gen::FlightDescriptor">FlightDescriptor</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="enum" href="https://doc.rust-lang.org/nightly/core/re [...]
     Self: 'async_trait,
     'life0: 'async_trait,</span></h4></section></summary><div class='docblock'>For a given FlightDescriptor, get the Schema as described in Schema.fbs::Schema
 This is used when a consumer needs the Schema of flight stream. Similar to
 GetFlightInfo this interface may generate a new flight that was not previously
-available in ListFlights.</div></details><details class="toggle method-toggle" open><summary><section id="method.do_get" class="method trait-impl"><a class="src rightside" href="../../../src/arrow_integration_testing/flight_server_scenarios/auth_basic_proto.rs.html#118-124">source</a><a href="#method.do_get" class="anchor">§</a><h4 class="code-header">fn <a class="fn">do_get</a>&lt;'life0, 'async_trait&gt;(
+available in ListFlights.</div></details><details class="toggle method-toggle" open><summary><section id="method.do_get" class="method trait-impl"><a class="src rightside" href="../../../src/arrow_integration_testing/flight_server_scenarios/auth_basic_proto.rs.html#118-124">source</a><a href="#method.do_get" class="anchor">§</a><h4 class="code-header">fn <a href="../../../arrow_flight/gen/flight_service_server/trait.FlightService.html#tymethod.do_get" class="fn">do_get</a>&lt;'life0, 'as [...]
     &amp;'life0 self,
-    request: <a class="struct" href="https://docs.rs/tonic/0.9.2/tonic/request/struct.Request.html" title="struct tonic::request::Request">Request</a>&lt;Ticket&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="enum" href="https://doc.rust-lang.org/nightly/core/re [...]
+    request: <a class="struct" href="https://docs.rs/tonic/0.9.2/tonic/request/struct.Request.html" title="struct tonic::request::Request">Request</a>&lt;<a class="struct" href="../../../arrow_flight/gen/struct.Ticket.html" title="struct arrow_flight::gen::Ticket">Ticket</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="enum" href="https://doc.rust-lang.org/nightly/core/re [...]
     Self: 'async_trait,
     'life0: 'async_trait,</span></h4></section></summary><div class='docblock'>Retrieve a single stream associated with a particular descriptor
 associated with the referenced ticket. A Flight can be composed of one or
 more streams where each stream can be retrieved using a separate opaque
-ticket that the flight service uses for managing a collection of streams.</div></details><details class="toggle method-toggle" open><summary><section id="method.handshake" class="method trait-impl"><a class="src rightside" href="../../../src/arrow_integration_testing/flight_server_scenarios/auth_basic_proto.rs.html#126-173">source</a><a href="#method.handshake" class="anchor">§</a><h4 class="code-header">fn <a class="fn">handshake</a>&lt;'life0, 'async_trait&gt;(
+ticket that the flight service uses for managing a collection of streams.</div></details><details class="toggle method-toggle" open><summary><section id="method.handshake" class="method trait-impl"><a class="src rightside" href="../../../src/arrow_integration_testing/flight_server_scenarios/auth_basic_proto.rs.html#126-173">source</a><a href="#method.handshake" class="anchor">§</a><h4 class="code-header">fn <a href="../../../arrow_flight/gen/flight_service_server/trait.FlightService.html [...]
     &amp;'life0 self,
-    request: <a class="struct" href="https://docs.rs/tonic/0.9.2/tonic/request/struct.Request.html" title="struct tonic::request::Request">Request</a>&lt;<a class="struct" href="https://docs.rs/tonic/0.9.2/tonic/codec/decode/struct.Streaming.html" title="struct tonic::codec::decode::Streaming">Streaming</a>&lt;HandshakeRequest&gt;&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="enum" href="https://doc.rust-lang.org/nightly/core/re [...]
+    request: <a class="struct" href="https://docs.rs/tonic/0.9.2/tonic/request/struct.Request.html" title="struct tonic::request::Request">Request</a>&lt;<a class="struct" href="https://docs.rs/tonic/0.9.2/tonic/codec/decode/struct.Streaming.html" title="struct tonic::codec::decode::Streaming">Streaming</a>&lt;<a class="struct" href="../../../arrow_flight/gen/struct.HandshakeRequest.html" title="struct arrow_flight::gen::HandshakeRequest">HandshakeRequest</a>&gt;&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="enum" href="https://doc.rust-lang.org/nightly/core/re [...]
     Self: 'async_trait,
     'life0: 'async_trait,</span></h4></section></summary><div class='docblock'>Handshake between client and server. Depending on the server, the
 handshake may be required to determine the token that should be used for
 future operations. Both request and response are streams to allow multiple
-round-trips depending on auth mechanism.</div></details><details class="toggle method-toggle" open><summary><section id="method.list_flights" class="method trait-impl"><a class="src rightside" href="../../../src/arrow_integration_testing/flight_server_scenarios/auth_basic_proto.rs.html#175-181">source</a><a href="#method.list_flights" class="anchor">§</a><h4 class="code-header">fn <a class="fn">list_flights</a>&lt;'life0, 'async_trait&gt;(
+round-trips depending on auth mechanism.</div></details><details class="toggle method-toggle" open><summary><section id="method.list_flights" class="method trait-impl"><a class="src rightside" href="../../../src/arrow_integration_testing/flight_server_scenarios/auth_basic_proto.rs.html#175-181">source</a><a href="#method.list_flights" class="anchor">§</a><h4 class="code-header">fn <a href="../../../arrow_flight/gen/flight_service_server/trait.FlightService.html#tymethod.list_flights" cla [...]
     &amp;'life0 self,
-    request: <a class="struct" href="https://docs.rs/tonic/0.9.2/tonic/request/struct.Request.html" title="struct tonic::request::Request">Request</a>&lt;Criteria&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="enum" href="https://doc.rust-lang.org/nightly/core/re [...]
+    request: <a class="struct" href="https://docs.rs/tonic/0.9.2/tonic/request/struct.Request.html" title="struct tonic::request::Request">Request</a>&lt;<a class="struct" href="../../../arrow_flight/gen/struct.Criteria.html" title="struct arrow_flight::gen::Criteria">Criteria</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="enum" href="https://doc.rust-lang.org/nightly/core/re [...]
     Self: 'async_trait,
     'life0: 'async_trait,</span></h4></section></summary><div class='docblock'>Get a list of available streams given a particular criteria. Most flight
 services will expose one or more streams that are readily available for
 retrieval. This api allows listing the streams available for
 consumption. A user can also provide a criteria. The criteria can limit
 the subset of streams that can be listed via this interface. Each flight
-service allows its own definition of how to consume criteria.</div></details><details class="toggle method-toggle" open><summary><section id="method.get_flight_info" class="method trait-impl"><a class="src rightside" href="../../../src/arrow_integration_testing/flight_server_scenarios/auth_basic_proto.rs.html#183-189">source</a><a href="#method.get_flight_info" class="anchor">§</a><h4 class="code-header">fn <a class="fn">get_flight_info</a>&lt;'life0, 'async_trait&gt;(
+service allows its own definition of how to consume criteria.</div></details><details class="toggle method-toggle" open><summary><section id="method.get_flight_info" class="method trait-impl"><a class="src rightside" href="../../../src/arrow_integration_testing/flight_server_scenarios/auth_basic_proto.rs.html#183-189">source</a><a href="#method.get_flight_info" class="anchor">§</a><h4 class="code-header">fn <a href="../../../arrow_flight/gen/flight_service_server/trait.FlightService.html [...]
     &amp;'life0 self,
-    request: <a class="struct" href="https://docs.rs/tonic/0.9.2/tonic/request/struct.Request.html" title="struct tonic::request::Request">Request</a>&lt;FlightDescriptor&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="enum" href="https://doc.rust-lang.org/nightly/core/re [...]
+    request: <a class="struct" href="https://docs.rs/tonic/0.9.2/tonic/request/struct.Request.html" title="struct tonic::request::Request">Request</a>&lt;<a class="struct" href="../../../arrow_flight/gen/struct.FlightDescriptor.html" title="struct arrow_flight::gen::FlightDescriptor">FlightDescriptor</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="enum" href="https://doc.rust-lang.org/nightly/core/re [...]
     Self: 'async_trait,
     'life0: 'async_trait,</span></h4></section></summary><div class='docblock'>For a given FlightDescriptor, get information about how the flight can be
 consumed. This is a useful interface if the consumer of the interface
@@ -56,37 +56,37 @@ includes a SQL statement or a Pickled Python operation that will be
 executed. In those cases, the descriptor will not be previously available
 within the list of available streams provided by ListFlights but will be
 available for consumption for the duration defined by the specific flight
-service.</div></details><details class="toggle method-toggle" open><summary><section id="method.do_put" class="method trait-impl"><a class="src rightside" href="../../../src/arrow_integration_testing/flight_server_scenarios/auth_basic_proto.rs.html#191-198">source</a><a href="#method.do_put" class="anchor">§</a><h4 class="code-header">fn <a class="fn">do_put</a>&lt;'life0, 'async_trait&gt;(
+service.</div></details><details class="toggle method-toggle" open><summary><section id="method.do_put" class="method trait-impl"><a class="src rightside" href="../../../src/arrow_integration_testing/flight_server_scenarios/auth_basic_proto.rs.html#191-198">source</a><a href="#method.do_put" class="anchor">§</a><h4 class="code-header">fn <a href="../../../arrow_flight/gen/flight_service_server/trait.FlightService.html#tymethod.do_put" class="fn">do_put</a>&lt;'life0, 'async_trait&gt;(
     &amp;'life0 self,
-    request: <a class="struct" href="https://docs.rs/tonic/0.9.2/tonic/request/struct.Request.html" title="struct tonic::request::Request">Request</a>&lt;<a class="struct" href="https://docs.rs/tonic/0.9.2/tonic/codec/decode/struct.Streaming.html" title="struct tonic::codec::decode::Streaming">Streaming</a>&lt;FlightData&gt;&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="enum" href="https://doc.rust-lang.org/nightly/core/re [...]
+    request: <a class="struct" href="https://docs.rs/tonic/0.9.2/tonic/request/struct.Request.html" title="struct tonic::request::Request">Request</a>&lt;<a class="struct" href="https://docs.rs/tonic/0.9.2/tonic/codec/decode/struct.Streaming.html" title="struct tonic::codec::decode::Streaming">Streaming</a>&lt;<a class="struct" href="../../../arrow_flight/gen/struct.FlightData.html" title="struct arrow_flight::gen::FlightData">FlightData</a>&gt;&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="enum" href="https://doc.rust-lang.org/nightly/core/re [...]
     Self: 'async_trait,
     'life0: 'async_trait,</span></h4></section></summary><div class='docblock'>Push a stream to the flight service associated with a particular
 flight stream. This allows a client of a flight service to upload a stream
 of data. Depending on the particular flight service, a client consumer
 could be allowed to upload a single stream per descriptor or an unlimited
 number. In the latter, the service might implement a ‘seal’ action that
-can be applied to a descriptor once all streams are uploaded.</div></details><details class="toggle method-toggle" open><summary><section id="method.do_action" class="method trait-impl"><a class="src rightside" href="../../../src/arrow_integration_testing/flight_server_scenarios/auth_basic_proto.rs.html#200-210">source</a><a href="#method.do_action" class="anchor">§</a><h4 class="code-header">fn <a class="fn">do_action</a>&lt;'life0, 'async_trait&gt;(
+can be applied to a descriptor once all streams are uploaded.</div></details><details class="toggle method-toggle" open><summary><section id="method.do_action" class="method trait-impl"><a class="src rightside" href="../../../src/arrow_integration_testing/flight_server_scenarios/auth_basic_proto.rs.html#200-210">source</a><a href="#method.do_action" class="anchor">§</a><h4 class="code-header">fn <a href="../../../arrow_flight/gen/flight_service_server/trait.FlightService.html#tymethod.do [...]
     &amp;'life0 self,
-    request: <a class="struct" href="https://docs.rs/tonic/0.9.2/tonic/request/struct.Request.html" title="struct tonic::request::Request">Request</a>&lt;Action&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="enum" href="https://doc.rust-lang.org/nightly/core/re [...]
+    request: <a class="struct" href="https://docs.rs/tonic/0.9.2/tonic/request/struct.Request.html" title="struct tonic::request::Request">Request</a>&lt;<a class="struct" href="../../../arrow_flight/gen/struct.Action.html" title="struct arrow_flight::gen::Action">Action</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="enum" href="https://doc.rust-lang.org/nightly/core/re [...]
     Self: 'async_trait,
     'life0: 'async_trait,</span></h4></section></summary><div class='docblock'>Flight services can support an arbitrary number of simple actions in
 addition to the possible ListFlights, GetFlightInfo, DoGet, DoPut
 operations that are potentially available. DoAction allows a flight client
 to do a specific action against a flight service. An action includes
 opaque request and response objects that are specific to the type action
-being undertaken.</div></details><details class="toggle method-toggle" open><summary><section id="method.list_actions" class="method trait-impl"><a class="src rightside" href="../../../src/arrow_integration_testing/flight_server_scenarios/auth_basic_proto.rs.html#212-218">source</a><a href="#method.list_actions" class="anchor">§</a><h4 class="code-header">fn <a class="fn">list_actions</a>&lt;'life0, 'async_trait&gt;(
+being undertaken.</div></details><details class="toggle method-toggle" open><summary><section id="method.list_actions" class="method trait-impl"><a class="src rightside" href="../../../src/arrow_integration_testing/flight_server_scenarios/auth_basic_proto.rs.html#212-218">source</a><a href="#method.list_actions" class="anchor">§</a><h4 class="code-header">fn <a href="../../../arrow_flight/gen/flight_service_server/trait.FlightService.html#tymethod.list_actions" class="fn">list_actions</a [...]
     &amp;'life0 self,
-    request: <a class="struct" href="https://docs.rs/tonic/0.9.2/tonic/request/struct.Request.html" title="struct tonic::request::Request">Request</a>&lt;Empty&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="enum" href="https://doc.rust-lang.org/nightly/core/re [...]
+    request: <a class="struct" href="https://docs.rs/tonic/0.9.2/tonic/request/struct.Request.html" title="struct tonic::request::Request">Request</a>&lt;<a class="struct" href="../../../arrow_flight/gen/struct.Empty.html" title="struct arrow_flight::gen::Empty">Empty</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="enum" href="https://doc.rust-lang.org/nightly/core/re [...]
     Self: 'async_trait,
     'life0: 'async_trait,</span></h4></section></summary><div class='docblock'>A flight service exposes all of the available action types that it has
 along with descriptions. This allows different flight consumers to
-understand the capabilities of the flight service.</div></details><details class="toggle method-toggle" open><summary><section id="method.do_exchange" class="method trait-impl"><a class="src rightside" href="../../../src/arrow_integration_testing/flight_server_scenarios/auth_basic_proto.rs.html#220-227">source</a><a href="#method.do_exchange" class="anchor">§</a><h4 class="code-header">fn <a class="fn">do_exchange</a>&lt;'life0, 'async_trait&gt;(
+understand the capabilities of the flight service.</div></details><details class="toggle method-toggle" open><summary><section id="method.do_exchange" class="method trait-impl"><a class="src rightside" href="../../../src/arrow_integration_testing/flight_server_scenarios/auth_basic_proto.rs.html#220-227">source</a><a href="#method.do_exchange" class="anchor">§</a><h4 class="code-header">fn <a href="../../../arrow_flight/gen/flight_service_server/trait.FlightService.html#tymethod.do_exchan [...]
     &amp;'life0 self,
-    request: <a class="struct" href="https://docs.rs/tonic/0.9.2/tonic/request/struct.Request.html" title="struct tonic::request::Request">Request</a>&lt;<a class="struct" href="https://docs.rs/tonic/0.9.2/tonic/codec/decode/struct.Streaming.html" title="struct tonic::codec::decode::Streaming">Streaming</a>&lt;FlightData&gt;&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="enum" href="https://doc.rust-lang.org/nightly/core/re [...]
+    request: <a class="struct" href="https://docs.rs/tonic/0.9.2/tonic/request/struct.Request.html" title="struct tonic::request::Request">Request</a>&lt;<a class="struct" href="https://docs.rs/tonic/0.9.2/tonic/codec/decode/struct.Streaming.html" title="struct tonic::codec::decode::Streaming">Streaming</a>&lt;<a class="struct" href="../../../arrow_flight/gen/struct.FlightData.html" title="struct arrow_flight::gen::FlightData">FlightData</a>&gt;&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="enum" href="https://doc.rust-lang.org/nightly/core/re [...]
     Self: 'async_trait,
     'life0: 'async_trait,</span></h4></section></summary><div class='docblock'>Open a bidirectional data channel for a given descriptor. This
 allows clients to send and receive arbitrary Arrow data and
diff --git a/arrow_integration_testing/flight_server_scenarios/fn.endpoint.html b/arrow_integration_testing/flight_server_scenarios/fn.endpoint.html
index bffc19f835..adf38b3384 100644
--- a/arrow_integration_testing/flight_server_scenarios/fn.endpoint.html
+++ b/arrow_integration_testing/flight_server_scenarios/fn.endpoint.html
@@ -1 +1 @@
-<!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="API documentation for the Rust `endpoint` fn in crate `arrow_integration_testing`."><title>endpoint in arrow_integration_testing::flight_server_scenarios - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac52 [...]
\ No newline at end of file
+<!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="API documentation for the Rust `endpoint` fn in crate `arrow_integration_testing`."><title>endpoint in arrow_integration_testing::flight_server_scenarios - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac52 [...]
\ No newline at end of file
diff --git a/arrow_integration_testing/flight_server_scenarios/integration_test/fn.save_uploaded_chunks.html b/arrow_integration_testing/flight_server_scenarios/integration_test/fn.save_uploaded_chunks.html
index 7a6e4b92d8..34d1fa7a06 100644
--- a/arrow_integration_testing/flight_server_scenarios/integration_test/fn.save_uploaded_chunks.html
+++ b/arrow_integration_testing/flight_server_scenarios/integration_test/fn.save_uploaded_chunks.html
@@ -1,8 +1,8 @@
 <!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `save_uploaded_chunks` fn in crate `arrow_integration_testing`."><title>save_uploaded_chunks in arrow_integration_testing::flight_server_scenarios::integration_test - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../sta [...]
     uploaded_chunks: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/sync/struct.Arc.html" title="struct alloc::sync::Arc">Arc</a>&lt;Mutex&lt;<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 [...]
     schema_ref: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/sync/struct.Arc.html" title="struct alloc::sync::Arc">Arc</a>&lt;<a class="struct" href="../../../arrow_schema/schema/struct.Schema.html" title="struct arrow_schema::schema::Schema">Schema</a>&gt;,
-    input_stream: <a class="struct" href="https://docs.rs/tonic/0.9.2/tonic/codec/decode/struct.Streaming.html" title="struct tonic::codec::decode::Streaming">Streaming</a>&lt;FlightData&gt;,
-    response_tx: Sender&lt;<a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;PutResult, <a class="struct" href="https://docs.rs/tonic/0.9.2/tonic/status/struct.Status.html" title="struct tonic::status::Status">Status</a>&gt;&gt;,
+    input_stream: <a class="struct" href="https://docs.rs/tonic/0.9.2/tonic/codec/decode/struct.Streaming.html" title="struct tonic::codec::decode::Streaming">Streaming</a>&lt;<a class="struct" href="../../../arrow_flight/gen/struct.FlightData.html" title="struct arrow_flight::gen::FlightData">FlightData</a>&gt;,
+    response_tx: Sender&lt;<a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="struct" href="../../../arrow_flight/gen/struct.PutResult.html" title="struct arrow_flight::gen::PutResult">PutResult</a>, <a class="struct" href="https://docs.rs/tonic/0.9.2/tonic/status/struct.Status.html" title="struct tonic::status::Status">Status</a>&gt;&gt;,
     schema: <a class="struct" href="../../../arrow_schema/schema/struct.Schema.html" title="struct arrow_schema::schema::Schema">Schema</a>,
     key: <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="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="struct" href="https://docs.rs/tonic/0.9.2/tonic/status/struct.Status.html" title="struct tonic::status::Status">Status</a>&gt;</code></pre></section></div></main></body></html>
\ No newline at end of file
diff --git a/arrow_integration_testing/flight_server_scenarios/integration_test/fn.send_app_metadata.html b/arrow_integration_testing/flight_server_scenarios/integration_test/fn.send_app_metadata.html
index f7af179217..9b1f1f880a 100644
--- a/arrow_integration_testing/flight_server_scenarios/integration_test/fn.send_app_metadata.html
+++ b/arrow_integration_testing/flight_server_scenarios/integration_test/fn.send_app_metadata.html
@@ -1,4 +1,4 @@
 <!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `send_app_metadata` fn in crate `arrow_integration_testing`."><title>send_app_metadata in arrow_integration_testing::flight_server_scenarios::integration_test - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.fi [...]
-    tx: &amp;mut Sender&lt;<a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;PutResult, <a class="struct" href="https://docs.rs/tonic/0.9.2/tonic/status/struct.Status.html" title="struct tonic::status::Status">Status</a>&gt;&gt;,
+    tx: &amp;mut Sender&lt;<a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="struct" href="../../../arrow_flight/gen/struct.PutResult.html" title="struct arrow_flight::gen::PutResult">PutResult</a>, <a class="struct" href="https://docs.rs/tonic/0.9.2/tonic/status/struct.Status.html" title="struct tonic::status::Status">Status</a>&gt;&gt;,
     app_metadata: &amp;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>]
 ) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="struct" href="https://docs.rs/tonic/0.9.2/tonic/status/struct.Status.html" title="struct tonic::status::Status">Status</a>&gt;</code></pre></section></div></main></body></html>
\ No newline at end of file
diff --git a/arrow_integration_testing/flight_server_scenarios/integration_test/struct.FlightServiceImpl.html b/arrow_integration_testing/flight_server_scenarios/integration_test/struct.FlightServiceImpl.html
index 8285fb8d9f..42d5c977c4 100644
--- a/arrow_integration_testing/flight_server_scenarios/integration_test/struct.FlightServiceImpl.html
+++ b/arrow_integration_testing/flight_server_scenarios/integration_test/struct.FlightServiceImpl.html
@@ -1,44 +1,44 @@
 <!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="API documentation for the Rust `FlightServiceImpl` struct in crate `arrow_integration_testing`."><title>FlightServiceImpl in arrow_integration_testing::flight_server_scenarios::integration_test - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../stati [...]
     server_location: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>,
     uploaded_chunks: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/sync/struct.Arc.html" title="struct alloc::sync::Arc">Arc</a>&lt;Mutex&lt;<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 [...]
-}</code></pre><h2 id="fields" class="fields small-section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.server_location" class="structfield small-section-header"><a href="#structfield.server_location" class="anchor field">§</a><code>server_location: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></code></span><span id="structfield.uploaded_chunks" class="structfield [...]
+}</code></pre><h2 id="fields" class="fields small-section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.server_location" class="structfield small-section-header"><a href="#structfield.server_location" class="anchor field">§</a><code>server_location: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></code></span><span id="structfield.uploaded_chunks" class="structfield [...]
     &amp;'life0 self,
-    _request: <a class="struct" href="https://docs.rs/tonic/0.9.2/tonic/request/struct.Request.html" title="struct tonic::request::Request">Request</a>&lt;FlightDescriptor&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="enum" href="https://doc.rust-lang.org/nightly/core/re [...]
+    _request: <a class="struct" href="https://docs.rs/tonic/0.9.2/tonic/request/struct.Request.html" title="struct tonic::request::Request">Request</a>&lt;<a class="struct" href="../../../arrow_flight/gen/struct.FlightDescriptor.html" title="struct arrow_flight::gen::FlightDescriptor">FlightDescriptor</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="enum" href="https://doc.rust-lang.org/nightly/core/re [...]
     Self: 'async_trait,
     'life0: 'async_trait,</span></h4></section></summary><div class='docblock'>For a given FlightDescriptor, get the Schema as described in Schema.fbs::Schema
 This is used when a consumer needs the Schema of flight stream. Similar to
 GetFlightInfo this interface may generate a new flight that was not previously
-available in ListFlights.</div></details><details class="toggle method-toggle" open><summary><section id="method.do_get" class="method trait-impl"><a class="src rightside" href="../../../src/arrow_integration_testing/flight_server_scenarios/integration_test.rs.html#99-149">source</a><a href="#method.do_get" class="anchor">§</a><h4 class="code-header">fn <a class="fn">do_get</a>&lt;'life0, 'async_trait&gt;(
+available in ListFlights.</div></details><details class="toggle method-toggle" open><summary><section id="method.do_get" class="method trait-impl"><a class="src rightside" href="../../../src/arrow_integration_testing/flight_server_scenarios/integration_test.rs.html#99-149">source</a><a href="#method.do_get" class="anchor">§</a><h4 class="code-header">fn <a href="../../../arrow_flight/gen/flight_service_server/trait.FlightService.html#tymethod.do_get" class="fn">do_get</a>&lt;'life0, 'asy [...]
     &amp;'life0 self,
-    request: <a class="struct" href="https://docs.rs/tonic/0.9.2/tonic/request/struct.Request.html" title="struct tonic::request::Request">Request</a>&lt;Ticket&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="enum" href="https://doc.rust-lang.org/nightly/core/re [...]
+    request: <a class="struct" href="https://docs.rs/tonic/0.9.2/tonic/request/struct.Request.html" title="struct tonic::request::Request">Request</a>&lt;<a class="struct" href="../../../arrow_flight/gen/struct.Ticket.html" title="struct arrow_flight::gen::Ticket">Ticket</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="enum" href="https://doc.rust-lang.org/nightly/core/re [...]
     Self: 'async_trait,
     'life0: 'async_trait,</span></h4></section></summary><div class='docblock'>Retrieve a single stream associated with a particular descriptor
 associated with the referenced ticket. A Flight can be composed of one or
 more streams where each stream can be retrieved using a separate opaque
-ticket that the flight service uses for managing a collection of streams.</div></details><details class="toggle method-toggle" open><summary><section id="method.handshake" class="method trait-impl"><a class="src rightside" href="../../../src/arrow_integration_testing/flight_server_scenarios/integration_test.rs.html#151-156">source</a><a href="#method.handshake" class="anchor">§</a><h4 class="code-header">fn <a class="fn">handshake</a>&lt;'life0, 'async_trait&gt;(
+ticket that the flight service uses for managing a collection of streams.</div></details><details class="toggle method-toggle" open><summary><section id="method.handshake" class="method trait-impl"><a class="src rightside" href="../../../src/arrow_integration_testing/flight_server_scenarios/integration_test.rs.html#151-156">source</a><a href="#method.handshake" class="anchor">§</a><h4 class="code-header">fn <a href="../../../arrow_flight/gen/flight_service_server/trait.FlightService.html [...]
     &amp;'life0 self,
-    _request: <a class="struct" href="https://docs.rs/tonic/0.9.2/tonic/request/struct.Request.html" title="struct tonic::request::Request">Request</a>&lt;<a class="struct" href="https://docs.rs/tonic/0.9.2/tonic/codec/decode/struct.Streaming.html" title="struct tonic::codec::decode::Streaming">Streaming</a>&lt;HandshakeRequest&gt;&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="enum" href="https://doc.rust-lang.org/nightly/core/re [...]
+    _request: <a class="struct" href="https://docs.rs/tonic/0.9.2/tonic/request/struct.Request.html" title="struct tonic::request::Request">Request</a>&lt;<a class="struct" href="https://docs.rs/tonic/0.9.2/tonic/codec/decode/struct.Streaming.html" title="struct tonic::codec::decode::Streaming">Streaming</a>&lt;<a class="struct" href="../../../arrow_flight/gen/struct.HandshakeRequest.html" title="struct arrow_flight::gen::HandshakeRequest">HandshakeRequest</a>&gt;&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="enum" href="https://doc.rust-lang.org/nightly/core/re [...]
     Self: 'async_trait,
     'life0: 'async_trait,</span></h4></section></summary><div class='docblock'>Handshake between client and server. Depending on the server, the
 handshake may be required to determine the token that should be used for
 future operations. Both request and response are streams to allow multiple
-round-trips depending on auth mechanism.</div></details><details class="toggle method-toggle" open><summary><section id="method.list_flights" class="method trait-impl"><a class="src rightside" href="../../../src/arrow_integration_testing/flight_server_scenarios/integration_test.rs.html#158-163">source</a><a href="#method.list_flights" class="anchor">§</a><h4 class="code-header">fn <a class="fn">list_flights</a>&lt;'life0, 'async_trait&gt;(
+round-trips depending on auth mechanism.</div></details><details class="toggle method-toggle" open><summary><section id="method.list_flights" class="method trait-impl"><a class="src rightside" href="../../../src/arrow_integration_testing/flight_server_scenarios/integration_test.rs.html#158-163">source</a><a href="#method.list_flights" class="anchor">§</a><h4 class="code-header">fn <a href="../../../arrow_flight/gen/flight_service_server/trait.FlightService.html#tymethod.list_flights" cla [...]
     &amp;'life0 self,
-    _request: <a class="struct" href="https://docs.rs/tonic/0.9.2/tonic/request/struct.Request.html" title="struct tonic::request::Request">Request</a>&lt;Criteria&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="enum" href="https://doc.rust-lang.org/nightly/core/re [...]
+    _request: <a class="struct" href="https://docs.rs/tonic/0.9.2/tonic/request/struct.Request.html" title="struct tonic::request::Request">Request</a>&lt;<a class="struct" href="../../../arrow_flight/gen/struct.Criteria.html" title="struct arrow_flight::gen::Criteria">Criteria</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="enum" href="https://doc.rust-lang.org/nightly/core/re [...]
     Self: 'async_trait,
     'life0: 'async_trait,</span></h4></section></summary><div class='docblock'>Get a list of available streams given a particular criteria. Most flight
 services will expose one or more streams that are readily available for
 retrieval. This api allows listing the streams available for
 consumption. A user can also provide a criteria. The criteria can limit
 the subset of streams that can be listed via this interface. Each flight
-service allows its own definition of how to consume criteria.</div></details><details class="toggle method-toggle" open><summary><section id="method.get_flight_info" class="method trait-impl"><a class="src rightside" href="../../../src/arrow_integration_testing/flight_server_scenarios/integration_test.rs.html#165-210">source</a><a href="#method.get_flight_info" class="anchor">§</a><h4 class="code-header">fn <a class="fn">get_flight_info</a>&lt;'life0, 'async_trait&gt;(
+service allows its own definition of how to consume criteria.</div></details><details class="toggle method-toggle" open><summary><section id="method.get_flight_info" class="method trait-impl"><a class="src rightside" href="../../../src/arrow_integration_testing/flight_server_scenarios/integration_test.rs.html#165-210">source</a><a href="#method.get_flight_info" class="anchor">§</a><h4 class="code-header">fn <a href="../../../arrow_flight/gen/flight_service_server/trait.FlightService.html [...]
     &amp;'life0 self,
-    request: <a class="struct" href="https://docs.rs/tonic/0.9.2/tonic/request/struct.Request.html" title="struct tonic::request::Request">Request</a>&lt;FlightDescriptor&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="enum" href="https://doc.rust-lang.org/nightly/core/re [...]
+    request: <a class="struct" href="https://docs.rs/tonic/0.9.2/tonic/request/struct.Request.html" title="struct tonic::request::Request">Request</a>&lt;<a class="struct" href="../../../arrow_flight/gen/struct.FlightDescriptor.html" title="struct arrow_flight::gen::FlightDescriptor">FlightDescriptor</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="enum" href="https://doc.rust-lang.org/nightly/core/re [...]
     Self: 'async_trait,
     'life0: 'async_trait,</span></h4></section></summary><div class='docblock'>For a given FlightDescriptor, get information about how the flight can be
 consumed. This is a useful interface if the consumer of the interface
@@ -49,37 +49,37 @@ includes a SQL statement or a Pickled Python operation that will be
 executed. In those cases, the descriptor will not be previously available
 within the list of available streams provided by ListFlights but will be
 available for consumption for the duration defined by the specific flight
-service.</div></details><details class="toggle method-toggle" open><summary><section id="method.do_put" class="method trait-impl"><a class="src rightside" href="../../../src/arrow_integration_testing/flight_server_scenarios/integration_test.rs.html#212-259">source</a><a href="#method.do_put" class="anchor">§</a><h4 class="code-header">fn <a class="fn">do_put</a>&lt;'life0, 'async_trait&gt;(
+service.</div></details><details class="toggle method-toggle" open><summary><section id="method.do_put" class="method trait-impl"><a class="src rightside" href="../../../src/arrow_integration_testing/flight_server_scenarios/integration_test.rs.html#212-259">source</a><a href="#method.do_put" class="anchor">§</a><h4 class="code-header">fn <a href="../../../arrow_flight/gen/flight_service_server/trait.FlightService.html#tymethod.do_put" class="fn">do_put</a>&lt;'life0, 'async_trait&gt;(
     &amp;'life0 self,
-    request: <a class="struct" href="https://docs.rs/tonic/0.9.2/tonic/request/struct.Request.html" title="struct tonic::request::Request">Request</a>&lt;<a class="struct" href="https://docs.rs/tonic/0.9.2/tonic/codec/decode/struct.Streaming.html" title="struct tonic::codec::decode::Streaming">Streaming</a>&lt;FlightData&gt;&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="enum" href="https://doc.rust-lang.org/nightly/core/re [...]
+    request: <a class="struct" href="https://docs.rs/tonic/0.9.2/tonic/request/struct.Request.html" title="struct tonic::request::Request">Request</a>&lt;<a class="struct" href="https://docs.rs/tonic/0.9.2/tonic/codec/decode/struct.Streaming.html" title="struct tonic::codec::decode::Streaming">Streaming</a>&lt;<a class="struct" href="../../../arrow_flight/gen/struct.FlightData.html" title="struct arrow_flight::gen::FlightData">FlightData</a>&gt;&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="enum" href="https://doc.rust-lang.org/nightly/core/re [...]
     Self: 'async_trait,
     'life0: 'async_trait,</span></h4></section></summary><div class='docblock'>Push a stream to the flight service associated with a particular
 flight stream. This allows a client of a flight service to upload a stream
 of data. Depending on the particular flight service, a client consumer
 could be allowed to upload a single stream per descriptor or an unlimited
 number. In the latter, the service might implement a ‘seal’ action that
-can be applied to a descriptor once all streams are uploaded.</div></details><details class="toggle method-toggle" open><summary><section id="method.do_action" class="method trait-impl"><a class="src rightside" href="../../../src/arrow_integration_testing/flight_server_scenarios/integration_test.rs.html#261-266">source</a><a href="#method.do_action" class="anchor">§</a><h4 class="code-header">fn <a class="fn">do_action</a>&lt;'life0, 'async_trait&gt;(
+can be applied to a descriptor once all streams are uploaded.</div></details><details class="toggle method-toggle" open><summary><section id="method.do_action" class="method trait-impl"><a class="src rightside" href="../../../src/arrow_integration_testing/flight_server_scenarios/integration_test.rs.html#261-266">source</a><a href="#method.do_action" class="anchor">§</a><h4 class="code-header">fn <a href="../../../arrow_flight/gen/flight_service_server/trait.FlightService.html#tymethod.do [...]
     &amp;'life0 self,
-    _request: <a class="struct" href="https://docs.rs/tonic/0.9.2/tonic/request/struct.Request.html" title="struct tonic::request::Request">Request</a>&lt;Action&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="enum" href="https://doc.rust-lang.org/nightly/core/re [...]
+    _request: <a class="struct" href="https://docs.rs/tonic/0.9.2/tonic/request/struct.Request.html" title="struct tonic::request::Request">Request</a>&lt;<a class="struct" href="../../../arrow_flight/gen/struct.Action.html" title="struct arrow_flight::gen::Action">Action</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="enum" href="https://doc.rust-lang.org/nightly/core/re [...]
     Self: 'async_trait,
     'life0: 'async_trait,</span></h4></section></summary><div class='docblock'>Flight services can support an arbitrary number of simple actions in
 addition to the possible ListFlights, GetFlightInfo, DoGet, DoPut
 operations that are potentially available. DoAction allows a flight client
 to do a specific action against a flight service. An action includes
 opaque request and response objects that are specific to the type action
-being undertaken.</div></details><details class="toggle method-toggle" open><summary><section id="method.list_actions" class="method trait-impl"><a class="src rightside" href="../../../src/arrow_integration_testing/flight_server_scenarios/integration_test.rs.html#268-273">source</a><a href="#method.list_actions" class="anchor">§</a><h4 class="code-header">fn <a class="fn">list_actions</a>&lt;'life0, 'async_trait&gt;(
+being undertaken.</div></details><details class="toggle method-toggle" open><summary><section id="method.list_actions" class="method trait-impl"><a class="src rightside" href="../../../src/arrow_integration_testing/flight_server_scenarios/integration_test.rs.html#268-273">source</a><a href="#method.list_actions" class="anchor">§</a><h4 class="code-header">fn <a href="../../../arrow_flight/gen/flight_service_server/trait.FlightService.html#tymethod.list_actions" class="fn">list_actions</a [...]
     &amp;'life0 self,
-    _request: <a class="struct" href="https://docs.rs/tonic/0.9.2/tonic/request/struct.Request.html" title="struct tonic::request::Request">Request</a>&lt;Empty&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="enum" href="https://doc.rust-lang.org/nightly/core/re [...]
+    _request: <a class="struct" href="https://docs.rs/tonic/0.9.2/tonic/request/struct.Request.html" title="struct tonic::request::Request">Request</a>&lt;<a class="struct" href="../../../arrow_flight/gen/struct.Empty.html" title="struct arrow_flight::gen::Empty">Empty</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="enum" href="https://doc.rust-lang.org/nightly/core/re [...]
     Self: 'async_trait,
     'life0: 'async_trait,</span></h4></section></summary><div class='docblock'>A flight service exposes all of the available action types that it has
 along with descriptions. This allows different flight consumers to
-understand the capabilities of the flight service.</div></details><details class="toggle method-toggle" open><summary><section id="method.do_exchange" class="method trait-impl"><a class="src rightside" href="../../../src/arrow_integration_testing/flight_server_scenarios/integration_test.rs.html#275-280">source</a><a href="#method.do_exchange" class="anchor">§</a><h4 class="code-header">fn <a class="fn">do_exchange</a>&lt;'life0, 'async_trait&gt;(
+understand the capabilities of the flight service.</div></details><details class="toggle method-toggle" open><summary><section id="method.do_exchange" class="method trait-impl"><a class="src rightside" href="../../../src/arrow_integration_testing/flight_server_scenarios/integration_test.rs.html#275-280">source</a><a href="#method.do_exchange" class="anchor">§</a><h4 class="code-header">fn <a href="../../../arrow_flight/gen/flight_service_server/trait.FlightService.html#tymethod.do_exchan [...]
     &amp;'life0 self,
-    _request: <a class="struct" href="https://docs.rs/tonic/0.9.2/tonic/request/struct.Request.html" title="struct tonic::request::Request">Request</a>&lt;<a class="struct" href="https://docs.rs/tonic/0.9.2/tonic/codec/decode/struct.Streaming.html" title="struct tonic::codec::decode::Streaming">Streaming</a>&lt;FlightData&gt;&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="enum" href="https://doc.rust-lang.org/nightly/core/re [...]
+    _request: <a class="struct" href="https://docs.rs/tonic/0.9.2/tonic/request/struct.Request.html" title="struct tonic::request::Request">Request</a>&lt;<a class="struct" href="https://docs.rs/tonic/0.9.2/tonic/codec/decode/struct.Streaming.html" title="struct tonic::codec::decode::Streaming">Streaming</a>&lt;<a class="struct" href="../../../arrow_flight/gen/struct.FlightData.html" title="struct arrow_flight::gen::FlightData">FlightData</a>&gt;&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="enum" href="https://doc.rust-lang.org/nightly/core/re [...]
     Self: 'async_trait,
     'life0: 'async_trait,</span></h4></section></summary><div class='docblock'>Open a bidirectional data channel for a given descriptor. This
 allows clients to send and receive arbitrary Arrow data and
diff --git a/arrow_integration_testing/flight_server_scenarios/middleware/struct.MiddlewareScenarioImpl.html b/arrow_integration_testing/flight_server_scenarios/middleware/struct.MiddlewareScenarioImpl.html
index c2d4e61b8b..89a4d69a7f 100644
--- a/arrow_integration_testing/flight_server_scenarios/middleware/struct.MiddlewareScenarioImpl.html
+++ b/arrow_integration_testing/flight_server_scenarios/middleware/struct.MiddlewareScenarioImpl.html
@@ -1,41 +1,41 @@
-<!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="API documentation for the Rust `MiddlewareScenarioImpl` struct in crate `arrow_integration_testing`."><title>MiddlewareScenarioImpl in arrow_integration_testing::flight_server_scenarios::middleware - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../s [...]
+<!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="API documentation for the Rust `MiddlewareScenarioImpl` struct in crate `arrow_integration_testing`."><title>MiddlewareScenarioImpl in arrow_integration_testing::flight_server_scenarios::middleware - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../s [...]
     &amp;'life0 self,
-    _request: <a class="struct" href="https://docs.rs/tonic/0.9.2/tonic/request/struct.Request.html" title="struct tonic::request::Request">Request</a>&lt;FlightDescriptor&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="enum" href="https://doc.rust-lang.org/nightly/core/re [...]
+    _request: <a class="struct" href="https://docs.rs/tonic/0.9.2/tonic/request/struct.Request.html" title="struct tonic::request::Request">Request</a>&lt;<a class="struct" href="../../../arrow_flight/gen/struct.FlightDescriptor.html" title="struct arrow_flight::gen::FlightDescriptor">FlightDescriptor</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="enum" href="https://doc.rust-lang.org/nightly/core/re [...]
     Self: 'async_trait,
     'life0: 'async_trait,</span></h4></section></summary><div class='docblock'>For a given FlightDescriptor, get the Schema as described in Schema.fbs::Schema
 This is used when a consumer needs the Schema of flight stream. Similar to
 GetFlightInfo this interface may generate a new flight that was not previously
-available in ListFlights.</div></details><details class="toggle method-toggle" open><summary><section id="method.do_get" class="method trait-impl"><a class="src rightside" href="../../../src/arrow_integration_testing/flight_server_scenarios/middleware.rs.html#67-72">source</a><a href="#method.do_get" class="anchor">§</a><h4 class="code-header">fn <a class="fn">do_get</a>&lt;'life0, 'async_trait&gt;(
+available in ListFlights.</div></details><details class="toggle method-toggle" open><summary><section id="method.do_get" class="method trait-impl"><a class="src rightside" href="../../../src/arrow_integration_testing/flight_server_scenarios/middleware.rs.html#67-72">source</a><a href="#method.do_get" class="anchor">§</a><h4 class="code-header">fn <a href="../../../arrow_flight/gen/flight_service_server/trait.FlightService.html#tymethod.do_get" class="fn">do_get</a>&lt;'life0, 'async_trait&gt;(
     &amp;'life0 self,
-    _request: <a class="struct" href="https://docs.rs/tonic/0.9.2/tonic/request/struct.Request.html" title="struct tonic::request::Request">Request</a>&lt;Ticket&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="enum" href="https://doc.rust-lang.org/nightly/core/re [...]
+    _request: <a class="struct" href="https://docs.rs/tonic/0.9.2/tonic/request/struct.Request.html" title="struct tonic::request::Request">Request</a>&lt;<a class="struct" href="../../../arrow_flight/gen/struct.Ticket.html" title="struct arrow_flight::gen::Ticket">Ticket</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="enum" href="https://doc.rust-lang.org/nightly/core/re [...]
     Self: 'async_trait,
     'life0: 'async_trait,</span></h4></section></summary><div class='docblock'>Retrieve a single stream associated with a particular descriptor
 associated with the referenced ticket. A Flight can be composed of one or
 more streams where each stream can be retrieved using a separate opaque
-ticket that the flight service uses for managing a collection of streams.</div></details><details class="toggle method-toggle" open><summary><section id="method.handshake" class="method trait-impl"><a class="src rightside" href="../../../src/arrow_integration_testing/flight_server_scenarios/middleware.rs.html#74-79">source</a><a href="#method.handshake" class="anchor">§</a><h4 class="code-header">fn <a class="fn">handshake</a>&lt;'life0, 'async_trait&gt;(
+ticket that the flight service uses for managing a collection of streams.</div></details><details class="toggle method-toggle" open><summary><section id="method.handshake" class="method trait-impl"><a class="src rightside" href="../../../src/arrow_integration_testing/flight_server_scenarios/middleware.rs.html#74-79">source</a><a href="#method.handshake" class="anchor">§</a><h4 class="code-header">fn <a href="../../../arrow_flight/gen/flight_service_server/trait.FlightService.html#tymetho [...]
     &amp;'life0 self,
-    _request: <a class="struct" href="https://docs.rs/tonic/0.9.2/tonic/request/struct.Request.html" title="struct tonic::request::Request">Request</a>&lt;<a class="struct" href="https://docs.rs/tonic/0.9.2/tonic/codec/decode/struct.Streaming.html" title="struct tonic::codec::decode::Streaming">Streaming</a>&lt;HandshakeRequest&gt;&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="enum" href="https://doc.rust-lang.org/nightly/core/re [...]
+    _request: <a class="struct" href="https://docs.rs/tonic/0.9.2/tonic/request/struct.Request.html" title="struct tonic::request::Request">Request</a>&lt;<a class="struct" href="https://docs.rs/tonic/0.9.2/tonic/codec/decode/struct.Streaming.html" title="struct tonic::codec::decode::Streaming">Streaming</a>&lt;<a class="struct" href="../../../arrow_flight/gen/struct.HandshakeRequest.html" title="struct arrow_flight::gen::HandshakeRequest">HandshakeRequest</a>&gt;&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="enum" href="https://doc.rust-lang.org/nightly/core/re [...]
     Self: 'async_trait,
     'life0: 'async_trait,</span></h4></section></summary><div class='docblock'>Handshake between client and server. Depending on the server, the
 handshake may be required to determine the token that should be used for
 future operations. Both request and response are streams to allow multiple
-round-trips depending on auth mechanism.</div></details><details class="toggle method-toggle" open><summary><section id="method.list_flights" class="method trait-impl"><a class="src rightside" href="../../../src/arrow_integration_testing/flight_server_scenarios/middleware.rs.html#81-86">source</a><a href="#method.list_flights" class="anchor">§</a><h4 class="code-header">fn <a class="fn">list_flights</a>&lt;'life0, 'async_trait&gt;(
+round-trips depending on auth mechanism.</div></details><details class="toggle method-toggle" open><summary><section id="method.list_flights" class="method trait-impl"><a class="src rightside" href="../../../src/arrow_integration_testing/flight_server_scenarios/middleware.rs.html#81-86">source</a><a href="#method.list_flights" class="anchor">§</a><h4 class="code-header">fn <a href="../../../arrow_flight/gen/flight_service_server/trait.FlightService.html#tymethod.list_flights" class="fn"> [...]
     &amp;'life0 self,
-    _request: <a class="struct" href="https://docs.rs/tonic/0.9.2/tonic/request/struct.Request.html" title="struct tonic::request::Request">Request</a>&lt;Criteria&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="enum" href="https://doc.rust-lang.org/nightly/core/re [...]
+    _request: <a class="struct" href="https://docs.rs/tonic/0.9.2/tonic/request/struct.Request.html" title="struct tonic::request::Request">Request</a>&lt;<a class="struct" href="../../../arrow_flight/gen/struct.Criteria.html" title="struct arrow_flight::gen::Criteria">Criteria</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="enum" href="https://doc.rust-lang.org/nightly/core/re [...]
     Self: 'async_trait,
     'life0: 'async_trait,</span></h4></section></summary><div class='docblock'>Get a list of available streams given a particular criteria. Most flight
 services will expose one or more streams that are readily available for
 retrieval. This api allows listing the streams available for
 consumption. A user can also provide a criteria. The criteria can limit
 the subset of streams that can be listed via this interface. Each flight
-service allows its own definition of how to consume criteria.</div></details><details class="toggle method-toggle" open><summary><section id="method.get_flight_info" class="method trait-impl"><a class="src rightside" href="../../../src/arrow_integration_testing/flight_server_scenarios/middleware.rs.html#88-122">source</a><a href="#method.get_flight_info" class="anchor">§</a><h4 class="code-header">fn <a class="fn">get_flight_info</a>&lt;'life0, 'async_trait&gt;(
+service allows its own definition of how to consume criteria.</div></details><details class="toggle method-toggle" open><summary><section id="method.get_flight_info" class="method trait-impl"><a class="src rightside" href="../../../src/arrow_integration_testing/flight_server_scenarios/middleware.rs.html#88-122">source</a><a href="#method.get_flight_info" class="anchor">§</a><h4 class="code-header">fn <a href="../../../arrow_flight/gen/flight_service_server/trait.FlightService.html#tymeth [...]
     &amp;'life0 self,
-    request: <a class="struct" href="https://docs.rs/tonic/0.9.2/tonic/request/struct.Request.html" title="struct tonic::request::Request">Request</a>&lt;FlightDescriptor&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="enum" href="https://doc.rust-lang.org/nightly/core/re [...]
+    request: <a class="struct" href="https://docs.rs/tonic/0.9.2/tonic/request/struct.Request.html" title="struct tonic::request::Request">Request</a>&lt;<a class="struct" href="../../../arrow_flight/gen/struct.FlightDescriptor.html" title="struct arrow_flight::gen::FlightDescriptor">FlightDescriptor</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="enum" href="https://doc.rust-lang.org/nightly/core/re [...]
     Self: 'async_trait,
     'life0: 'async_trait,</span></h4></section></summary><div class='docblock'>For a given FlightDescriptor, get information about how the flight can be
 consumed. This is a useful interface if the consumer of the interface
@@ -46,37 +46,37 @@ includes a SQL statement or a Pickled Python operation that will be
 executed. In those cases, the descriptor will not be previously available
 within the list of available streams provided by ListFlights but will be
 available for consumption for the duration defined by the specific flight
-service.</div></details><details class="toggle method-toggle" open><summary><section id="method.do_put" class="method trait-impl"><a class="src rightside" href="../../../src/arrow_integration_testing/flight_server_scenarios/middleware.rs.html#124-129">source</a><a href="#method.do_put" class="anchor">§</a><h4 class="code-header">fn <a class="fn">do_put</a>&lt;'life0, 'async_trait&gt;(
+service.</div></details><details class="toggle method-toggle" open><summary><section id="method.do_put" class="method trait-impl"><a class="src rightside" href="../../../src/arrow_integration_testing/flight_server_scenarios/middleware.rs.html#124-129">source</a><a href="#method.do_put" class="anchor">§</a><h4 class="code-header">fn <a href="../../../arrow_flight/gen/flight_service_server/trait.FlightService.html#tymethod.do_put" class="fn">do_put</a>&lt;'life0, 'async_trait&gt;(
     &amp;'life0 self,
-    _request: <a class="struct" href="https://docs.rs/tonic/0.9.2/tonic/request/struct.Request.html" title="struct tonic::request::Request">Request</a>&lt;<a class="struct" href="https://docs.rs/tonic/0.9.2/tonic/codec/decode/struct.Streaming.html" title="struct tonic::codec::decode::Streaming">Streaming</a>&lt;FlightData&gt;&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="enum" href="https://doc.rust-lang.org/nightly/core/re [...]
+    _request: <a class="struct" href="https://docs.rs/tonic/0.9.2/tonic/request/struct.Request.html" title="struct tonic::request::Request">Request</a>&lt;<a class="struct" href="https://docs.rs/tonic/0.9.2/tonic/codec/decode/struct.Streaming.html" title="struct tonic::codec::decode::Streaming">Streaming</a>&lt;<a class="struct" href="../../../arrow_flight/gen/struct.FlightData.html" title="struct arrow_flight::gen::FlightData">FlightData</a>&gt;&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="enum" href="https://doc.rust-lang.org/nightly/core/re [...]
     Self: 'async_trait,
     'life0: 'async_trait,</span></h4></section></summary><div class='docblock'>Push a stream to the flight service associated with a particular
 flight stream. This allows a client of a flight service to upload a stream
 of data. Depending on the particular flight service, a client consumer
 could be allowed to upload a single stream per descriptor or an unlimited
 number. In the latter, the service might implement a ‘seal’ action that
-can be applied to a descriptor once all streams are uploaded.</div></details><details class="toggle method-toggle" open><summary><section id="method.do_action" class="method trait-impl"><a class="src rightside" href="../../../src/arrow_integration_testing/flight_server_scenarios/middleware.rs.html#131-136">source</a><a href="#method.do_action" class="anchor">§</a><h4 class="code-header">fn <a class="fn">do_action</a>&lt;'life0, 'async_trait&gt;(
+can be applied to a descriptor once all streams are uploaded.</div></details><details class="toggle method-toggle" open><summary><section id="method.do_action" class="method trait-impl"><a class="src rightside" href="../../../src/arrow_integration_testing/flight_server_scenarios/middleware.rs.html#131-136">source</a><a href="#method.do_action" class="anchor">§</a><h4 class="code-header">fn <a href="../../../arrow_flight/gen/flight_service_server/trait.FlightService.html#tymethod.do_actio [...]
     &amp;'life0 self,
-    _request: <a class="struct" href="https://docs.rs/tonic/0.9.2/tonic/request/struct.Request.html" title="struct tonic::request::Request">Request</a>&lt;Action&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="enum" href="https://doc.rust-lang.org/nightly/core/re [...]
+    _request: <a class="struct" href="https://docs.rs/tonic/0.9.2/tonic/request/struct.Request.html" title="struct tonic::request::Request">Request</a>&lt;<a class="struct" href="../../../arrow_flight/gen/struct.Action.html" title="struct arrow_flight::gen::Action">Action</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="enum" href="https://doc.rust-lang.org/nightly/core/re [...]
     Self: 'async_trait,
     'life0: 'async_trait,</span></h4></section></summary><div class='docblock'>Flight services can support an arbitrary number of simple actions in
 addition to the possible ListFlights, GetFlightInfo, DoGet, DoPut
 operations that are potentially available. DoAction allows a flight client
 to do a specific action against a flight service. An action includes
 opaque request and response objects that are specific to the type action
-being undertaken.</div></details><details class="toggle method-toggle" open><summary><section id="method.list_actions" class="method trait-impl"><a class="src rightside" href="../../../src/arrow_integration_testing/flight_server_scenarios/middleware.rs.html#138-143">source</a><a href="#method.list_actions" class="anchor">§</a><h4 class="code-header">fn <a class="fn">list_actions</a>&lt;'life0, 'async_trait&gt;(
+being undertaken.</div></details><details class="toggle method-toggle" open><summary><section id="method.list_actions" class="method trait-impl"><a class="src rightside" href="../../../src/arrow_integration_testing/flight_server_scenarios/middleware.rs.html#138-143">source</a><a href="#method.list_actions" class="anchor">§</a><h4 class="code-header">fn <a href="../../../arrow_flight/gen/flight_service_server/trait.FlightService.html#tymethod.list_actions" class="fn">list_actions</a>&lt;' [...]
     &amp;'life0 self,
-    _request: <a class="struct" href="https://docs.rs/tonic/0.9.2/tonic/request/struct.Request.html" title="struct tonic::request::Request">Request</a>&lt;Empty&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="enum" href="https://doc.rust-lang.org/nightly/core/re [...]
+    _request: <a class="struct" href="https://docs.rs/tonic/0.9.2/tonic/request/struct.Request.html" title="struct tonic::request::Request">Request</a>&lt;<a class="struct" href="../../../arrow_flight/gen/struct.Empty.html" title="struct arrow_flight::gen::Empty">Empty</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="enum" href="https://doc.rust-lang.org/nightly/core/re [...]
     Self: 'async_trait,
     'life0: 'async_trait,</span></h4></section></summary><div class='docblock'>A flight service exposes all of the available action types that it has
 along with descriptions. This allows different flight consumers to
-understand the capabilities of the flight service.</div></details><details class="toggle method-toggle" open><summary><section id="method.do_exchange" class="method trait-impl"><a class="src rightside" href="../../../src/arrow_integration_testing/flight_server_scenarios/middleware.rs.html#145-150">source</a><a href="#method.do_exchange" class="anchor">§</a><h4 class="code-header">fn <a class="fn">do_exchange</a>&lt;'life0, 'async_trait&gt;(
+understand the capabilities of the flight service.</div></details><details class="toggle method-toggle" open><summary><section id="method.do_exchange" class="method trait-impl"><a class="src rightside" href="../../../src/arrow_integration_testing/flight_server_scenarios/middleware.rs.html#145-150">source</a><a href="#method.do_exchange" class="anchor">§</a><h4 class="code-header">fn <a href="../../../arrow_flight/gen/flight_service_server/trait.FlightService.html#tymethod.do_exchange" cl [...]
     &amp;'life0 self,
-    _request: <a class="struct" href="https://docs.rs/tonic/0.9.2/tonic/request/struct.Request.html" title="struct tonic::request::Request">Request</a>&lt;<a class="struct" href="https://docs.rs/tonic/0.9.2/tonic/codec/decode/struct.Streaming.html" title="struct tonic::codec::decode::Streaming">Streaming</a>&lt;FlightData&gt;&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="enum" href="https://doc.rust-lang.org/nightly/core/re [...]
+    _request: <a class="struct" href="https://docs.rs/tonic/0.9.2/tonic/request/struct.Request.html" title="struct tonic::request::Request">Request</a>&lt;<a class="struct" href="https://docs.rs/tonic/0.9.2/tonic/codec/decode/struct.Streaming.html" title="struct tonic::codec::decode::Streaming">Streaming</a>&lt;<a class="struct" href="../../../arrow_flight/gen/struct.FlightData.html" title="struct arrow_flight::gen::FlightData">FlightData</a>&gt;&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="enum" href="https://doc.rust-lang.org/nightly/core/re [...]
     Self: 'async_trait,
     'life0: 'async_trait,</span></h4></section></summary><div class='docblock'>Open a bidirectional data channel for a given descriptor. This
 allows clients to send and receive arbitrary Arrow data and
diff --git a/arrow_row/all.html b/arrow_row/all.html
index 545f707666..60314757c7 100644
--- a/arrow_row/all.html
+++ b/arrow_row/all.html
@@ -1 +1 @@
-<!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="List of all items in this crate"><title>List of all items in this crate</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.fi [...]
\ No newline at end of file
+<!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="List of all items in this crate"><title>List of all items in this crate</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.fi [...]
\ No newline at end of file
diff --git a/arrow_row/dictionary/fn.compute_dictionary_mapping.html b/arrow_row/dictionary/fn.compute_dictionary_mapping.html
deleted file mode 100644
index ed6193d963..0000000000
--- a/arrow_row/dictionary/fn.compute_dictionary_mapping.html
+++ /dev/null
@@ -1,5 +0,0 @@
-<!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="Computes the dictionary mapping for the given dictionary values"><title>compute_dictionary_mapping in arrow_row::dictionary - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="prelo [...]
-    interner: &amp;mut <a class="struct" href="../interner/struct.OrderPreservingInterner.html" title="struct arrow_row::interner::OrderPreservingInterner">OrderPreservingInterner</a>,
-    values: &amp;ArrayRef
-) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="../interner/struct.Interned.html" title="struct arrow_row::interner::Interned">Interned</a>&gt;&gt;</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</ [...]
-</div></details></section></div></main></body></html>
\ No newline at end of file
diff --git a/arrow_row/dictionary/fn.decode_binary.html b/arrow_row/dictionary/fn.decode_binary.html
deleted file mode 100644
index 11fb119eaa..0000000000
--- a/arrow_row/dictionary/fn.decode_binary.html
+++ /dev/null
@@ -1,4 +0,0 @@
-<!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="Decodes a binary array from dictionary values"><title>decode_binary in arrow_row::dictionary - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" [...]
-<h2 id="safety"><a href="#safety">Safety</a></h2>
-<p>Values must be valid UTF-8</p>
-</div></details></section></div></main></body></html>
\ No newline at end of file
diff --git a/arrow_row/dictionary/fn.decode_bool.html b/arrow_row/dictionary/fn.decode_bool.html
deleted file mode 100644
index 0f7f80a49e..0000000000
--- a/arrow_row/dictionary/fn.decode_bool.html
+++ /dev/null
@@ -1,2 +0,0 @@
-<!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="Decodes a boolean array from dictionary values"><title>decode_bool in arrow_row::dictionary - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2"  [...]
-</div></details></section></div></main></body></html>
\ No newline at end of file
diff --git a/arrow_row/dictionary/fn.decode_dictionary.html b/arrow_row/dictionary/fn.decode_dictionary.html
deleted file mode 100644
index fab653bffe..0000000000
--- a/arrow_row/dictionary/fn.decode_dictionary.html
+++ /dev/null
@@ -1,9 +0,0 @@
-<!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="Decodes a string array from `rows` with the provided `options`"><title>decode_dictionary in arrow_row::dictionary - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="fo [...]
-    interner: &amp;<a class="struct" href="../interner/struct.OrderPreservingInterner.html" title="struct arrow_row::interner::OrderPreservingInterner">OrderPreservingInterner</a>,
-    value_type: &amp;DataType,
-    options: SortOptions,
-    rows: &amp;mut [&amp;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>]]
-) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;DictionaryArray&lt;K&gt;, ArrowError&gt;</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Decodes a string array from <code>rows</code> with the provided <code>options</code></p>
-<h2 id="safety"><a href="#safety">Safety</a></h2>
-<p><code>interner</code> must contain valid data for the provided <code>value_type</code></p>
-</div></details></section></div></main></body></html>
\ No newline at end of file
diff --git a/arrow_row/dictionary/fn.decode_fixed.html b/arrow_row/dictionary/fn.decode_fixed.html
deleted file mode 100644
index 8803be0db6..0000000000
--- a/arrow_row/dictionary/fn.decode_fixed.html
+++ /dev/null
@@ -1,7 +0,0 @@
-<!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="Decodes a fixed length type array from dictionary values"><title>decode_fixed in arrow_row::dictionary - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="f [...]
-    values: &amp;[&amp;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>]],
-    data_type: DataType
-) -&gt; ArrayData</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Decodes a fixed length type array from dictionary values</p>
-<h2 id="safety"><a href="#safety">Safety</a></h2>
-<p><code>data_type</code> must be appropriate native type for <code>T</code></p>
-</div></details></section></div></main></body></html>
\ No newline at end of file
diff --git a/arrow_row/dictionary/fn.decode_primitive.html b/arrow_row/dictionary/fn.decode_primitive.html
deleted file mode 100644
index 050a78f56e..0000000000
--- a/arrow_row/dictionary/fn.decode_primitive.html
+++ /dev/null
@@ -1,6 +0,0 @@
-<!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="Decodes a `PrimitiveArray` from dictionary values"><title>decode_primitive in arrow_row::dictionary - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font [...]
-    values: &amp;[&amp;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>]],
-    data_type: DataType
-) -&gt; ArrayData<span class="where fmt-newline">where
-    T::Native: <a class="trait" href="../fixed/trait.FixedLengthEncoding.html" title="trait arrow_row::fixed::FixedLengthEncoding">FixedLengthEncoding</a>,</span></code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Decodes a <code>PrimitiveArray</code> from dictionary values</p>
-</div></details></section></div></main></body></html>
\ No newline at end of file
diff --git a/arrow_row/dictionary/fn.decode_string.html b/arrow_row/dictionary/fn.decode_string.html
deleted file mode 100644
index cb4e320532..0000000000
--- a/arrow_row/dictionary/fn.decode_string.html
+++ /dev/null
@@ -1,4 +0,0 @@
-<!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="Decodes a string array from dictionary values"><title>decode_string in arrow_row::dictionary - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" [...]
-<h2 id="safety"><a href="#safety">Safety</a></h2>
-<p>Values must be valid UTF-8</p>
-</div></details></section></div></main></body></html>
\ No newline at end of file
diff --git a/arrow_row/dictionary/fn.encode_dictionary.html b/arrow_row/dictionary/fn.encode_dictionary.html
deleted file mode 100644
index 877b38d34b..0000000000
--- a/arrow_row/dictionary/fn.encode_dictionary.html
+++ /dev/null
@@ -1,12 +0,0 @@
-<!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="Dictionary types are encoded as"><title>encode_dictionary in arrow_row::dictionary - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorig [...]
-    data: &amp;mut [<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>],
-    offsets: &amp;mut [<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>],
-    column: &amp;DictionaryArray&lt;K&gt;,
-    normalized_keys: &amp;[<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&amp;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>]&gt;],
-    opts: SortOptions
-)</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Dictionary types are encoded as</p>
-<ul>
-<li>single <code>0_u8</code> if null</li>
-<li>the bytes of the corresponding normalized key including the null terminator</li>
-</ul>
-</div></details></section></div></main></body></html>
\ No newline at end of file
diff --git a/arrow_row/dictionary/fn.encode_dictionary_values.html b/arrow_row/dictionary/fn.encode_dictionary_values.html
deleted file mode 100644
index 7c6e5fb14a..0000000000
--- a/arrow_row/dictionary/fn.encode_dictionary_values.html
+++ /dev/null
@@ -1,8 +0,0 @@
-<!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="Encode dictionary values not preserving the dictionary encoding"><title>encode_dictionary_values in arrow_row::dictionary - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload [...]
-    data: &amp;mut [<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>],
-    offsets: &amp;mut [<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>],
-    column: &amp;DictionaryArray&lt;K&gt;,
-    values: &amp;<a class="struct" href="../struct.Rows.html" title="struct arrow_row::Rows">Rows</a>,
-    null: &amp;<a class="struct" href="../struct.Row.html" title="struct arrow_row::Row">Row</a>&lt;'_&gt;
-)</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Encode dictionary values not preserving the dictionary encoding</p>
-</div></details></section></div></main></body></html>
\ No newline at end of file
diff --git a/arrow_row/dictionary/index.html b/arrow_row/dictionary/index.html
deleted file mode 100644
index cd313b84e6..0000000000
--- a/arrow_row/dictionary/index.html
+++ /dev/null
@@ -1 +0,0 @@
-<!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="API documentation for the Rust `dictionary` mod in crate `arrow_row`."><title>arrow_row::dictionary - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font [...]
\ No newline at end of file
diff --git a/arrow_row/dictionary/macro.decode_primitive_helper!.html b/arrow_row/dictionary/macro.decode_primitive_helper!.html
deleted file mode 100644
index 91d58d2464..0000000000
--- a/arrow_row/dictionary/macro.decode_primitive_helper!.html
+++ /dev/null
@@ -1,11 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-<head>
-    <meta http-equiv="refresh" content="0;URL=macro.decode_primitive_helper.html">
-    <title>Redirection</title>
-</head>
-<body>
-    <p>Redirecting to <a href="macro.decode_primitive_helper.html">macro.decode_primitive_helper.html</a>...</p>
-    <script>location.replace("macro.decode_primitive_helper.html" + location.search + location.hash);</script>
-</body>
-</html>
\ No newline at end of file
diff --git a/arrow_row/dictionary/macro.decode_primitive_helper.html b/arrow_row/dictionary/macro.decode_primitive_helper.html
deleted file mode 100644
index 2038376806..0000000000
--- a/arrow_row/dictionary/macro.decode_primitive_helper.html
+++ /dev/null
@@ -1,3 +0,0 @@
-<!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="API documentation for the Rust `decode_primitive_helper` macro in crate `arrow_row`."><title>decode_primitive_helper in arrow_row::dictionary - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2 [...]
-    (<span class="macro-nonterminal">$t</span>:ty, <span class="macro-nonterminal">$values</span>: ident, <span class="macro-nonterminal">$data_type</span>:ident) =&gt; { ... };
-}</pre></section></div></main></body></html>
\ No newline at end of file
diff --git a/arrow_row/dictionary/sidebar-items.js b/arrow_row/dictionary/sidebar-items.js
deleted file mode 100644
index 64ecb88344..0000000000
--- a/arrow_row/dictionary/sidebar-items.js
+++ /dev/null
@@ -1 +0,0 @@
-window.SIDEBAR_ITEMS = {"fn":["compute_dictionary_mapping","decode_binary","decode_bool","decode_dictionary","decode_fixed","decode_primitive","decode_string","encode_dictionary","encode_dictionary_values"],"macro":["decode_primitive_helper"]};
\ No newline at end of file
diff --git a/arrow_row/enum.Codec.html b/arrow_row/enum.Codec.html
index 8a4b284e3e..71154be9a5 100644
--- a/arrow_row/enum.Codec.html
+++ b/arrow_row/enum.Codec.html
@@ -1,22 +1,18 @@
-<!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="API documentation for the Rust `Codec` enum in crate `arrow_row`."><title>Codec in arrow_row - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" cr [...]
+<!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="API documentation for the Rust `Codec` enum in crate `arrow_row`."><title>Codec in arrow_row - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" cr [...]
     Stateless,
-    Dictionary(<a class="struct" href="interner/struct.OrderPreservingInterner.html" title="struct arrow_row::interner::OrderPreservingInterner">OrderPreservingInterner</a>),
-    DictionaryValues(<a class="struct" href="struct.RowConverter.html" title="struct arrow_row::RowConverter">RowConverter</a>, <a class="struct" href="struct.OwnedRow.html" title="struct arrow_row::OwnedRow">OwnedRow</a>),
+    Dictionary(<a class="struct" href="struct.RowConverter.html" title="struct arrow_row::RowConverter">RowConverter</a>, <a class="struct" href="struct.OwnedRow.html" title="struct arrow_row::OwnedRow">OwnedRow</a>),
     Struct(<a class="struct" href="struct.RowConverter.html" title="struct arrow_row::RowConverter">RowConverter</a>, <a class="struct" href="struct.OwnedRow.html" title="struct arrow_row::OwnedRow">OwnedRow</a>),
     List(<a class="struct" href="struct.RowConverter.html" title="struct arrow_row::RowConverter">RowConverter</a>),
 }</code></pre><h2 id="variants" class="variants small-section-header">Variants<a href="#variants" class="anchor">§</a></h2><div class="variants"><section id="variant.Stateless" class="variant"><a href="#variant.Stateless" class="anchor">§</a><h3 class="code-header">Stateless</h3></section><div class="docblock"><p>No additional codec state is necessary</p>
-</div><section id="variant.Dictionary" class="variant"><a href="#variant.Dictionary" class="anchor">§</a><h3 class="code-header">Dictionary(<a class="struct" href="interner/struct.OrderPreservingInterner.html" title="struct arrow_row::interner::OrderPreservingInterner">OrderPreservingInterner</a>)</h3></section><div class="docblock"><p>The interner used to encode dictionary values</p>
-<p>Used when preserving the dictionary encoding</p>
-</div><section id="variant.DictionaryValues" class="variant"><a href="#variant.DictionaryValues" class="anchor">§</a><h3 class="code-header">DictionaryValues(<a class="struct" href="struct.RowConverter.html" title="struct arrow_row::RowConverter">RowConverter</a>, <a class="struct" href="struct.OwnedRow.html" title="struct arrow_row::OwnedRow">OwnedRow</a>)</h3></section><div class="docblock"><p>A row converter for the dictionary values
+</div><section id="variant.Dictionary" class="variant"><a href="#variant.Dictionary" class="anchor">§</a><h3 class="code-header">Dictionary(<a class="struct" href="struct.RowConverter.html" title="struct arrow_row::RowConverter">RowConverter</a>, <a class="struct" href="struct.OwnedRow.html" title="struct arrow_row::OwnedRow">OwnedRow</a>)</h3></section><div class="docblock"><p>A row converter for the dictionary values
 and the encoding of a row containing only nulls</p>
-<p>Used when not preserving dictionary encoding</p>
 </div><section id="variant.Struct" class="variant"><a href="#variant.Struct" class="anchor">§</a><h3 class="code-header">Struct(<a class="struct" href="struct.RowConverter.html" title="struct arrow_row::RowConverter">RowConverter</a>, <a class="struct" href="struct.OwnedRow.html" title="struct arrow_row::OwnedRow">OwnedRow</a>)</h3></section><div class="docblock"><p>A row converter for the child fields
 and the encoding of a row containing only nulls</p>
 </div><section id="variant.List" class="variant"><a href="#variant.List" class="anchor">§</a><h3 class="code-header">List(<a class="struct" href="struct.RowConverter.html" title="struct arrow_row::RowConverter">RowConverter</a>)</h3></section><div class="docblock"><p>A row converter for the child field</p>
-</div></div><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Codec" class="impl"><a class="src rightside" href="../src/arrow_row/lib.rs.html#445-567">source</a><a href="#impl-Codec" class="anchor">§</a><h3 class="code-header">impl <a class="enum" href="enum.Codec.html" title="enum arrow_row::Codec">Codec</a></h3 [...]
-    &amp;mut self,
+</div></div><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Codec" class="impl"><a class="src rightside" href="../src/arrow_row/lib.rs.html#387-484">source</a><a href="#impl-Codec" class="anchor">§</a><h3 class="code-header">impl <a class="enum" href="enum.Codec.html" title="enum arrow_row::Codec">Codec</a></h3 [...]
+    &amp;self,
     array: &amp;dyn Array
-) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="enum" href="enum.Encoder.html" title="enum arrow_row::Encoder">Encoder</a>&lt;'_&gt;, ArrowError&gt;</h4></section><section id="method.size" class="method"><a class="src rightside" href="../src/arrow_row/lib.rs.html#556-566">source</a><h4 class="code-header">pub(crate) fn <a href="#method.size" class="fn">size</a>(&amp;self) -&gt; <a clas [...]
+) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="enum" href="enum.Encoder.html" title="enum arrow_row::Encoder">Encoder</a>&lt;'_&gt;, ArrowError&gt;</h4></section><section id="method.size" class="method"><a class="src rightside" href="../src/arrow_row/lib.rs.html#476-483">source</a><h4 class="code-header">pub(crate) fn <a href="#method.size" class="fn">size</a>(&amp;self) -&gt; <a clas [...]
     T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></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#136">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a hre [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https: [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href [...]
diff --git a/arrow_row/enum.Encoder.html b/arrow_row/enum.Encoder.html
index f16f3b0f97..2b3b244c22 100644
--- a/arrow_row/enum.Encoder.html
+++ b/arrow_row/enum.Encoder.html
@@ -1,18 +1,16 @@
-<!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="API documentation for the Rust `Encoder` enum in crate `arrow_row`."><title>Encoder in arrow_row - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2 [...]
+<!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="API documentation for the Rust `Encoder` enum in crate `arrow_row`."><title>Encoder in arrow_row - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2 [...]
     Stateless,
-    Dictionary(<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&amp;'a [<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>]&gt;&gt;),
-    DictionaryValues(<a class="struct" href="struct.Rows.html" title="struct arrow_row::Rows">Rows</a>, <a class="struct" href="struct.Row.html" title="struct arrow_row::Row">Row</a>&lt;'a&gt;),
+    Dictionary(<a class="struct" href="struct.Rows.html" title="struct arrow_row::Rows">Rows</a>, <a class="struct" href="struct.Row.html" title="struct arrow_row::Row">Row</a>&lt;'a&gt;),
     Struct(<a class="struct" href="struct.Rows.html" title="struct arrow_row::Rows">Rows</a>, <a class="struct" href="struct.Row.html" title="struct arrow_row::Row">Row</a>&lt;'a&gt;),
     List(<a class="struct" href="struct.Rows.html" title="struct arrow_row::Rows">Rows</a>),
 }</code></pre><h2 id="variants" class="variants small-section-header">Variants<a href="#variants" class="anchor">§</a></h2><div class="variants"><section id="variant.Stateless" class="variant"><a href="#variant.Stateless" class="anchor">§</a><h3 class="code-header">Stateless</h3></section><div class="docblock"><p>No additional encoder state is necessary</p>
-</div><section id="variant.Dictionary" class="variant"><a href="#variant.Dictionary" class="anchor">§</a><h3 class="code-header">Dictionary(<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&amp;'a [<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html [...]
-</div><section id="variant.DictionaryValues" class="variant"><a href="#variant.DictionaryValues" class="anchor">§</a><h3 class="code-header">DictionaryValues(<a class="struct" href="struct.Rows.html" title="struct arrow_row::Rows">Rows</a>, <a class="struct" href="struct.Row.html" title="struct arrow_row::Row">Row</a>&lt;'a&gt;)</h3></section><div class="docblock"><p>The encoding of the child array and the encoding of a null row</p>
+</div><section id="variant.Dictionary" class="variant"><a href="#variant.Dictionary" class="anchor">§</a><h3 class="code-header">Dictionary(<a class="struct" href="struct.Rows.html" title="struct arrow_row::Rows">Rows</a>, <a class="struct" href="struct.Row.html" title="struct arrow_row::Row">Row</a>&lt;'a&gt;)</h3></section><div class="docblock"><p>The encoding of the child array and the encoding of a null row</p>
 </div><section id="variant.Struct" class="variant"><a href="#variant.Struct" class="anchor">§</a><h3 class="code-header">Struct(<a class="struct" href="struct.Rows.html" title="struct arrow_row::Rows">Rows</a>, <a class="struct" href="struct.Row.html" title="struct arrow_row::Row">Row</a>&lt;'a&gt;)</h3></section><div class="docblock"><p>The row encoding of the child arrays and the encoding of a null row</p>
 <p>It is necessary to encode to a temporary <a href="struct.Rows.html" title="struct arrow_row::Rows"><code>Rows</code></a> to avoid serializing
 values that are masked by a null in the parent StructArray, otherwise
 this would establish an ordering between semantically null values</p>
 </div><section id="variant.List" class="variant"><a href="#variant.List" class="anchor">§</a><h3 class="code-header">List(<a class="struct" href="struct.Rows.html" title="struct arrow_row::Rows">Rows</a>)</h3></section><div class="docblock"><p>The row encoding of the child array</p>
-</div></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-Encoder%3C'a%3E" class="impl"><a class="src rightside" href="../src/arrow_row/lib.rs.html#569">source</a><a href="#impl-Debug-for-Encoder%3C'a%3E" class="anchor">§</a><h3 class="code-header">impl&lt;'a&gt; <a class="tr [...]
+</div></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-Encoder%3C'a%3E" class="impl"><a class="src rightside" href="../src/arrow_row/lib.rs.html#486">source</a><a href="#impl-Debug-for-Encoder%3C'a%3E" class="anchor">§</a><h3 class="code-header">impl&lt;'a&gt; <a class="tr [...]
     T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></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#136">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a hre [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https: [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href [...]
diff --git a/arrow_row/fn.decode_column.html b/arrow_row/fn.decode_column.html
index 5bf3d751fc..5941cd12f8 100644
--- a/arrow_row/fn.decode_column.html
+++ b/arrow_row/fn.decode_column.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Decodes a the provided `field` from `rows`"><title>decode_column in arrow_row - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href= [...]
+<!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="Decodes a the provided `field` from `rows`"><title>decode_column in arrow_row - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href= [...]
     field: &amp;<a class="struct" href="struct.SortField.html" title="struct arrow_row::SortField">SortField</a>,
     rows: &amp;mut [&amp;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>]],
     codec: &amp;<a class="enum" href="enum.Codec.html" title="enum arrow_row::Codec">Codec</a>,
diff --git a/arrow_row/fn.encode_column.html b/arrow_row/fn.encode_column.html
index 584e5c597d..baee3e450d 100644
--- a/arrow_row/fn.encode_column.html
+++ b/arrow_row/fn.encode_column.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Encodes a column to the provided `Rows` incrementing the offsets as it progresses"><title>encode_column in arrow_row - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="fo [...]
+<!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="Encodes a column to the provided `Rows` incrementing the offsets as it progresses"><title>encode_column in arrow_row - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="fo [...]
     data: &amp;mut [<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>],
     offsets: &amp;mut [<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>],
     column: &amp;dyn Array,
diff --git a/arrow_row/fn.encode_dictionary_values.html b/arrow_row/fn.encode_dictionary_values.html
new file mode 100644
index 0000000000..9ce73c658d
--- /dev/null
+++ b/arrow_row/fn.encode_dictionary_values.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Encode dictionary values not preserving the dictionary encoding"><title>encode_dictionary_values in arrow_row - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" typ [...]
+    data: &amp;mut [<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>],
+    offsets: &amp;mut [<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>],
+    column: &amp;DictionaryArray&lt;K&gt;,
+    values: &amp;<a class="struct" href="struct.Rows.html" title="struct arrow_row::Rows">Rows</a>,
+    null: &amp;<a class="struct" href="struct.Row.html" title="struct arrow_row::Row">Row</a>&lt;'_&gt;
+)</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Encode dictionary values not preserving the dictionary encoding</p>
+</div></details></section></div></main></body></html>
\ No newline at end of file
diff --git a/arrow_row/fn.null_sentinel.html b/arrow_row/fn.null_sentinel.html
index ebc589eff7..b72828b754 100644
--- a/arrow_row/fn.null_sentinel.html
+++ b/arrow_row/fn.null_sentinel.html
@@ -1,2 +1,2 @@
-<!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="Returns the null sentinel, negated if `invert` is true"><title>null_sentinel in arrow_row - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" cross [...]
+<!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="Returns the null sentinel, negated if `invert` is true"><title>null_sentinel in arrow_row - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" cross [...]
 </div></details></section></div></main></body></html>
\ No newline at end of file
diff --git a/arrow_row/fn.row_lengths.html b/arrow_row/fn.row_lengths.html
index bcbfa5b89c..51e82a9080 100644
--- a/arrow_row/fn.row_lengths.html
+++ b/arrow_row/fn.row_lengths.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Computes the length of each encoded `Rows` and returns an empty `Rows`"><title>row_lengths in arrow_row - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="fon [...]
+<!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="Computes the length of each encoded `Rows` and returns an empty `Rows`"><title>row_lengths in arrow_row - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="fon [...]
     cols: &amp;[ArrayRef],
     encoders: &amp;[<a class="enum" href="enum.Encoder.html" title="enum arrow_row::Encoder">Encoder</a>&lt;'_&gt;]
 ) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>&gt;</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Computes the length of each encoded <a href="struct.Rows.html" title="struct arrow_row::Rows"><code>Rows</code></a> a [...]
diff --git a/arrow_row/index.html b/arrow_row/index.html
index dff5f20c5c..3358287246 100644
--- a/arrow_row/index.html
+++ b/arrow_row/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="A comparable row-oriented representation of a collection of `Array`."><title>arrow_row - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossori [...]
+<!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="A comparable row-oriented representation of a collection of `Array`."><title>arrow_row - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossori [...]
 <p><a href="struct.Row.html" title="struct arrow_row::Row"><code>Row</code></a>s are <a href="https://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.83.1080&amp;rep=rep1&amp;type=pdf">normalized for sorting</a>, and can therefore be very efficiently <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html" title="trait core::cmp::PartialOrd">compared</a>,
 using <a href="https://www.man7.org/linux/man-pages/man3/memcmp.3.html"><code>memcmp</code></a> under the hood, or used in <a href="https://en.wikipedia.org/wiki/Sorting_algorithm#Non-comparison_sorts">non-comparison sorts</a> such as <a href="https://en.wikipedia.org/wiki/Radix_sort">radix sort</a>.
 This makes the row format ideal for implementing efficient multi-column sorting,
@@ -31,7 +31,7 @@ to be meaningful.</em></p>
 <span class="kw">let </span>arrays = <span class="macro">vec!</span>[a1, a2];
 
 <span class="comment">// Convert arrays to rows
-</span><span class="kw">let </span><span class="kw-2">mut </span>converter = RowConverter::new(<span class="macro">vec!</span>[
+</span><span class="kw">let </span>converter = RowConverter::new(<span class="macro">vec!</span>[
     SortField::new(DataType::Int32),
     SortField::new(DataType::Utf8),
 ]).unwrap();
@@ -73,10 +73,10 @@ to be meaningful.</em></p>
         .iter()
         .map(|a| SortField::new(a.data_type().clone()))
         .collect();
-    <span class="kw">let </span><span class="kw-2">mut </span>converter = RowConverter::new(fields).unwrap();
+    <span class="kw">let </span>converter = RowConverter::new(fields).unwrap();
     <span class="kw">let </span>rows = converter.convert_columns(arrays).unwrap();
     <span class="kw">let </span><span class="kw-2">mut </span>sort: Vec&lt;<span class="kw">_</span>&gt; = rows.iter().enumerate().collect();
     sort.sort_unstable_by(|(<span class="kw">_</span>, a), (<span class="kw">_</span>, b)| a.cmp(b));
     UInt32Array::from_iter_values(sort.iter().map(|(i, <span class="kw">_</span>)| <span class="kw-2">*</span>i <span class="kw">as </span>u32))
 }</code></pre></div>
-</div></details><h2 id="modules" class="small-section-header"><a href="#modules">Modules</a></h2><ul class="item-table"><li><div class="item-name"><a class="mod" href="dictionary/index.html" title="mod arrow_row::dictionary">dictionary</a><span title="Restricted Visibility">&nbsp;🔒</span> </div></li><li><div class="item-name"><a class="mod" href="fixed/index.html" title="mod arrow_row::fixed">fixed</a><span title="Restricted Visibility">&nbsp;🔒</span> </div></li><li><div class="item-name [...]
\ No newline at end of file
+</div></details><h2 id="modules" class="small-section-header"><a href="#modules">Modules</a></h2><ul class="item-table"><li><div class="item-name"><a class="mod" href="fixed/index.html" title="mod arrow_row::fixed">fixed</a><span title="Restricted Visibility">&nbsp;🔒</span> </div></li><li><div class="item-name"><a class="mod" href="list/index.html" title="mod arrow_row::list">list</a><span title="Restricted Visibility">&nbsp;🔒</span> </div></li><li><div class="item-name"><a class="mod" h [...]
\ No newline at end of file
diff --git a/arrow_row/interner/index.html b/arrow_row/interner/index.html
deleted file mode 100644
index 5f143d1a06..0000000000
--- a/arrow_row/interner/index.html
+++ /dev/null
@@ -1,2 +0,0 @@
-<!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="API documentation for the Rust `interner` mod in crate `arrow_row`."><title>arrow_row::interner - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/wof [...]
-to the interned values, e.g. <code>inter(a) &lt; intern(b) =&gt; a &lt; b</code></div></li><li><div class="item-name"><a class="struct" href="struct.Slot.html" title="struct arrow_row::interner::Slot">Slot</a><span title="Restricted Visibility">&nbsp;🔒</span> </div><div class="desc docblock-short">A slot corresponds to a single byte-value in the generated normalized key</div></li></ul></section></div></main></body></html>
\ No newline at end of file
diff --git a/arrow_row/interner/sidebar-items.js b/arrow_row/interner/sidebar-items.js
deleted file mode 100644
index d6329a4601..0000000000
--- a/arrow_row/interner/sidebar-items.js
+++ /dev/null
@@ -1 +0,0 @@
-window.SIDEBAR_ITEMS = {"struct":["Bucket","InternBuffer","Interned","OrderPreservingInterner","Slot"]};
\ No newline at end of file
diff --git a/arrow_row/interner/struct.Bucket.html b/arrow_row/interner/struct.Bucket.html
deleted file mode 100644
index dcca59a09f..0000000000
--- a/arrow_row/interner/struct.Bucket.html
+++ /dev/null
@@ -1,58 +0,0 @@
-<!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="Bucket is the root of the data-structure used to allocate normalized keys"><title>Bucket in arrow_row::interner - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font [...]
-    slots: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="struct" href="struct.Slot.html" title="struct arrow_row::interner::Slot">Slot</a>&gt;,
-    next: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;<a class="struct" href="struct.Bucket.html" title="struct arrow_row::interner::Bucket">Bucket</a>&gt;&gt;,
-}</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Bucket is the root of the data-structure used to allocate normalized keys</p>
-<p>In particular it needs to generate keys that</p>
-<ul>
-<li>Contain no <code>0</code> bytes other than the null terminator</li>
-<li>Compare lexicographically in the same manner as the encoded <code>data</code></li>
-</ul>
-<p>The data structure consists of 254 slots, each of which can store a value.
-Additionally each slot may contain a child bucket, containing values smaller
-than the value within the slot.</p>
-<p>Each bucket also may contain a child bucket, containing values greater than
-all values in the current bucket</p>
-<h2 id="allocation-strategy"><a href="#allocation-strategy">Allocation Strategy</a></h2>
-<p>The contiguous slice of slots containing values is searched to find the insertion
-point for the new value, according to the sort order.</p>
-<p>If the insertion position exceeds 254, the number of slots, the value is inserted
-into the child bucket of the current bucket.</p>
-<p>If the insertion position already contains a value, the value is inserted into the
-child bucket of that slot.</p>
-<p>If the slot is not occupied, the value is inserted into that slot.</p>
-<p>The final key consists of the slot indexes visited incremented by 1,
-with the final value incremented by 2, followed by a null terminator.</p>
-<p>Consider the case of the integers <code>[8, 6, 5, 7]</code> inserted in that order</p>
-
-<div class="example-wrap ignore"><a href="#" class="tooltip" title="This example is not tested">ⓘ</a><pre class="rust rust-example-rendered"><code><span class="number">8</span>: <span class="kw-2">&amp;</span>[<span class="number">2</span>, <span class="number">0</span>]
-<span class="number">6</span>: <span class="kw-2">&amp;</span>[<span class="number">1</span>, <span class="number">2</span>, <span class="number">0</span>]
-<span class="number">5</span>: <span class="kw-2">&amp;</span>[<span class="number">1</span>, <span class="number">1</span>, <span class="number">2</span>, <span class="number">0</span>]
-<span class="number">7</span>: <span class="kw-2">&amp;</span>[<span class="number">1</span>, <span class="number">3</span>, <span class="number">0</span>]</code></pre></div>
-<p>Note: this allocation strategy is optimised for interning values in sorted order</p>
-</div></details><h2 id="fields" class="fields small-section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.slots" class="structfield small-section-header"><a href="#structfield.slots" class="anchor field">§</a><code>slots: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="struct" href="struct.Slot.html" title="struct arrow_row::interner::Slot">Slot</a>&gt;</code></span>< [...]
-</div><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Bucket" class="impl"><a class="src rightside" href="../../src/arrow_row/interner.rs.html#293-359">source</a><a href="#impl-Bucket" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.Bucket.html" title="struct arrow_row::interner: [...]
-    &amp;mut self,
-    values_buf: &amp;mut <a class="struct" href="struct.InternBuffer.html" title="struct arrow_row::interner::InternBuffer">InternBuffer</a>,
-    data: &amp;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>],
-    out: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>&gt;
-)</h4></section></summary><div class="docblock"><p>Insert <code>data</code> into this bucket or one of its children, appending the
-normalized key to <code>out</code> as it is constructed</p>
-<h5 id="panics"><a href="#panics">Panics</a></h5>
-<p>Panics if the value already exists</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.size" class="method"><a class="src rightside" href="../../src/arrow_row/interner.rs.html#343-349">source</a><h4 class="code-header">fn <a href="#method.size" class="fn">size</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class="docblock"><p>Returns the size of this instance in bytes</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.slot_child_bucket_size" class="method"><a class="src rightside" href="../../src/arrow_row/interner.rs.html#353-358">source</a><h4 class="code-header">fn <a href="#method.slot_child_bucket_size" class="fn">slot_child_bucket_size</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class="docblock"><p>returns t [...]
-in self.slots. This does not include the size of the child Slot itself</p>
-</div></details></div></details></div><h2 id="trait-implementations" class="small-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-Bucket" class="impl"><a class="src rightside" href="../../src/arrow_row/interner.rs.html#277">source</a><a href="#impl-Clone-for-Bucket" class="anchor">§</a><h3 class="code-header">impl <a cla [...]
-    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></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#136">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a hre [...]
-    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https: [...]
-    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href [...]
-    U: FromCast&lt;T&gt;,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.cast" class="method trait-impl"><a href="#method.cast" class="anchor">§</a><h4 class="code-header">fn <a class="fn">cast</a>(self) -&gt; U</h4></section></summary><div class='docblock'>Numeric cast from <code>self</code> to <code>T</code>.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="im [...]
-</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-FromCast%3CT%3E-for-Bucket" class="impl"><a href="#impl-FromCast%3CT%3E-for-Bucket" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; FromCast&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from_cast" class="method trait-impl"><a href="#method.from_cast" class="anchor">§</a><h4 class="code-he [...]
-    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#715">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href [...]
-<p>That is, this conversion is whatever the implementation of
-<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
-</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-Bucket" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#82">source</a><a href="#impl-ToOwned-for-Bucket" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<span class="wh [...]
-    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associat [...]
-    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</span></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" c [...]
-    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</span></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Err [...]
-    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a>,</span></h3></section></div></section></div></m [...]
\ No newline at end of file
diff --git a/arrow_row/interner/struct.InternBuffer.html b/arrow_row/interner/struct.InternBuffer.html
deleted file mode 100644
index 0444ed70e4..0000000000
--- a/arrow_row/interner/struct.InternBuffer.html
+++ /dev/null
@@ -1,23 +0,0 @@
-<!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="A buffer of `[u8]` indexed by `[Interned]`"><title>InternBuffer in arrow_row::interner - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" cross [...]
-    values: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>&gt;,
-    offsets: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>&gt;,
-}</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>A buffer of <code>[u8]</code> indexed by <code>[Interned]</code></p>
-</div></details><h2 id="fields" class="fields small-section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.values" class="structfield small-section-header"><a href="#structfield.values" class="anchor field">§</a><code>values: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>&gt;</code></span [...]
-</div><span id="structfield.offsets" class="structfield small-section-header"><a href="#structfield.offsets" class="anchor field">§</a><code>offsets: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>&gt;</code></span><div class="docblock"><p>The ith value is <code>&amp;values[offsets[i]..offsets[i+1]]</code></p>
-</div><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-InternBuffer" class="impl"><a class="src rightside" href="../../src/arrow_row/interner.rs.html#189-209">source</a><a href="#impl-InternBuffer" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.InternBuffer.html" title="struct ar [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.append" class="method"><a class="src rightside" href="../../src/arrow_row/interner.rs.html#198-203">source</a><h4 class="code-header">fn <a href="#method.append" class="fn">append</a>(&amp;mut self) -&gt; <a class="struct" href="struct.Interned.html" title="struct arrow_row::interner::Interned">Interned</a></h4></section></summary><div class="docblock"><p>Appends the next value based on data written t [...]
-returning the corresponding <a href="struct.Interned.html" title="struct arrow_row::interner::Interned"><code>Interned</code></a></p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.buffer_size" class="method"><a class="src rightside" href="../../src/arrow_row/interner.rs.html#206-208">source</a><h4 class="code-header">fn <a href="#method.buffer_size" class="fn">buffer_size</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class="docblock"><p>Returns the byte size of the associated bu [...]
-</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-InternBuffer" class="impl"><a class="src rightside" href="../../src/arrow_row/interner.rs.html#172">source</a><a href="#impl-Debug-for-InternBuffer" class="anchor">§</a><h3 class="code-header" [...]
-    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></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#136">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a hre [...]
-    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https: [...]
-    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href [...]
-    U: FromCast&lt;T&gt;,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.cast" class="method trait-impl"><a href="#method.cast" class="anchor">§</a><h4 class="code-header">fn <a class="fn">cast</a>(self) -&gt; U</h4></section></summary><div class='docblock'>Numeric cast from <code>self</code> to <code>T</code>.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="im [...]
-</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-FromCast%3CT%3E-for-InternBuffer" class="impl"><a href="#impl-FromCast%3CT%3E-for-InternBuffer" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; FromCast&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from_cast" class="method trait-impl"><a href="#method.from_cast" class="anchor">§</a><h4 cl [...]
-    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#715">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href [...]
-<p>That is, this conversion is whatever the implementation of
-<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
-</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-InternBuffer" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#762">source</a><a href="#impl-TryFrom%3CU%3E-for-InternBuffer" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom [...]
-    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</span></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" c [...]
-    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</span></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Err [...]
-    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a>,</span></h3></section></div></section></div></m [...]
\ No newline at end of file
diff --git a/arrow_row/interner/struct.Interned.html b/arrow_row/interner/struct.Interned.html
deleted file mode 100644
index 2222fcbf54..0000000000
--- a/arrow_row/interner/struct.Interned.html
+++ /dev/null
@@ -1,21 +0,0 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="An interned value"><title>Interned in arrow_row::interner - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.fil [...]
-</div></details><h2 id="fields" class="fields small-section-header">Tuple Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.0" class="structfield small-section-header"><a href="#structfield.0" class="anchor field">§</a><code>0: <a class="struct" href="https://doc.rust-lang.org/nightly/core/num/nonzero/struct.NonZeroU32.html" title="struct core::num::nonzero::NonZeroU32">NonZeroU32</a></code></span><h2 id="trait-implementations" class="small-section-header">Trait Impl [...]
-    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>,</span></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></ [...]
-by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#231">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class= [...]
-sufficient, and should not be overridden without very good reason.</div></details></div></details><section id="impl-Copy-for-Interned" class="impl"><a class="src rightside" href="../../src/arrow_row/interner.rs.html#24">source</a><a href="#impl-Copy-for-Interned" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html" title="trait core::marker::Copy">Copy</a> for <a class="struct" href="struct.Interned.html" t [...]
-    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></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#136">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a hre [...]
-    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https: [...]
-    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href [...]
-    U: FromCast&lt;T&gt;,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.cast" class="method trait-impl"><a href="#method.cast" class="anchor">§</a><h4 class="code-header">fn <a class="fn">cast</a>(self) -&gt; U</h4></section></summary><div class='docblock'>Numeric cast from <code>self</code> to <code>T</code>.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="im [...]
-    Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
-    K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.equivalent" class="method trait-impl"><a href="#method.equivalent" class="anchor [...]
-</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-FromCast%3CT%3E-for-Interned" class="impl"><a href="#impl-FromCast%3CT%3E-for-Interned" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; FromCast&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from_cast" class="method trait-impl"><a href="#method.from_cast" class="anchor">§</a><h4 class="cod [...]
-    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#715">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href [...]
-<p>That is, this conversion is whatever the implementation of
-<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
-</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-Interned" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#82">source</a><a href="#impl-ToOwned-for-Interned" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<span class [...]
-    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associat [...]
-    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</span></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" c [...]
-    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</span></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Err [...]
-    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a>,</span></h3></section></div></section></div></m [...]
\ No newline at end of file
diff --git a/arrow_row/interner/struct.OrderPreservingInterner.html b/arrow_row/interner/struct.OrderPreservingInterner.html
deleted file mode 100644
index cba4c2746b..0000000000
--- a/arrow_row/interner/struct.OrderPreservingInterner.html
+++ /dev/null
@@ -1,35 +0,0 @@
-<!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="A byte array interner that generates normalized keys that are sorted with respect to the interned values, e.g. `inter(a) &lt; intern(b) =&gt; a &lt; b`"><title>OrderPreservingInterner in arrow_row::interner - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href=". [...]
-    keys: <a class="struct" href="struct.InternBuffer.html" title="struct arrow_row::interner::InternBuffer">InternBuffer</a>,
-    values: <a class="struct" href="struct.InternBuffer.html" title="struct arrow_row::interner::InternBuffer">InternBuffer</a>,
-    bucket: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;<a class="struct" href="struct.Bucket.html" title="struct arrow_row::interner::Bucket">Bucket</a>&gt;,
-    hasher: RandomState,
-    lookup: HashMap&lt;<a class="struct" href="struct.Interned.html" title="struct arrow_row::interner::Interned">Interned</a>, <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>&gt;,
-}</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>A byte array interner that generates normalized keys that are sorted with respect
-to the interned values, e.g. <code>inter(a) &lt; intern(b) =&gt; a &lt; b</code></p>
-</div></details><h2 id="fields" class="fields small-section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.keys" class="structfield small-section-header"><a href="#structfield.keys" class="anchor field">§</a><code>keys: <a class="struct" href="struct.InternBuffer.html" title="struct arrow_row::interner::InternBuffer">InternBuffer</a></code></span><div class="docblock"><p>Provides a lookup from <a href="struct.Interned.html" title="struct arrow_row::interne [...]
-</div><span id="structfield.values" class="structfield small-section-header"><a href="#structfield.values" class="anchor field">§</a><code>values: <a class="struct" href="struct.InternBuffer.html" title="struct arrow_row::interner::InternBuffer">InternBuffer</a></code></span><div class="docblock"><p>Provides a lookup from <a href="struct.Interned.html" title="struct arrow_row::interner::Interned"><code>Interned</code></a> to the normalized value</p>
-</div><span id="structfield.bucket" class="structfield small-section-header"><a href="#structfield.bucket" class="anchor field">§</a><code>bucket: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;<a class="struct" href="struct.Bucket.html" title="struct arrow_row::interner::Bucket">Bucket</a>&gt;</code></span><div class="docblock"><p>Key allocation data structure</p>
-</div><span id="structfield.hasher" class="structfield small-section-header"><a href="#structfield.hasher" class="anchor field">§</a><code>hasher: RandomState</code></span><span id="structfield.lookup" class="structfield small-section-header"><a href="#structfield.lookup" class="anchor field">§</a><code>lookup: HashMap&lt;<a class="struct" href="struct.Interned.html" title="struct arrow_row::interner::Interned">Interned</a>, <a class="primitive" href="https://doc.rust-lang.org/nightly/st [...]
-    I: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a>&lt;Item = <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;V&gt;&gt;,
-    V: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.AsRef.html" title="trait core::convert::AsRef">AsRef</a>&lt;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>]&gt;,</span></h4></section></summary><div class="docblock"><p>Interns an iterator of values returning a list of <a href="struct.Interned.html" title="struct arrow_row::interner::Interned"><code>Interned</code></a> which can be
-used with <a href="struct.OrderPreservingInterner.html#method.normalized_key" title="method arrow_row::interner::OrderPreservingInterner::normalized_key"><code>Self::normalized_key</code></a> to retrieve the normalized keys with a
-lifetime not tied to the mutable borrow passed to this method</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.normalized_key" class="method"><a class="src rightside" href="../../src/arrow_row/interner.rs.html#128-130">source</a><h4 class="code-header">pub fn <a href="#method.normalized_key" class="fn">normalized_key</a>(&amp;self, key: <a class="struct" href="struct.Interned.html" title="struct arrow_row::interner::Interned">Interned</a>) -&gt; &amp;[<a class="primitive" href="https://doc.rust-lang.org/nightl [...]
-returned by this instance, to establish ordering of the interned values</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.lookup" class="method"><a class="src rightside" href="../../src/arrow_row/interner.rs.html#134-154">source</a><h4 class="code-header">pub fn <a href="#method.lookup" class="fn">lookup</a>(&amp;self, normalized_key: &amp;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>]) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html [...]
-returning <code>None</code> if it cannot be found</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.value" class="method"><a class="src rightside" href="../../src/arrow_row/interner.rs.html#157-159">source</a><h4 class="code-header">pub fn <a href="#method.value" class="fn">value</a>(&amp;self, key: <a class="struct" href="struct.Interned.html" title="struct arrow_row::interner::Interned">Interned</a>) -&gt; &amp;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8 [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.size" class="method"><a class="src rightside" href="../../src/arrow_row/interner.rs.html#162-168">source</a><h4 class="code-header">pub fn <a href="#method.size" class="fn">size</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class="docblock"><p>Returns the size of this instance in bytes including self</p>
-</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-OrderPreservingInterner" class="impl"><a class="src rightside" href="../../src/arrow_row/interner.rs.html#29">source</a><a href="#impl-Debug-for-OrderPreservingInterner" class="anchor">§</a><h [...]
-    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></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#136">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a hre [...]
-    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https: [...]
-    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href [...]
-    U: FromCast&lt;T&gt;,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.cast" class="method trait-impl"><a href="#method.cast" class="anchor">§</a><h4 class="code-header">fn <a class="fn">cast</a>(self) -&gt; U</h4></section></summary><div class='docblock'>Numeric cast from <code>self</code> to <code>T</code>.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="im [...]
-</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-FromCast%3CT%3E-for-OrderPreservingInterner" class="impl"><a href="#impl-FromCast%3CT%3E-for-OrderPreservingInterner" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; FromCast&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from_cast" class="method trait-impl"><a href="#method.from_cast" clas [...]
-    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#715">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href [...]
-<p>That is, this conversion is whatever the implementation of
-<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
-</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-OrderPreservingInterner" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#762">source</a><a href="#impl-TryFrom%3CU%3E-for-OrderPreservingInterner" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait  [...]
-    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</span></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" c [...]
-    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</span></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Err [...]
-    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a>,</span></h3></section></div><script type="text/ [...]
\ No newline at end of file
diff --git a/arrow_row/interner/struct.Slot.html b/arrow_row/interner/struct.Slot.html
deleted file mode 100644
index b71ccb6b86..0000000000
--- a/arrow_row/interner/struct.Slot.html
+++ /dev/null
@@ -1,21 +0,0 @@
-<!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="A slot corresponds to a single byte-value in the generated normalized key"><title>Slot in arrow_row::interner - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font"  [...]
-    value: <a class="struct" href="struct.Interned.html" title="struct arrow_row::interner::Interned">Interned</a>,
-    child: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;<a class="struct" href="struct.Bucket.html" title="struct arrow_row::interner::Bucket">Bucket</a>&gt;&gt;,
-}</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>A slot corresponds to a single byte-value in the generated normalized key</p>
-<p>It may contain a value, if not the first slot, and may contain a child <a href="struct.Bucket.html" title="struct arrow_row::interner::Bucket"><code>Bucket</code></a> representing
-the next byte in the generated normalized key</p>
-</div></details><h2 id="fields" class="fields small-section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.value" class="structfield small-section-header"><a href="#structfield.value" class="anchor field">§</a><code>value: <a class="struct" href="struct.Interned.html" title="struct arrow_row::interner::Interned">Interned</a></code></span><span id="structfield.child" class="structfield small-section-header"><a href="#structfield.child" class="anchor field"> [...]
-</div><h2 id="trait-implementations" class="small-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-Slot" class="impl"><a class="src rightside" href="../../src/arrow_row/interner.rs.html#229">source</a><a href="#impl-Clone-for-Slot" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-la [...]
-    T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></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#136">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a hre [...]
-    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https: [...]
-    T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href [...]
-    U: FromCast&lt;T&gt;,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.cast" class="method trait-impl"><a href="#method.cast" class="anchor">§</a><h4 class="code-header">fn <a class="fn">cast</a>(self) -&gt; U</h4></section></summary><div class='docblock'>Numeric cast from <code>self</code> to <code>T</code>.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="im [...]
-</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-FromCast%3CT%3E-for-Slot" class="impl"><a href="#impl-FromCast%3CT%3E-for-Slot" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; FromCast&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from_cast" class="method trait-impl"><a href="#method.from_cast" class="anchor">§</a><h4 class="code-header [...]
-    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#715">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href [...]
-<p>That is, this conversion is whatever the implementation of
-<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
-</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-Slot" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#82">source</a><a href="#impl-ToOwned-for-Slot" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<span class="where  [...]
-    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associat [...]
-    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</span></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" c [...]
-    U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</span></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Err [...]
-    T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a>,</span></h3></section></div></section></div></m [...]
\ No newline at end of file
diff --git a/arrow_row/macro.decode_dictionary_helper!.html b/arrow_row/macro.decode_dictionary_helper!.html
deleted file mode 100644
index c98cca5c69..0000000000
--- a/arrow_row/macro.decode_dictionary_helper!.html
+++ /dev/null
@@ -1,11 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-<head>
-    <meta http-equiv="refresh" content="0;URL=macro.decode_dictionary_helper.html">
-    <title>Redirection</title>
-</head>
-<body>
-    <p>Redirecting to <a href="macro.decode_dictionary_helper.html">macro.decode_dictionary_helper.html</a>...</p>
-    <script>location.replace("macro.decode_dictionary_helper.html" + location.search + location.hash);</script>
-</body>
-</html>
\ No newline at end of file
diff --git a/arrow_row/macro.decode_dictionary_helper.html b/arrow_row/macro.decode_dictionary_helper.html
deleted file mode 100644
index d72f5778ff..0000000000
--- a/arrow_row/macro.decode_dictionary_helper.html
+++ /dev/null
@@ -1,3 +0,0 @@
-<!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="API documentation for the Rust `decode_dictionary_helper` macro in crate `arrow_row`."><title>decode_dictionary_helper in arrow_row - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel=" [...]
-    (<span class="macro-nonterminal">$t</span>:ty, <span class="macro-nonterminal">$interner</span>:ident, <span class="macro-nonterminal">$v</span>:ident, <span class="macro-nonterminal">$options</span>:ident, <span class="macro-nonterminal">$rows</span>:ident) =&gt; { ... };
-}</pre></section></div></main></body></html>
\ No newline at end of file
diff --git a/arrow_row/macro.decode_primitive_helper.html b/arrow_row/macro.decode_primitive_helper.html
index 12414f7b3d..581f057404 100644
--- a/arrow_row/macro.decode_primitive_helper.html
+++ b/arrow_row/macro.decode_primitive_helper.html
@@ -1,3 +1,3 @@
-<!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="API documentation for the Rust `decode_primitive_helper` macro in crate `arrow_row`."><title>decode_primitive_helper in arrow_row - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="pr [...]
+<!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="API documentation for the Rust `decode_primitive_helper` macro in crate `arrow_row`."><title>decode_primitive_helper in arrow_row - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="pr [...]
     (<span class="macro-nonterminal">$t</span>:ty, <span class="macro-nonterminal">$rows</span>:ident, <span class="macro-nonterminal">$data_type</span>:ident, <span class="macro-nonterminal">$options</span>:ident) =&gt; { ... };
 }</pre></section></div></main></body></html>
\ No newline at end of file
diff --git a/arrow_row/sidebar-items.js b/arrow_row/sidebar-items.js
index 26d7d9cc2d..41c678bcfe 100644
--- a/arrow_row/sidebar-items.js
+++ b/arrow_row/sidebar-items.js
@@ -1 +1 @@
-window.SIDEBAR_ITEMS = {"enum":["Codec","Encoder"],"fn":["decode_column","encode_column","null_sentinel","row_lengths"],"macro":["decode_dictionary_helper","decode_primitive_helper"],"mod":["dictionary","fixed","interner","list","variable"],"struct":["OwnedRow","Row","RowConfig","RowConverter","RowParser","Rows","RowsIter","SortField"]};
\ No newline at end of file
+window.SIDEBAR_ITEMS = {"enum":["Codec","Encoder"],"fn":["decode_column","encode_column","encode_dictionary_values","null_sentinel","row_lengths"],"macro":["decode_primitive_helper"],"mod":["fixed","list","variable"],"struct":["OwnedRow","Row","RowConfig","RowConverter","RowParser","Rows","RowsIter","SortField"]};
\ No newline at end of file
diff --git a/arrow_row/struct.OwnedRow.html b/arrow_row/struct.OwnedRow.html
index 8e4cabf3b4..8c8fde43db 100644
--- a/arrow_row/struct.OwnedRow.html
+++ b/arrow_row/struct.OwnedRow.html
@@ -1,20 +1,20 @@
-<!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="Owned version of a `Row` that can be moved/cloned freely."><title>OwnedRow in arrow_row - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossor [...]
+<!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="Owned version of a `Row` that can be moved/cloned freely."><title>OwnedRow in arrow_row - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossor [...]
     pub(crate) data: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>]&gt;,
     pub(crate) config: <a class="struct" href="struct.RowConfig.html" title="struct arrow_row::RowConfig">RowConfig</a>,
 }</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Owned version of a <a href="struct.Row.html" title="struct arrow_row::Row"><code>Row</code></a> that can be moved/cloned freely.</p>
 <p>This contains the data for the one specific row (not the entire buffer of all rows).</p>
-</div></details><h2 id="fields" class="fields small-section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.data" class="structfield small-section-header"><a href="#structfield.data" class="anchor field">§</a><code>data: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>]&gt;</code></span [...]
+</div></details><h2 id="fields" class="fields small-section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.data" class="structfield small-section-header"><a href="#structfield.data" class="anchor field">§</a><code>data: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>]&gt;</code></span [...]
 <p>This is helpful if you want to compare an <a href="struct.OwnedRow.html" title="struct arrow_row::OwnedRow"><code>OwnedRow</code></a> with a <a href="struct.Row.html" title="struct arrow_row::Row"><code>Row</code></a>.</p>
-</div></details></div></details></div><h2 id="trait-implementations" class="small-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-AsRef%3C%5Bu8%5D%3E-for-OwnedRow" class="impl"><a class="src rightside" href="../src/arrow_row/lib.rs.html#1180-1185">source</a><a href="#impl-AsRef%3C%5Bu8%5D%3E-for-OwnedRow" class="anchor">§</a><h3 c [...]
+</div></details></div></details></div><h2 id="trait-implementations" class="small-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-AsRef%3C%5Bu8%5D%3E-for-OwnedRow" class="impl"><a class="src rightside" href="../src/arrow_row/lib.rs.html#1070-1075">source</a><a href="#impl-AsRef%3C%5Bu8%5D%3E-for-OwnedRow" class="anchor">§</a><h3 c [...]
     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>,</span></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></ [...]
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></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></ [...]
     Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h4></section></summary><div class='docblock'>Compares and returns the maximum of two values. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.max">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.min" class="method trait-impl"><span class="rightside"><span class="s [...]
     Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h4></section></summary><div class='docblock'>Compares and returns the minimum of two values. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.min">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clamp" class="method trait-impl"><span class="rightside"><span class= [...]
-    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html" title="trait core::cmp::PartialOrd">PartialOrd</a>&lt;Self&gt;,</span></h4></section></summary><div class='docblock'>Restrict a value to a certain interval. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.clamp">Read more</a></div></d [...]
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html" title="trait core::cmp::PartialOrd">PartialOrd</a>&lt;Self&gt;,</span></h4></section></summary><div class='docblock'>Restrict a value to a certain interval. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.clamp">Read more</a></div></d [...]
 by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#231">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class= [...]
-sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialOrd%3COwnedRow%3E-for-OwnedRow" class="impl"><a class="src rightside" href="../src/arrow_row/lib.rs.html#1159-1164">source</a><a href="#impl-PartialOrd%3COwnedRow%3E-for-OwnedRow" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd [...]
+sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialOrd%3COwnedRow%3E-for-OwnedRow" class="impl"><a class="src rightside" href="../src/arrow_row/lib.rs.html#1049-1054">source</a><a href="#impl-PartialOrd%3COwnedRow%3E-for-OwnedRow" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd [...]
 operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.le">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.gt" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1123">source</a></span><a href="#method.gt" class="anchor">§</a><h4 class="code-header">fn  [...]
-operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.ge">Read more</a></div></details></div></details><section id="impl-Eq-for-OwnedRow" class="impl"><a class="src rightside" href="../src/arrow_row/lib.rs.html#1157">source</a><a href="#impl-Eq-for-OwnedRow" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="struct" href="str [...]
+operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.ge">Read more</a></div></details></div></details><section id="impl-Eq-for-OwnedRow" class="impl"><a class="src rightside" href="../src/arrow_row/lib.rs.html#1047">source</a><a href="#impl-Eq-for-OwnedRow" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="struct" href="str [...]
     T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></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#136">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a hre [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https: [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href [...]
diff --git a/arrow_row/struct.Row.html b/arrow_row/struct.Row.html
index 8a867b3a1f..71b20366a6 100644
--- a/arrow_row/struct.Row.html
+++ b/arrow_row/struct.Row.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="A comparable representation of a row."><title>Row in arrow_row - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.file [...]
+<!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="A comparable representation of a row."><title>Row in arrow_row - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.file [...]
     pub(crate) data: &amp;'a [<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>],
     pub(crate) config: &amp;'a <a class="struct" href="struct.RowConfig.html" title="struct arrow_row::RowConfig">RowConfig</a>,
 }</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>A comparable representation of a row.</p>
@@ -7,17 +7,17 @@
 returned by calls to <a href="struct.RowConverter.html#method.convert_columns" title="method arrow_row::RowConverter::convert_columns"><code>RowConverter::convert_columns</code></a> on the same
 <a href="struct.RowConverter.html" title="struct arrow_row::RowConverter"><code>RowConverter</code></a>. If different <a href="struct.RowConverter.html" title="struct arrow_row::RowConverter"><code>RowConverter</code></a>s are used, any
 ordering established by comparing the <a href="struct.Row.html" title="struct arrow_row::Row"><code>Row</code></a> is arbitrary.</p>
-</div></details><h2 id="fields" class="fields small-section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.data" class="structfield small-section-header"><a href="#structfield.data" class="anchor field">§</a><code>data: &amp;'a [<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>]</code></span><span id="structfield.config" class="structfield small-section-header"><a href="#structfield.config" class="anchor field">§</a [...]
-</div></details></div></details></div><h2 id="trait-implementations" class="small-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-AsRef%3C%5Bu8%5D%3E-for-Row%3C'a%3E" class="impl"><a class="src rightside" href="../src/arrow_row/lib.rs.html#1120-1125">source</a><a href="#impl-AsRef%3C%5Bu8%5D%3E-for-Row%3C'a%3E" class="anchor">§</a [...]
+</div></details><h2 id="fields" class="fields small-section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.data" class="structfield small-section-header"><a href="#structfield.data" class="anchor field">§</a><code>data: &amp;'a [<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>]</code></span><span id="structfield.config" class="structfield small-section-header"><a href="#structfield.config" class="anchor field">§</a [...]
+</div></details></div></details></div><h2 id="trait-implementations" class="small-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-AsRef%3C%5Bu8%5D%3E-for-Row%3C'a%3E" class="impl"><a class="src rightside" href="../src/arrow_row/lib.rs.html#1010-1015">source</a><a href="#impl-AsRef%3C%5Bu8%5D%3E-for-Row%3C'a%3E" class="anchor">§</a [...]
     H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="trait core::hash::Hasher">Hasher</a>,
-    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></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></ [...]
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></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></ [...]
     Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h4></section></summary><div class='docblock'>Compares and returns the maximum of two values. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.max">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.min" class="method trait-impl"><span class="rightside"><span class="s [...]
     Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h4></section></summary><div class='docblock'>Compares and returns the minimum of two values. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.min">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clamp" class="method trait-impl"><span class="rightside"><span class= [...]
-    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html" title="trait core::cmp::PartialOrd">PartialOrd</a>&lt;Self&gt;,</span></h4></section></summary><div class='docblock'>Restrict a value to a certain interval. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.clamp">Read more</a></div></d [...]
+    Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html" title="trait core::cmp::PartialOrd">PartialOrd</a>&lt;Self&gt;,</span></h4></section></summary><div class='docblock'>Restrict a value to a certain interval. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.clamp">Read more</a></div></d [...]
 by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#231">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class= [...]
-sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialOrd%3CRow%3C'a%3E%3E-for-Row%3C'a%3E" class="impl"><a class="src rightside" href="../src/arrow_row/lib.rs.html#1099-1104">source</a><a href="#impl-PartialOrd%3CRow%3C'a%3E%3E-for-Row%3C'a%3E" class="anchor">§</a><h3 class="code-header">impl&lt;'a&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/cor [...]
+sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialOrd%3CRow%3C'a%3E%3E-for-Row%3C'a%3E" class="impl"><a class="src rightside" href="../src/arrow_row/lib.rs.html#989-994">source</a><a href="#impl-PartialOrd%3CRow%3C'a%3E%3E-for-Row%3C'a%3E" class="anchor">§</a><h3 class="code-header">impl&lt;'a&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/ [...]
 operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.le">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.gt" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1123">source</a></span><a href="#method.gt" class="anchor">§</a><h4 class="code-header">fn  [...]
-operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.ge">Read more</a></div></details></div></details><section id="impl-Copy-for-Row%3C'a%3E" class="impl"><a class="src rightside" href="../src/arrow_row/lib.rs.html#1072">source</a><a href="#impl-Copy-for-Row%3C'a%3E" class="anchor">§</a><h3 class="code-header">impl&lt;'a&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html" title="trait core::marker::Copy">Copy</a> [...]
+operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.ge">Read more</a></div></details></div></details><section id="impl-Copy-for-Row%3C'a%3E" class="impl"><a class="src rightside" href="../src/arrow_row/lib.rs.html#962">source</a><a href="#impl-Copy-for-Row%3C'a%3E" class="anchor">§</a><h3 class="code-header">impl&lt;'a&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html" title="trait core::marker::Copy">Copy</a>  [...]
     T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></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#136">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a hre [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https: [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href [...]
diff --git a/arrow_row/struct.RowConfig.html b/arrow_row/struct.RowConfig.html
index 56e63ac278..403bb4ebd8 100644
--- a/arrow_row/struct.RowConfig.html
+++ b/arrow_row/struct.RowConfig.html
@@ -1,10 +1,10 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="The config of a given set of `Row`"><title>RowConfig in arrow_row - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.f [...]
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="The config of a given set of `Row`"><title>RowConfig in arrow_row - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.f [...]
     pub(crate) fields: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/sync/struct.Arc.html" title="struct alloc::sync::Arc">Arc</a>&lt;[<a class="struct" href="struct.SortField.html" title="struct arrow_row::SortField">SortField</a>]&gt;,
     pub(crate) validate_utf8: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,
 }</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>The config of a given set of <a href="struct.Row.html" title="struct arrow_row::Row"><code>Row</code></a></p>
 </div></details><h2 id="fields" class="fields small-section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.fields" class="structfield small-section-header"><a href="#structfield.fields" class="anchor field">§</a><code>fields: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/sync/struct.Arc.html" title="struct alloc::sync::Arc">Arc</a>&lt;[<a class="struct" href="struct.SortField.html" title="struct arrow_row::SortField">SortField</a>]&gt;</c [...]
 </div><span id="structfield.validate_utf8" class="structfield small-section-header"><a href="#structfield.validate_utf8" class="anchor field">§</a><code>validate_utf8: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></code></span><div class="docblock"><p>Whether to run UTF-8 validation when converting to arrow arrays</p>
-</div><h2 id="trait-implementations" class="small-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-RowConfig" class="impl"><a class="src rightside" href="../src/arrow_row/lib.rs.html#938">source</a><a href="#impl-Clone-for-RowConfig" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust- [...]
+</div><h2 id="trait-implementations" class="small-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-RowConfig" class="impl"><a class="src rightside" href="../src/arrow_row/lib.rs.html#828">source</a><a href="#impl-Clone-for-RowConfig" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust- [...]
     T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></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#136">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a hre [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https: [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href [...]
diff --git a/arrow_row/struct.RowConverter.html b/arrow_row/struct.RowConverter.html
index a19ff7efa0..53ab721a13 100644
--- a/arrow_row/struct.RowConverter.html
+++ b/arrow_row/struct.RowConverter.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Converts `ArrayRef` columns into a row-oriented format."><title>RowConverter in arrow_row - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" cross [...]
+<!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="Converts `ArrayRef` columns into a row-oriented format."><title>RowConverter in arrow_row - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" cross [...]
     pub(crate) fields: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/sync/struct.Arc.html" title="struct alloc::sync::Arc">Arc</a>&lt;[<a class="struct" href="struct.SortField.html" title="struct arrow_row::SortField">SortField</a>]&gt;,
     pub(crate) codecs: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="enum" href="enum.Codec.html" title="enum arrow_row::Codec">Codec</a>&gt;,
 }</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Converts [<code>ArrayRef</code>] columns into a <a href="index.html" title="mod arrow_row">row-oriented</a> format.</p>
@@ -89,46 +89,8 @@ blocks using a length of 32, this is to reduce space amplification for small str
 <p>This approach is loosely inspired by <a href="https://en.wikipedia.org/wiki/Consistent_Overhead_Byte_Stuffing">COBS</a> encoding, and chosen over more traditional
 <a href="https://en.wikipedia.org/wiki/High-Level_Data_Link_Control#Asynchronous_framing">byte stuffing</a> as it is more amenable to vectorisation, in particular AVX-256.</p>
 <h3 id="dictionary-encoding"><a href="#dictionary-encoding">Dictionary Encoding</a></h3>
-<p><a href="struct.RowConverter.html" title="struct arrow_row::RowConverter"><code>RowConverter</code></a> needs to support converting dictionary encoded arrays with unsorted, and
-potentially distinct dictionaries. One simple mechanism to avoid this would be to reverse
-the dictionary encoding, and encode the array values directly, however, this would lose
-the benefits of dictionary encoding to reduce memory and CPU consumption.</p>
-<p>As such the <a href="struct.RowConverter.html" title="struct arrow_row::RowConverter"><code>RowConverter</code></a> creates an order-preserving mapping
-for each dictionary encoded column, which allows new dictionary
-values to be added whilst preserving the sort order.</p>
-<p>A null dictionary value is encoded as <code>0_u8</code>.</p>
-<p>A non-null dictionary value is encoded as <code>1_u8</code> followed by a null-terminated byte array
-key determined by the order-preserving dictionary encoding</p>
-<div class="example-wrap"><pre class="language-text"><code>┌──────────┐                 ┌─────┐
-│  &quot;Bar&quot;   │ ───────────────▶│ 01  │
-└──────────┘                 └─────┘
-┌──────────┐                 ┌─────┬─────┐
-│&quot;Fabulous&quot;│ ───────────────▶│ 01  │ 02  │
-└──────────┘                 └─────┴─────┘
-┌──────────┐                 ┌─────┐
-│  &quot;Soup&quot;  │ ───────────────▶│ 05  │
-└──────────┘                 └─────┘
-┌──────────┐                 ┌─────┐
-│   &quot;ZZ&quot;   │ ───────────────▶│ 07  │
-└──────────┘                 └─────┘
-
-Example Order Preserving Mapping
-</code></pre></div>
-<p>Using the map above, the corresponding row format will be</p>
-<div class="example-wrap"><pre class="language-text"><code>                          ┌─────┬─────┬─────┬─────┐
-   &quot;Fabulous&quot;             │ 01  │ 01  │ 02  │ 00  │
-                          └─────┴─────┴─────┴─────┘
-
-                          ┌─────┬─────┬─────┐
-   &quot;ZZ&quot;                   │ 01  │ 07  │ 00  │
-                          └─────┴─────┴─────┘
-
-                          ┌─────┐
-    NULL                  │ 00  │
-                          └─────┘
-
-     Input                  Row Format
-</code></pre></div><h3 id="struct-encoding"><a href="#struct-encoding">Struct Encoding</a></h3>
+<p>Dictionaries are hydrated to their underlying values</p>
+<h3 id="struct-encoding"><a href="#struct-encoding">Struct Encoding</a></h3>
 <p>A null is encoded as a <code>0_u8</code>.</p>
 <p>A valid value is encoded as <code>1_u8</code> followed by the row encoding of each child.</p>
 <p>This encoding effectively flattens the schema in a depth-first fashion.</p>
@@ -187,17 +149,14 @@ nulls as <code>0xFF_u8</code> instead of <code>0_u8</code></p>
 <h3 id="reverse-column-ordering"><a href="#reverse-column-ordering">Reverse Column Ordering</a></h3>
 <p>The order of a given column can be reversed by negating the encoded bytes of non-null values</p>
 </div></details><h2 id="fields" class="fields small-section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.fields" class="structfield small-section-header"><a href="#structfield.fields" class="anchor field">§</a><code>fields: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/sync/struct.Arc.html" title="struct alloc::sync::Arc">Arc</a>&lt;[<a class="struct" href="struct.SortField.html" title="struct arrow_row::SortField">SortField</a>]&gt;</c [...]
-</div><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-RowConverter" class="impl"><a class="src rightside" href="../src/arrow_row/lib.rs.html#641-907">source</a><a href="#impl-RowConverter" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.RowConverter.html" title="struct arrow_row: [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.supports_fields" class="method"><a class="src rightside" href="../src/arrow_row/lib.rs.html#658-660">source</a><h4 class="code-header">pub fn <a href="#method.supports_fields" class="fn">supports_fields</a>(fields: &amp;[<a class="struct" href="struct.SortField.html" title="struct arrow_row::SortField">SortField</a>]) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.boo [...]
-</div></details><section id="method.supports_datatype" class="method"><a class="src rightside" href="../src/arrow_row/lib.rs.html#662-673">source</a><h4 class="code-header">pub(crate) fn <a href="#method.supports_datatype" class="fn">supports_datatype</a>(d: &amp;DataType) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section><details class="toggle method-toggle" open><summary><section id="method.convert_columns" class="method" [...]
-    &amp;mut self,
-    columns: &amp;[ArrayRef]
-) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="struct" href="struct.Rows.html" title="struct arrow_row::Rows">Rows</a>, ArrowError&gt;</h4></section></summary><div class="docblock"><p>Convert [<code>ArrayRef</code>] columns into <a href="struct.Rows.html" title="struct arrow_row::Rows"><code>Rows</code></a></p>
+</div><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-RowConverter" class="impl"><a class="src rightside" href="../src/arrow_row/lib.rs.html#531-797">source</a><a href="#impl-RowConverter" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.RowConverter.html" title="struct arrow_row: [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.supports_fields" class="method"><a class="src rightside" href="../src/arrow_row/lib.rs.html#548-550">source</a><h4 class="code-header">pub fn <a href="#method.supports_fields" class="fn">supports_fields</a>(fields: &amp;[<a class="struct" href="struct.SortField.html" title="struct arrow_row::SortField">SortField</a>]) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.boo [...]
+</div></details><section id="method.supports_datatype" class="method"><a class="src rightside" href="../src/arrow_row/lib.rs.html#552-563">source</a><h4 class="code-header">pub(crate) fn <a href="#method.supports_datatype" class="fn">supports_datatype</a>(d: &amp;DataType) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section><details class="toggle method-toggle" open><summary><section id="method.convert_columns" class="method" [...]
 <p>See <a href="struct.Row.html" title="struct arrow_row::Row"><code>Row</code></a> for information on when <a href="struct.Row.html" title="struct arrow_row::Row"><code>Row</code></a> can be compared</p>
 <h5 id="panics"><a href="#panics">Panics</a></h5>
 <p>Panics if the schema of <code>columns</code> does not match that provided to <a href="struct.RowConverter.html#method.new" title="associated function arrow_row::RowConverter::new"><code>RowConverter::new</code></a></p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.append" class="method"><a class="src rightside" href="../src/arrow_row/lib.rs.html#719-804">source</a><h4 class="code-header">pub fn <a href="#method.append" class="fn">append</a>(
-    &amp;mut self,
+</div></details><details class="toggle method-toggle" open><summary><section id="method.append" class="method"><a class="src rightside" href="../src/arrow_row/lib.rs.html#609-694">source</a><h4 class="code-header">pub fn <a href="#method.append" class="fn">append</a>(
+    &amp;self,
     rows: &amp;mut <a class="struct" href="struct.Rows.html" title="struct arrow_row::Rows">Rows</a>,
     columns: &amp;[ArrayRef]
 ) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, ArrowError&gt;</h4></section></summary><div class="docblock"><p>Convert [<code>ArrayRef</code>] columns appending to an existing <a href="struct.Rows.html" title="struct arrow_row::Rows"><code>Rows</code></a></p>
@@ -209,7 +168,7 @@ nulls as <code>0xFF_u8</code> instead of <code>0_u8</code></p>
 <li>The provided <a href="struct.Rows.html" title="struct arrow_row::Rows"><code>Rows</code></a> were not created by this <a href="struct.RowConverter.html" title="struct arrow_row::RowConverter"><code>RowConverter</code></a></li>
 </ul>
 
-<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span><span class="kw-2">mut </span>converter = RowConverter::new(<span class="macro">vec!</span>[SortField::new(DataType::Utf8)]).unwrap();
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>converter = RowConverter::new(<span class="macro">vec!</span>[SortField::new(DataType::Utf8)]).unwrap();
 <span class="kw">let </span>a1 = StringArray::from(<span class="macro">vec!</span>[<span class="string">&quot;hello&quot;</span>, <span class="string">&quot;world&quot;</span>]);
 <span class="kw">let </span>a2 = StringArray::from(<span class="macro">vec!</span>[<span class="string">&quot;a&quot;</span>, <span class="string">&quot;a&quot;</span>, <span class="string">&quot;hello&quot;</span>]);
 
@@ -220,15 +179,15 @@ converter.append(<span class="kw-2">&amp;mut </span>rows, <span class="kw-2">&am
 <span class="kw">let </span>back = converter.convert_rows(<span class="kw-2">&amp;</span>rows).unwrap();
 <span class="kw">let </span>values: Vec&lt;<span class="kw">_</span>&gt; = back[<span class="number">0</span>].as_string::&lt;i32&gt;().iter().map(Option::unwrap).collect();
 <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>values, <span class="kw-2">&amp;</span>[<span class="string">&quot;hello&quot;</span>, <span class="string">&quot;world&quot;</span>, <span class="string">&quot;a&quot;</span>, <span class="string">&quot;a&quot;</span>, <span class="string">&quot;hello&quot;</span>]);</code></pre></div>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.convert_rows" class="method"><a class="src rightside" href="../src/arrow_row/lib.rs.html#811-832">source</a><h4 class="code-header">pub fn <a href="#method.convert_rows" class="fn">convert_rows</a>&lt;'a, I&gt;(&amp;self, rows: I) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="struct" href="https://d [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.convert_rows" class="method"><a class="src rightside" href="../src/arrow_row/lib.rs.html#701-722">source</a><h4 class="code-header">pub fn <a href="#method.convert_rows" class="fn">convert_rows</a>&lt;'a, I&gt;(&amp;self, rows: I) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="struct" href="https://d [...]
     I: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a>&lt;Item = <a class="struct" href="struct.Row.html" title="struct arrow_row::Row">Row</a>&lt;'a&gt;&gt;,</span></h4></section></summary><div class="docblock"><p>Convert <a href="struct.Rows.html" title="struct arrow_row::Rows"><code>Rows</code></a> columns into [<code>ArrayRef</code>]</p>
 <h5 id="panics-2"><a href="#panics-2">Panics</a></h5>
 <p>Panics if the rows were not produced by this <a href="struct.RowConverter.html" title="struct arrow_row::RowConverter"><code>RowConverter</code></a></p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.empty_rows" class="method"><a class="src rightside" href="../src/arrow_row/lib.rs.html#862-874">source</a><h4 class="code-header">pub fn <a href="#method.empty_rows" class="fn">empty_rows</a>(&amp;self, row_capacity: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>, data_capacity: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.empty_rows" class="method"><a class="src rightside" href="../src/arrow_row/lib.rs.html#752-764">source</a><h4 class="code-header">pub fn <a href="#method.empty_rows" class="fn">empty_rows</a>(&amp;self, row_capacity: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>, data_capacity: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive [...]
 a total length of <code>data_capacity</code></p>
 <p>This can be used to buffer a selection of <a href="struct.Row.html" title="struct arrow_row::Row"><code>Row</code></a></p>
 
-<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span><span class="kw-2">mut </span>converter = RowConverter::new(<span class="macro">vec!</span>[SortField::new(DataType::Utf8)]).unwrap();
+<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>converter = RowConverter::new(<span class="macro">vec!</span>[SortField::new(DataType::Utf8)]).unwrap();
 <span class="kw">let </span>array = StringArray::from(<span class="macro">vec!</span>[<span class="string">&quot;hello&quot;</span>, <span class="string">&quot;world&quot;</span>, <span class="string">&quot;a&quot;</span>, <span class="string">&quot;a&quot;</span>, <span class="string">&quot;hello&quot;</span>]);
 
 <span class="comment">// Convert to row format and deduplicate
@@ -242,17 +201,17 @@ converted.iter().filter(|row| dedup.insert(<span class="kw-2">*</span>row)).for_
 </span><span class="kw">let </span>distinct = converter.convert_rows(<span class="kw-2">&amp;</span>distinct_rows).unwrap();
 <span class="kw">let </span>values: Vec&lt;<span class="kw">_</span>&gt; = distinct[<span class="number">0</span>].as_string::&lt;i32&gt;().iter().map(Option::unwrap).collect();
 <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>values, <span class="kw-2">&amp;</span>[<span class="string">&quot;hello&quot;</span>, <span class="string">&quot;world&quot;</span>, <span class="string">&quot;a&quot;</span>]);</code></pre></div>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.convert_raw" class="method"><a class="src rightside" href="../src/arrow_row/lib.rs.html#881-891">source</a><h4 class="code-header">pub(crate) unsafe fn <a href="#method.convert_raw" class="fn">convert_raw</a>(
+</div></details><details class="toggle method-toggle" open><summary><section id="method.convert_raw" class="method"><a class="src rightside" href="../src/arrow_row/lib.rs.html#771-781">source</a><h4 class="code-header">pub(crate) unsafe fn <a href="#method.convert_raw" class="fn">convert_raw</a>(
     &amp;self,
     rows: &amp;mut [&amp;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>]],
     validate_utf8: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>
 ) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;ArrayRef&gt;, ArrowError&gt;</h4></section></summary><div class="docblock"><p>Convert raw bytes into [<code>ArrayRef</code>]</p>
 <h5 id="safety"><a href="#safety">Safety</a></h5>
 <p><code>rows</code> must contain valid data for this <a href="struct.RowConverter.html" title="struct arrow_row::RowConverter"><code>RowConverter</code></a></p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.parser" class="method"><a class="src rightside" href="../src/arrow_row/lib.rs.html#894-896">source</a><h4 class="code-header">pub fn <a href="#method.parser" class="fn">parser</a>(&amp;self) -&gt; <a class="struct" href="struct.RowParser.html" title="struct arrow_row::RowParser">RowParser</a></h4></section></summary><div class="docblock"><p>Returns a <a href="struct.RowParser.html" title="struct arrow [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.size" class="method"><a class="src rightside" href="../src/arrow_row/lib.rs.html#901-906">source</a><h4 class="code-header">pub fn <a href="#method.size" class="fn">size</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class="docblock"><p>Returns the size of this instance in bytes</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.parser" class="method"><a class="src rightside" href="../src/arrow_row/lib.rs.html#784-786">source</a><h4 class="code-header">pub fn <a href="#method.parser" class="fn">parser</a>(&amp;self) -&gt; <a class="struct" href="struct.RowParser.html" title="struct arrow_row::RowParser">RowParser</a></h4></section></summary><div class="docblock"><p>Returns a <a href="struct.RowParser.html" title="struct arrow [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.size" class="method"><a class="src rightside" href="../src/arrow_row/lib.rs.html#791-796">source</a><h4 class="code-header">pub fn <a href="#method.size" class="fn">size</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class="docblock"><p>Returns the size of this instance in bytes</p>
 <p>Includes the size of <code>Self</code>.</p>
-</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-RowConverter" class="impl"><a class="src rightside" href="../src/arrow_row/lib.rs.html#418">source</a><a href="#impl-Debug-for-RowConverter" class="anchor">§</a><h3 class="code-header">impl <a [...]
+</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-RowConverter" class="impl"><a class="src rightside" href="../src/arrow_row/lib.rs.html#366">source</a><a href="#impl-Debug-for-RowConverter" class="anchor">§</a><h3 class="code-header">impl <a [...]
     T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></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#136">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a hre [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https: [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href [...]
diff --git a/arrow_row/struct.RowParser.html b/arrow_row/struct.RowParser.html
index 33ca9b6927..2f257eb2df 100644
--- a/arrow_row/struct.RowParser.html
+++ b/arrow_row/struct.RowParser.html
@@ -1,10 +1,10 @@
-<!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="A `RowParser` can be created from a `RowConverter` and used to parse bytes to `Row`"><title>RowParser in arrow_row - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font [...]
+<!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="A `RowParser` can be created from a `RowConverter` and used to parse bytes to `Row`"><title>RowParser in arrow_row - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font [...]
     pub(crate) config: <a class="struct" href="struct.RowConfig.html" title="struct arrow_row::RowConfig">RowConfig</a>,
 }</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>A <a href="struct.RowParser.html" title="struct arrow_row::RowParser"><code>RowParser</code></a> can be created from a <a href="struct.RowConverter.html" title="struct arrow_row::RowConverter"><code>RowConverter</code></a> and used to parse bytes to <a href="struct.Row.html" title="struct arrow_row::Row"><code>Row</code></a></p>
-</div></details><h2 id="fields" class="fields small-section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.config" class="structfield small-section-header"><a href="#structfield.config" class="anchor field">§</a><code>config: <a class="struct" href="struct.RowConfig.html" title="struct arrow_row::RowConfig">RowConfig</a></code></span><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><di [...]
+</div></details><h2 id="fields" class="fields small-section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.config" class="structfield small-section-header"><a href="#structfield.config" class="anchor field">§</a><code>config: <a class="struct" href="struct.RowConfig.html" title="struct arrow_row::RowConfig">RowConfig</a></code></span><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><di [...]
 <p><code>bytes</code> must be a <a href="struct.Row.html" title="struct arrow_row::Row"><code>Row</code></a> produced by the <a href="struct.RowConverter.html" title="struct arrow_row::RowConverter"><code>RowConverter</code></a> associated with
 this <a href="struct.RowParser.html" title="struct arrow_row::RowParser"><code>RowParser</code></a>, otherwise subsequent operations with the produced <a href="struct.Row.html" title="struct arrow_row::Row"><code>Row</code></a> may panic</p>
-</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-RowParser" class="impl"><a class="src rightside" href="../src/arrow_row/lib.rs.html#910">source</a><a href="#impl-Debug-for-RowParser" class="anchor">§</a><h3 class="code-header">impl <a class [...]
+</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-RowParser" class="impl"><a class="src rightside" href="../src/arrow_row/lib.rs.html#800">source</a><a href="#impl-Debug-for-RowParser" class="anchor">§</a><h3 class="code-header">impl <a class [...]
     T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></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#136">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a hre [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https: [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href [...]
diff --git a/arrow_row/struct.Rows.html b/arrow_row/struct.Rows.html
index ff6690ba84..ddad12375a 100644
--- a/arrow_row/struct.Rows.html
+++ b/arrow_row/struct.Rows.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="A row-oriented representation of arrow data, that is normalized for comparison."><title>Rows in arrow_row - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="f [...]
+<!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="A row-oriented representation of arrow data, that is normalized for comparison."><title>Rows in arrow_row - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="f [...]
     pub(crate) buffer: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>&gt;,
     pub(crate) offsets: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>&gt;,
     pub(crate) config: <a class="struct" href="struct.RowConfig.html" title="struct arrow_row::RowConfig">RowConfig</a>,
@@ -7,14 +7,14 @@
 </div></details><h2 id="fields" class="fields small-section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.buffer" class="structfield small-section-header"><a href="#structfield.buffer" class="anchor field">§</a><code>buffer: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>&gt;</code></span [...]
 </div><span id="structfield.offsets" class="structfield small-section-header"><a href="#structfield.offsets" class="anchor field">§</a><code>offsets: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>&gt;</code></span><div class="docblock"><p>Row <code>i</code> has data <code>&amp;buffer[offsets[i]..offsets[i+1]]</code></p>
 </div><span id="structfield.config" class="structfield small-section-header"><a href="#structfield.config" class="anchor field">§</a><code>config: <a class="struct" href="struct.RowConfig.html" title="struct arrow_row::RowConfig">RowConfig</a></code></span><div class="docblock"><p>The config for these rows</p>
-</div><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Rows" class="impl"><a class="src rightside" href="../src/arrow_row/lib.rs.html#959-1006">source</a><a href="#impl-Rows" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.Rows.html" title="struct arrow_row::Rows">Rows</a></h3></s [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.row" class="method"><a class="src rightside" href="../src/arrow_row/lib.rs.html#972-979">source</a><h4 class="code-header">pub fn <a href="#method.row" class="fn">row</a>(&amp;self, row: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -&gt; <a class="struct" href="struct.Row.html" title="struct arrow_row::Row">Row</a>&lt;'_&gt;</h4></section></summary> [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.clear" class="method"><a class="src rightside" href="../src/arrow_row/lib.rs.html#982-985">source</a><h4 class="code-header">pub fn <a href="#method.clear" class="fn">clear</a>(&amp;mut self)</h4></section></summary><div class="docblock"><p>Sets the length of this <a href="struct.Rows.html" title="struct arrow_row::Rows"><code>Rows</code></a> to 0</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.num_rows" class="method"><a class="src rightside" href="../src/arrow_row/lib.rs.html#988-990">source</a><h4 class="code-header">pub fn <a href="#method.num_rows" class="fn">num_rows</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class="docblock"><p>Returns the number of <a href="struct.Row.html" title=" [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.iter" class="method"><a class="src rightside" href="../src/arrow_row/lib.rs.html#993-995">source</a><h4 class="code-header">pub fn <a href="#method.iter" class="fn">iter</a>(&amp;self) -&gt; <a class="struct" href="struct.RowsIter.html" title="struct arrow_row::RowsIter">RowsIter</a>&lt;'_&gt; <a href="#" class="tooltip" data-notable-ty="RowsIter&lt;&#39;_&gt;">ⓘ</a></h4></section></summary><div class [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.size" class="method"><a class="src rightside" href="../src/arrow_row/lib.rs.html#1000-1005">source</a><h4 class="code-header">pub fn <a href="#method.size" class="fn">size</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class="docblock"><p>Returns the size of this instance in bytes</p>
+</div><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Rows" class="impl"><a class="src rightside" href="../src/arrow_row/lib.rs.html#849-896">source</a><a href="#impl-Rows" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.Rows.html" title="struct arrow_row::Rows">Rows</a></h3></se [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.row" class="method"><a class="src rightside" href="../src/arrow_row/lib.rs.html#862-869">source</a><h4 class="code-header">pub fn <a href="#method.row" class="fn">row</a>(&amp;self, row: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -&gt; <a class="struct" href="struct.Row.html" title="struct arrow_row::Row">Row</a>&lt;'_&gt;</h4></section></summary> [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.clear" class="method"><a class="src rightside" href="../src/arrow_row/lib.rs.html#872-875">source</a><h4 class="code-header">pub fn <a href="#method.clear" class="fn">clear</a>(&amp;mut self)</h4></section></summary><div class="docblock"><p>Sets the length of this <a href="struct.Rows.html" title="struct arrow_row::Rows"><code>Rows</code></a> to 0</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.num_rows" class="method"><a class="src rightside" href="../src/arrow_row/lib.rs.html#878-880">source</a><h4 class="code-header">pub fn <a href="#method.num_rows" class="fn">num_rows</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class="docblock"><p>Returns the number of <a href="struct.Row.html" title=" [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.iter" class="method"><a class="src rightside" href="../src/arrow_row/lib.rs.html#883-885">source</a><h4 class="code-header">pub fn <a href="#method.iter" class="fn">iter</a>(&amp;self) -&gt; <a class="struct" href="struct.RowsIter.html" title="struct arrow_row::RowsIter">RowsIter</a>&lt;'_&gt; <a href="#" class="tooltip" data-notable-ty="RowsIter&lt;&#39;_&gt;">ⓘ</a></h4></section></summary><div class [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.size" class="method"><a class="src rightside" href="../src/arrow_row/lib.rs.html#890-895">source</a><h4 class="code-header">pub fn <a href="#method.size" class="fn">size</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class="docblock"><p>Returns the size of this instance in bytes</p>
 <p>Includes the size of <code>Self</code>.</p>
-</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-Rows" class="impl"><a class="src rightside" href="../src/arrow_row/lib.rs.html#949">source</a><a href="#impl-Debug-for-Rows" class="anchor">§</a><h3 class="code-header">impl <a class="trait" h [...]
+</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-Rows" class="impl"><a class="src rightside" href="../src/arrow_row/lib.rs.html#839">source</a><a href="#impl-Debug-for-Rows" class="anchor">§</a><h3 class="code-header">impl <a class="trait" h [...]
     T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></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#136">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a hre [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https: [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href [...]
diff --git a/arrow_row/struct.RowsIter.html b/arrow_row/struct.RowsIter.html
index 1aab5aafc5..02a0eb02c0 100644
--- a/arrow_row/struct.RowsIter.html
+++ b/arrow_row/struct.RowsIter.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="An iterator over `Rows`"><title>RowsIter in arrow_row - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/FiraSan [...]
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="An iterator over `Rows`"><title>RowsIter in arrow_row - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/FiraSan [...]
     pub(crate) rows: &amp;'a <a class="struct" href="struct.Rows.html" title="struct arrow_row::Rows">Rows</a>,
     pub(crate) start: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>,
     pub(crate) end: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>,
 }</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>An iterator over <a href="struct.Rows.html" title="struct arrow_row::Rows"><code>Rows</code></a></p>
-</div></details><h2 id="fields" class="fields small-section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.rows" class="structfield small-section-header"><a href="#structfield.rows" class="anchor field">§</a><code>rows: &amp;'a <a class="struct" href="struct.Rows.html" title="struct arrow_row::Rows">Rows</a></code></span><span id="structfield.start" class="structfield small-section-header"><a href="#structfield.start" class="anchor field">§</a><code>start: [...]
+</div></details><h2 id="fields" class="fields small-section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.rows" class="structfield small-section-header"><a href="#structfield.rows" class="anchor field">§</a><code>rows: &amp;'a <a class="struct" href="struct.Rows.html" title="struct arrow_row::Rows">Rows</a></code></span><span id="structfield.start" class="structfield small-section-header"><a href="#structfield.start" class="anchor field">§</a><code>start: [...]
     Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
     F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(B, Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -&gt; R,
     R: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Try.html" title="trait core::ops::try_trait::Try">Try</a>&lt;Output = B&gt;,</span></h4></section></summary><div class='docblock'>This is the reverse version of <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.try_fold" title="method core::iter::traits::iterator::Iterator::try_fold"><code>Iterator::try_fold()</code></a>: it takes
@@ -12,7 +12,7 @@ elements starting from the back of the iterator. <a href="https://doc.rust-lang.
     F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(B, Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -&gt; B,</span></h4></section></summary><div class='docblock'>An iterator method that reduces the iterator’s elements to a single,
 final value, starting from the back. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/double_ended/trait.DoubleEndedIterator.html#method.rfold">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.rfind" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.27.0">1.27.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/iter/traits/double_ended.rs.html#355-3 [...]
     Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
-    P: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(&amp;Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,</span></h4></section></summ [...]
+    P: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(&amp;Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,</span></h4></section></summ [...]
     &amp;mut self
 ) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;[Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="type core::iter::traits::iterator::Iterator::Item">Item</a>; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.array.html">N</a>], <a class="struct" href="https://doc.rust-lang.o [...]
     Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h4></section></summary><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>iter_next_chunk</code>)</span></div></span><div class='docblock'>Advances the iterator and returns an array containing the next <code>N</code> values. <a href="https://doc.rust-lang.org/ [...]
diff --git a/arrow_row/struct.SortField.html b/arrow_row/struct.SortField.html
index e86075f8ff..d98204a9f6 100644
--- a/arrow_row/struct.SortField.html
+++ b/arrow_row/struct.SortField.html
@@ -1,27 +1,16 @@
-<!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="Configure the data type and sort order for a given column"><title>SortField in arrow_row - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crosso [...]
+<!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="Configure the data type and sort order for a given column"><title>SortField in arrow_row - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crosso [...]
     pub(crate) options: SortOptions,
     pub(crate) data_type: DataType,
-    pub(crate) preserve_dictionaries: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,
 }</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Configure the data type and sort order for a given column</p>
 </div></details><h2 id="fields" class="fields small-section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.options" class="structfield small-section-header"><a href="#structfield.options" class="anchor field">§</a><code>options: SortOptions</code></span><div class="docblock"><p>Sort options</p>
 </div><span id="structfield.data_type" class="structfield small-section-header"><a href="#structfield.data_type" class="anchor field">§</a><code>data_type: DataType</code></span><div class="docblock"><p>Data type</p>
-</div><span id="structfield.preserve_dictionaries" class="structfield small-section-header"><a href="#structfield.preserve_dictionaries" class="anchor field">§</a><code>preserve_dictionaries: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></code></span><div class="docblock"><p>Preserve dictionaries</p>
-</div><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-SortField" class="impl"><a class="src rightside" href="../src/arrow_row/lib.rs.html#598-639">source</a><a href="#impl-SortField" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.SortField.html" title="struct arrow_row::SortFiel [...]
-</div></details><details class="toggle method-toggle" open><summary><section id="method.new_with_options" class="method"><a class="src rightside" href="../src/arrow_row/lib.rs.html#605-611">source</a><h4 class="code-header">pub fn <a href="#method.new_with_options" class="fn">new_with_options</a>(data_type: DataType, options: SortOptions) -&gt; Self</h4></section></summary><div class="docblock"><p>Create a new column with the given data type and [<code>SortOptions</code>]</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.preserve_dictionaries" class="method"><a class="src rightside" href="../src/arrow_row/lib.rs.html#625-630">source</a><h4 class="code-header">pub fn <a href="#method.preserve_dictionaries" class="fn">preserve_dictionaries</a>(self, preserve_dictionaries: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>) -&gt; Self</h4></section></summary><div class="docbloc [...]
-<p>However, this process requires maintaining and incrementally updating
-an order-preserving mapping of dictionary values. This is relatively expensive
-computationally but reduces the size of the encoded rows, minimising memory
-usage and potentially yielding faster comparisons.</p>
-<p>Some applications may wish to instead trade-off space efficiency, for improved
-encoding performance, by instead encoding dictionary values directly</p>
-<p>When <code>preserve_dictionaries</code> is true, fields will instead be encoded as their
-underlying value, reversing any dictionary encoding</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.size" class="method"><a class="src rightside" href="../src/arrow_row/lib.rs.html#635-638">source</a><h4 class="code-header">pub fn <a href="#method.size" class="fn">size</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class="docblock"><p>Return size of this instance in bytes.</p>
+</div><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-SortField" class="impl"><a class="src rightside" href="../src/arrow_row/lib.rs.html#511-529">source</a><a href="#impl-SortField" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.SortField.html" title="struct arrow_row::SortFiel [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.new_with_options" class="method"><a class="src rightside" href="../src/arrow_row/lib.rs.html#518-520">source</a><h4 class="code-header">pub fn <a href="#method.new_with_options" class="fn">new_with_options</a>(data_type: DataType, options: SortOptions) -&gt; Self</h4></section></summary><div class="docblock"><p>Create a new column with the given data type and [<code>SortOptions</code>]</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.size" class="method"><a class="src rightside" href="../src/arrow_row/lib.rs.html#525-528">source</a><h4 class="code-header">pub fn <a href="#method.size" class="fn">size</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class="docblock"><p>Return size of this instance in bytes.</p>
 <p>Includes the size of <code>Self</code>.</p>
-</div></details></div></details></div><h2 id="trait-implementations" class="small-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-SortField" class="impl"><a class="src rightside" href="../src/arrow_row/lib.rs.html#588">source</a><a href="#impl-Clone-for-SortField" class="anchor">§</a><h3 class="code-header">impl <a class [...]
+</div></details></div></details></div><h2 id="trait-implementations" class="small-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-SortField" class="impl"><a class="src rightside" href="../src/arrow_row/lib.rs.html#503">source</a><a href="#impl-Clone-for-SortField" class="anchor">§</a><h3 class="code-header">impl <a class [...]
 by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#231">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class= [...]
-sufficient, and should not be overridden without very good reason.</div></details></div></details><section id="impl-Eq-for-SortField" class="impl"><a class="src rightside" href="../src/arrow_row/lib.rs.html#588">source</a><a href="#impl-Eq-for-SortField" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="struct" href="struct.SortField.html" title="struct arrow_r [...]
+sufficient, and should not be overridden without very good reason.</div></details></div></details><section id="impl-Eq-for-SortField" class="impl"><a class="src rightside" href="../src/arrow_row/lib.rs.html#503">source</a><a href="#impl-Eq-for-SortField" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="struct" href="struct.SortField.html" title="struct arrow_r [...]
     T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></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#136">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a hre [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https: [...]
     T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href [...]
diff --git a/implementors/arrow_flight/gen/flight_service_server/trait.FlightService.js b/implementors/arrow_flight/gen/flight_service_server/trait.FlightService.js
index 9bef4fa3ae..df82a2b4a3 100644
--- a/implementors/arrow_flight/gen/flight_service_server/trait.FlightService.js
+++ b/implementors/arrow_flight/gen/flight_service_server/trait.FlightService.js
@@ -1,4 +1,4 @@
 (function() {var implementors = {
 "arrow_flight":[],
-"arrow_integration_testing":[["impl FlightService for <a class=\"struct\" href=\"arrow_integration_testing/flight_server_scenarios/auth_basic_proto/struct.AuthBasicProtoScenarioImpl.html\" title=\"struct arrow_integration_testing::flight_server_scenarios::auth_basic_proto::AuthBasicProtoScenarioImpl\">AuthBasicProtoScenarioImpl</a>"],["impl FlightService for <a class=\"struct\" href=\"arrow_integration_testing/flight_server_scenarios/integration_test/struct.FlightServiceImpl.html\" title [...]
+"arrow_integration_testing":[["impl <a class=\"trait\" href=\"arrow_flight/gen/flight_service_server/trait.FlightService.html\" title=\"trait arrow_flight::gen::flight_service_server::FlightService\">FlightService</a> for <a class=\"struct\" href=\"arrow_integration_testing/flight_server_scenarios/auth_basic_proto/struct.AuthBasicProtoScenarioImpl.html\" title=\"struct arrow_integration_testing::flight_server_scenarios::auth_basic_proto::AuthBasicProtoScenarioImpl\">AuthBasicProtoScenari [...]
 };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/implementors/core/clone/trait.Clone.js b/implementors/core/clone/trait.Clone.js
index ef1932a57a..dfd0cd5b15 100644
--- a/implementors/core/clone/trait.Clone.js
+++ b/implementors/core/clone/trait.Clone.js
@@ -13,7 +13,7 @@
 "arrow_json":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"enum\" href=\"arrow_json/reader/schema/enum.InferredType.html\" title=\"enum arrow_json::reader::schema::InferredType\">InferredType</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"enum\" href=\"arrow_json/ [...]
 "arrow_json_integration_test":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"enum\" href=\"arrow_json_integration_test/enum.Mode.html\" title=\"enum arrow_json_integration_test::Mode\">Mode</a>"]],
 "arrow_ord":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"arrow_ord/partition/struct.Partitions.html\" title=\"struct arrow_ord::partition::Partitions\">Partitions</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"enum\" href=\"arrow_ord/cmp/enum.Op.h [...]
-"arrow_row":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"arrow_row/struct.RowConfig.html\" title=\"struct arrow_row::RowConfig\">RowConfig</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"arrow_row/struct.OwnedRow.html\" title=\"stru [...]
+"arrow_row":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"arrow_row/struct.RowConfig.html\" title=\"struct arrow_row::RowConfig\">RowConfig</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"arrow_row/struct.OwnedRow.html\" title=\"stru [...]
 "arrow_schema":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"enum\" href=\"arrow_schema/datatype/enum.DataType.html\" title=\"enum arrow_schema::datatype::DataType\">DataType</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"enum\" href=\"arrow_schema/datatype/enum.T [...]
 "arrow_select":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"arrow_select/take/struct.TakeOptions.html\" title=\"struct arrow_select::take::TakeOptions\">TakeOptions</a>"]],
 "flight_sql_client":[["impl&lt;K: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a>, V: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a>&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"flight_sql_cli [...]
diff --git a/implementors/core/cmp/trait.Eq.js b/implementors/core/cmp/trait.Eq.js
index 45ed351877..4f956b398f 100644
--- a/implementors/core/cmp/trait.Eq.js
+++ b/implementors/core/cmp/trait.Eq.js
@@ -6,7 +6,7 @@
 "arrow_flight":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"enum\" href=\"arrow_flight/sql/gen/enum.SupportedSqlGrammar.html\" title=\"enum arrow_flight::sql::gen::SupportedSqlGrammar\">SupportedSqlGrammar</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"enum\" href=\"arrow_flight/sql/gen/e [...]
 "arrow_ipc":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"struct\" href=\"arrow_ipc/gen/SparseTensor/struct.SparseTensorIndex.html\" title=\"struct arrow_ipc::gen::SparseTensor::SparseTensorIndex\">SparseTensorIndex</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"struct\" href=\"arrow_ipc/g [...]
 "arrow_json":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"enum\" href=\"arrow_json/reader/tape/enum.TapeElement.html\" title=\"enum arrow_json::reader::tape::TapeElement\">TapeElement</a>"]],
-"arrow_row":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"struct\" href=\"arrow_row/interner/struct.Interned.html\" title=\"struct arrow_row::interner::Interned\">Interned</a>"],["impl&lt;'a&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"struct\" href=\"arrow_row/struct.Row.html\" title=\"struct ar [...]
+"arrow_row":[["impl&lt;'a&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"struct\" href=\"arrow_row/struct.Row.html\" title=\"struct arrow_row::Row\">Row</a>&lt;'a&gt;"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"struct\" href=\"arrow_row/struct.SortField.html\" title=\"struct arrow_row::SortField [...]
 "arrow_schema":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"struct\" href=\"arrow_schema/schema/struct.Schema.html\" title=\"struct arrow_schema::schema::Schema\">Schema</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"enum\" href=\"arrow_schema/datatype/enum.IntervalUnit.html\" title=\"enu [...]
 "parquet":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"struct\" href=\"parquet/arrow/arrow_writer/levels/struct.LevelInfo.html\" title=\"struct parquet::arrow::arrow_writer::levels::LevelInfo\">LevelInfo</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"struct\" href=\"parquet/format/struct. [...]
 "parquet_rewrite":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"enum\" href=\"parquet_rewrite/enum.CompressionArgs.html\" title=\"enum parquet_rewrite::CompressionArgs\">CompressionArgs</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"enum\" href=\"parquet_rewrite/enum.EnabledStatisticsArgs. [...]
diff --git a/implementors/core/cmp/trait.PartialEq.js b/implementors/core/cmp/trait.PartialEq.js
index 31287b11f2..873ce3bcbf 100644
--- a/implementors/core/cmp/trait.PartialEq.js
+++ b/implementors/core/cmp/trait.PartialEq.js
@@ -6,7 +6,7 @@
 "arrow_flight":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a>&lt;<a class=\"struct\" href=\"arrow_flight/sql/gen/struct.ActionCreatePreparedSubstraitPlanRequest.html\" title=\"struct arrow_flight::sql::gen::ActionCreatePreparedSubstraitPlanRequest\">ActionCreatePreparedSubstraitPlanRequest</a>&gt; for <a class=\"struct\" href=\"arrow_flight/sql/gen/struct.ActionCreatePreparedSubstraitP [...]
 "arrow_ipc":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a>&lt;<a class=\"struct\" href=\"arrow_ipc/gen/File/struct.Block.html\" title=\"struct arrow_ipc::gen::File::Block\">Block</a>&gt; for <a class=\"struct\" href=\"arrow_ipc/gen/File/struct.Block.html\" title=\"struct arrow_ipc::gen::File::Block\">Block</a>"],["impl&lt;'a&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/night [...]
 "arrow_json":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a>&lt;<a class=\"enum\" href=\"arrow_json/reader/tape/enum.TapeElement.html\" title=\"enum arrow_json::reader::tape::TapeElement\">TapeElement</a>&gt; for <a class=\"enum\" href=\"arrow_json/reader/tape/enum.TapeElement.html\" title=\"enum arrow_json::reader::tape::TapeElement\">TapeElement</a>"]],
-"arrow_row":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a>&lt;<a class=\"struct\" href=\"arrow_row/interner/struct.Interned.html\" title=\"struct arrow_row::interner::Interned\">Interned</a>&gt; for <a class=\"struct\" href=\"arrow_row/interner/struct.Interned.html\" title=\"struct arrow_row::interner::Interned\">Interned</a>"],["impl&lt;'a&gt; <a class=\"trait\" href=\"https://doc.rus [...]
+"arrow_row":[["impl&lt;'a&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a>&lt;<a class=\"struct\" href=\"arrow_row/struct.Row.html\" title=\"struct arrow_row::Row\">Row</a>&lt;'a&gt;&gt; for <a class=\"struct\" href=\"arrow_row/struct.Row.html\" title=\"struct arrow_row::Row\">Row</a>&lt;'a&gt;"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html [...]
 "arrow_schema":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a>&lt;<a class=\"struct\" href=\"arrow_schema/fields/struct.UnionFields.html\" title=\"struct arrow_schema::fields::UnionFields\">UnionFields</a>&gt; for <a class=\"struct\" href=\"arrow_schema/fields/struct.UnionFields.html\" title=\"struct arrow_schema::fields::UnionFields\">UnionFields</a>"],["impl <a class=\"trait\" href=\" [...]
 "parquet":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a>&lt;<a class=\"enum\" href=\"parquet/data_type/enum.Decimal.html\" title=\"enum parquet::data_type::Decimal\">Decimal</a>&gt; for <a class=\"enum\" href=\"parquet/data_type/enum.Decimal.html\" title=\"enum parquet::data_type::Decimal\">Decimal</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait. [...]
 "parquet_derive":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a>&lt;<a class=\"enum\" href=\"parquet_derive/parquet_field/enum.ThirdPartyType.html\" title=\"enum parquet_derive::parquet_field::ThirdPartyType\">ThirdPartyType</a>&gt; for <a class=\"enum\" href=\"parquet_derive/parquet_field/enum.ThirdPartyType.html\" title=\"enum parquet_derive::parquet_field::ThirdPartyType\">ThirdParty [...]
diff --git a/implementors/core/default/trait.Default.js b/implementors/core/default/trait.Default.js
index 2bf595736f..9ed2bdcca3 100644
--- a/implementors/core/default/trait.Default.js
+++ b/implementors/core/default/trait.Default.js
@@ -8,7 +8,6 @@
 "arrow_integration_testing":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/default/trait.Default.html\" title=\"trait core::default::Default\">Default</a> for <a class=\"struct\" href=\"arrow_integration_testing/flight_server_scenarios/integration_test/struct.FlightServiceImpl.html\" title=\"struct arrow_integration_testing::flight_server_scenarios::integration_test::FlightServiceImpl\">FlightServiceImpl</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-la [...]
 "arrow_ipc":[["impl&lt;'a&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/default/trait.Default.html\" title=\"trait core::default::Default\">Default</a> for <a class=\"struct\" href=\"arrow_ipc/gen/Schema/struct.LargeBinaryArgs.html\" title=\"struct arrow_ipc::gen::Schema::LargeBinaryArgs\">LargeBinaryArgs</a>"],["impl&lt;'a&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/default/trait.Default.html\" title=\"trait core::default::Default\">Defaul [...]
 "arrow_json":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/default/trait.Default.html\" title=\"trait core::default::Default\">Default</a> for <a class=\"struct\" href=\"arrow_json/writer/struct.JsonArray.html\" title=\"struct arrow_json::writer::JsonArray\">JsonArray</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/default/trait.Default.html\" title=\"trait core::default::Default\">Default</a> for <a class=\"struct\" href=\"arrow_j [...]
-"arrow_row":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/default/trait.Default.html\" title=\"trait core::default::Default\">Default</a> for <a class=\"struct\" href=\"arrow_row/interner/struct.InternBuffer.html\" title=\"struct arrow_row::interner::InternBuffer\">InternBuffer</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/default/trait.Default.html\" title=\"trait core::default::Default\">Default</a> for <a class=\"struct\" href [...]
 "arrow_schema":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/default/trait.Default.html\" title=\"trait core::default::Default\">Default</a> for <a class=\"struct\" href=\"arrow_schema/struct.SortOptions.html\" title=\"struct arrow_schema::SortOptions\">SortOptions</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/default/trait.Default.html\" title=\"trait core::default::Default\">Default</a> for <a class=\"struct\" href=\"arrow_sche [...]
 "arrow_select":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/default/trait.Default.html\" title=\"trait core::default::Default\">Default</a> for <a class=\"struct\" href=\"arrow_select/take/struct.TakeOptions.html\" title=\"struct arrow_select::take::TakeOptions\">TakeOptions</a>"]],
 "parquet":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/default/trait.Default.html\" title=\"trait core::default::Default\">Default</a> for <a class=\"struct\" href=\"parquet/file/metadata/struct.ColumnIndexBuilder.html\" title=\"struct parquet::file::metadata::ColumnIndexBuilder\">ColumnIndexBuilder</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/default/trait.Default.html\" title=\"trait core::default::Default\">Default</a> for < [...]
diff --git a/implementors/core/fmt/trait.Debug.js b/implementors/core/fmt/trait.Debug.js
index 02e509943d..984c575152 100644
--- a/implementors/core/fmt/trait.Debug.js
+++ b/implementors/core/fmt/trait.Debug.js
@@ -14,7 +14,7 @@
 "arrow_json":[["impl&lt;R&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"arrow_json/reader/struct.Reader.html\" title=\"struct arrow_json::reader::Reader\">Reader</a>&lt;R&gt;"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"arrow_json/writer/struct.J [...]
 "arrow_json_integration_test":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"arrow_json_integration_test/enum.Mode.html\" title=\"enum arrow_json_integration_test::Mode\">Mode</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"arrow_json_integrati [...]
 "arrow_ord":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"arrow_ord/cmp/enum.Op.html\" title=\"enum arrow_ord::cmp::Op\">Op</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"arrow_ord/partition/struct.Partitions.html\" title=\"struct arrow_ord:: [...]
-"arrow_row":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"arrow_row/struct.RowConfig.html\" title=\"struct arrow_row::RowConfig\">RowConfig</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"arrow_row/struct.RowParser.html\" title=\"struct arro [...]
+"arrow_row":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"arrow_row/struct.RowConfig.html\" title=\"struct arrow_row::RowConfig\">RowConfig</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"arrow_row/struct.RowParser.html\" title=\"struct arro [...]
 "arrow_schema":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"arrow_schema/datatype/enum.UnionMode.html\" title=\"enum arrow_schema::datatype::UnionMode\">UnionMode</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"arrow_schema/schema/struct.Sche [...]
 "arrow_select":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"arrow_select/take/struct.TakeOptions.html\" title=\"struct arrow_select::take::TakeOptions\">TakeOptions</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"arrow_select/filter/enum.Iter [...]
 "arrow_string":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"arrow_string/like/enum.Op.html\" title=\"enum arrow_string::like::Op\">Op</a>"]],
diff --git a/implementors/core/hash/trait.Hash.js b/implementors/core/hash/trait.Hash.js
index 34c73852cb..2f247fe554 100644
--- a/implementors/core/hash/trait.Hash.js
+++ b/implementors/core/hash/trait.Hash.js
@@ -4,7 +4,7 @@
 "arrow_cast":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html\" title=\"trait core::hash::Hash\">Hash</a> for <a class=\"enum\" href=\"arrow_cast/display/enum.DurationFormat.html\" title=\"enum arrow_cast::display::DurationFormat\">DurationFormat</a>"],["impl&lt;'a&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html\" title=\"trait core::hash::Hash\">Hash</a> for <a class=\"struct\" href=\"arrow_cast/cast/ [...]
 "arrow_flight":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html\" title=\"trait core::hash::Hash\">Hash</a> for <a class=\"enum\" href=\"arrow_flight/gen/flight_descriptor/enum.DescriptorType.html\" title=\"enum arrow_flight::gen::flight_descriptor::DescriptorType\">DescriptorType</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html\" title=\"trait core::hash::Hash\">Hash</a> for <a class=\"enum\"  [...]
 "arrow_ipc":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html\" title=\"trait core::hash::Hash\">Hash</a> for <a class=\"struct\" href=\"arrow_ipc/gen/SparseTensor/struct.SparseMatrixCompressedAxis.html\" title=\"struct arrow_ipc::gen::SparseTensor::SparseMatrixCompressedAxis\">SparseMatrixCompressedAxis</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html\" title=\"trait core::hash::Hash\">Hash</a> [...]
-"arrow_row":[["impl&lt;'a&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html\" title=\"trait core::hash::Hash\">Hash</a> for <a class=\"struct\" href=\"arrow_row/struct.Row.html\" title=\"struct arrow_row::Row\">Row</a>&lt;'a&gt;"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html\" title=\"trait core::hash::Hash\">Hash</a> for <a class=\"struct\" href=\"arrow_row/struct.OwnedRow.html\" title=\"struct arrow [...]
+"arrow_row":[["impl&lt;'a&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html\" title=\"trait core::hash::Hash\">Hash</a> for <a class=\"struct\" href=\"arrow_row/struct.Row.html\" title=\"struct arrow_row::Row\">Row</a>&lt;'a&gt;"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html\" title=\"trait core::hash::Hash\">Hash</a> for <a class=\"struct\" href=\"arrow_row/struct.OwnedRow.html\" title=\"struct arrow [...]
 "arrow_schema":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html\" title=\"trait core::hash::Hash\">Hash</a> for <a class=\"struct\" href=\"arrow_schema/fields/struct.Fields.html\" title=\"struct arrow_schema::fields::Fields\">Fields</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html\" title=\"trait core::hash::Hash\">Hash</a> for <a class=\"enum\" href=\"arrow_schema/datatype/enum.TimeUnit.html\" [...]
 "parquet":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html\" title=\"trait core::hash::Hash\">Hash</a> for <a class=\"struct\" href=\"parquet/format/struct.PageLocation.html\" title=\"struct parquet::format::PageLocation\">PageLocation</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html\" title=\"trait core::hash::Hash\">Hash</a> for <a class=\"struct\" href=\"parquet/basic/struct.BrotliLevel.html [...]
 };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/implementors/core/marker/trait.Copy.js b/implementors/core/marker/trait.Copy.js
index 9ddd67b4d7..543d70cc9a 100644
--- a/implementors/core/marker/trait.Copy.js
+++ b/implementors/core/marker/trait.Copy.js
@@ -8,7 +8,7 @@
 "arrow_ipc":[["impl&lt;'a&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html\" title=\"trait core::marker::Copy\">Copy</a> for <a class=\"struct\" href=\"arrow_ipc/gen/Schema/struct.Duration.html\" title=\"struct arrow_ipc::gen::Schema::Duration\">Duration</a>&lt;'a&gt;"],["impl&lt;'a&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html\" title=\"trait core::marker::Copy\">Copy</a> for <a class=\"struct\" hre [...]
 "arrow_json":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html\" title=\"trait core::marker::Copy\">Copy</a> for <a class=\"enum\" href=\"arrow_json/reader/tape/enum.Literal.html\" title=\"enum arrow_json::reader::tape::Literal\">Literal</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html\" title=\"trait core::marker::Copy\">Copy</a> for <a class=\"enum\" href=\"arrow_json/reader/tape/enum.Tape [...]
 "arrow_ord":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html\" title=\"trait core::marker::Copy\">Copy</a> for <a class=\"enum\" href=\"arrow_ord/cmp/enum.Op.html\" title=\"enum arrow_ord::cmp::Op\">Op</a>"]],
-"arrow_row":[["impl&lt;'a&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html\" title=\"trait core::marker::Copy\">Copy</a> for <a class=\"struct\" href=\"arrow_row/struct.Row.html\" title=\"struct arrow_row::Row\">Row</a>&lt;'a&gt;"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html\" title=\"trait core::marker::Copy\">Copy</a> for <a class=\"struct\" href=\"arrow_row/interner/struct.Interned.html\" tit [...]
+"arrow_row":[["impl&lt;'a&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html\" title=\"trait core::marker::Copy\">Copy</a> for <a class=\"struct\" href=\"arrow_row/struct.Row.html\" title=\"struct arrow_row::Row\">Row</a>&lt;'a&gt;"]],
 "arrow_schema":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html\" title=\"trait core::marker::Copy\">Copy</a> for <a class=\"struct\" href=\"arrow_schema/struct.SortOptions.html\" title=\"struct arrow_schema::SortOptions\">SortOptions</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html\" title=\"trait core::marker::Copy\">Copy</a> for <a class=\"enum\" href=\"arrow_schema/datatype/enum.UnionMo [...]
 "parquet":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html\" title=\"trait core::marker::Copy\">Copy</a> for <a class=\"struct\" href=\"parquet/basic/struct.ZstdLevel.html\" title=\"struct parquet::basic::ZstdLevel\">ZstdLevel</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html\" title=\"trait core::marker::Copy\">Copy</a> for <a class=\"struct\" href=\"parquet/arrow/arrow_reader/selection/str [...]
 "parquet_fromcsv":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html\" title=\"trait core::marker::Copy\">Copy</a> for <a class=\"enum\" href=\"parquet_fromcsv/enum.RecordTerminator.html\" title=\"enum parquet_fromcsv::RecordTerminator\">RecordTerminator</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html\" title=\"trait core::marker::Copy\">Copy</a> for <a class=\"enum\" href=\"parquet_fromcsv/ [...]
diff --git a/implementors/core/marker/trait.Freeze.js b/implementors/core/marker/trait.Freeze.js
index edfa1cac54..b8f3e4d2ad 100644
--- a/implementors/core/marker/trait.Freeze.js
+++ b/implementors/core/marker/trait.Freeze.js
@@ -14,7 +14,7 @@
 "arrow_json":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"struct\" href=\"arrow_json/reader/boolean_array/struct.BooleanArrayDecoder.html\" title=\"struct arrow_json::reader::boolean_array::BooleanArrayDecoder\">BooleanArrayDecoder</a>",1,["arrow_json::reader::boolean_array::BooleanArrayDecoder"]],["impl&lt;D&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly [...]
 "arrow_json_integration_test":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"enum\" href=\"arrow_json_integration_test/enum.Mode.html\" title=\"enum arrow_json_integration_test::Mode\">Mode</a>",1,["arrow_json_integration_test::Mode"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Free [...]
 "arrow_ord":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"enum\" href=\"arrow_ord/cmp/enum.Op.html\" title=\"enum arrow_ord::cmp::Op\">Op</a>",1,["arrow_ord::cmp::Op"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"struct\" href=\"arrow_ord/partition/struct.P [...]
-"arrow_row":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"struct\" href=\"arrow_row/interner/struct.Interned.html\" title=\"struct arrow_row::interner::Interned\">Interned</a>",1,["arrow_row::interner::Interned"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\ [...]
+"arrow_row":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"struct\" href=\"arrow_row/struct.RowConverter.html\" title=\"struct arrow_row::RowConverter\">RowConverter</a>",1,["arrow_row::RowConverter"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"enum\" href= [...]
 "arrow_schema":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"enum\" href=\"arrow_schema/datatype/enum.DataType.html\" title=\"enum arrow_schema::datatype::DataType\">DataType</a>",1,["arrow_schema::datatype::DataType"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a c [...]
 "arrow_select":[["impl&lt;'a, V&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"struct\" href=\"arrow_select/dictionary/struct.Interner.html\" title=\"struct arrow_select::dictionary::Interner\">Interner</a>&lt;'a, V&gt;",1,["arrow_select::dictionary::Interner"]],["impl&lt;K&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"t [...]
 "arrow_string":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"enum\" href=\"arrow_string/like/enum.Op.html\" title=\"enum arrow_string::like::Op\">Op</a>",1,["arrow_string::like::Op"]],["impl&lt;'a&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"enum\" href=\"arrow [...]
diff --git a/implementors/core/marker/trait.Send.js b/implementors/core/marker/trait.Send.js
index 93658f26c6..eb5f35ffc4 100644
--- a/implementors/core/marker/trait.Send.js
+++ b/implementors/core/marker/trait.Send.js
@@ -14,7 +14,7 @@
 "arrow_json":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"arrow_json/reader/boolean_array/struct.BooleanArrayDecoder.html\" title=\"struct arrow_json::reader::boolean_array::BooleanArrayDecoder\">BooleanArrayDecoder</a>",1,["arrow_json::reader::boolean_array::BooleanArrayDecoder"]],["impl&lt;D&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/ [...]
 "arrow_json_integration_test":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"arrow_json_integration_test/enum.Mode.html\" title=\"enum arrow_json_integration_test::Mode\">Mode</a>",1,["arrow_json_integration_test::Mode"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for < [...]
 "arrow_ord":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"arrow_ord/cmp/enum.Op.html\" title=\"enum arrow_ord::cmp::Op\">Op</a>",1,["arrow_ord::cmp::Op"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"arrow_ord/partition/struct.Partitions.ht [...]
-"arrow_row":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"arrow_row/interner/struct.Interned.html\" title=\"struct arrow_row::interner::Interned\">Interned</a>",1,["arrow_row::interner::Interned"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" hr [...]
+"arrow_row":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"arrow_row/struct.RowConverter.html\" title=\"struct arrow_row::RowConverter\">RowConverter</a>",1,["arrow_row::RowConverter"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"arrow_row/ [...]
 "arrow_schema":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"arrow_schema/datatype/enum.DataType.html\" title=\"enum arrow_schema::datatype::DataType\">DataType</a>",1,["arrow_schema::datatype::DataType"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\ [...]
 "arrow_select":[["impl&lt;'a, V&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"arrow_select/dictionary/struct.Interner.html\" title=\"struct arrow_select::dictionary::Interner\">Interner</a>&lt;'a, V&gt;<span class=\"where fmt-newline\">where\n    V: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::S [...]
 "arrow_string":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"arrow_string/like/enum.Op.html\" title=\"enum arrow_string::like::Op\">Op</a>",1,["arrow_string::like::Op"]],["impl&lt;'a&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"arrow_string/pred [...]
diff --git a/implementors/core/marker/trait.StructuralEq.js b/implementors/core/marker/trait.StructuralEq.js
index 43eb580125..4e7ddc92a1 100644
--- a/implementors/core/marker/trait.StructuralEq.js
+++ b/implementors/core/marker/trait.StructuralEq.js
@@ -5,7 +5,7 @@
 "arrow_flight":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html\" title=\"trait core::marker::StructuralEq\">StructuralEq</a> for <a class=\"enum\" href=\"arrow_flight/sql/gen/enum.SqlSupportedPositionedCommands.html\" title=\"enum arrow_flight::sql::gen::SqlSupportedPositionedCommands\">SqlSupportedPositionedCommands</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html\" title= [...]
 "arrow_ipc":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html\" title=\"trait core::marker::StructuralEq\">StructuralEq</a> for <a class=\"struct\" href=\"arrow_ipc/gen/Schema/struct.DictionaryKind.html\" title=\"struct arrow_ipc::gen::Schema::DictionaryKind\">DictionaryKind</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html\" title=\"trait core::marker::StructuralEq\">Structur [...]
 "arrow_json":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html\" title=\"trait core::marker::StructuralEq\">StructuralEq</a> for <a class=\"enum\" href=\"arrow_json/reader/tape/enum.TapeElement.html\" title=\"enum arrow_json::reader::tape::TapeElement\">TapeElement</a>"]],
-"arrow_row":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html\" title=\"trait core::marker::StructuralEq\">StructuralEq</a> for <a class=\"struct\" href=\"arrow_row/struct.SortField.html\" title=\"struct arrow_row::SortField\">SortField</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html\" title=\"trait core::marker::StructuralEq\">StructuralEq</a> for <a class=\"struct\" href=\ [...]
+"arrow_row":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html\" title=\"trait core::marker::StructuralEq\">StructuralEq</a> for <a class=\"struct\" href=\"arrow_row/struct.SortField.html\" title=\"struct arrow_row::SortField\">SortField</a>"]],
 "arrow_schema":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html\" title=\"trait core::marker::StructuralEq\">StructuralEq</a> for <a class=\"enum\" href=\"arrow_schema/datatype/enum.IntervalUnit.html\" title=\"enum arrow_schema::datatype::IntervalUnit\">IntervalUnit</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html\" title=\"trait core::marker::StructuralEq\">StructuralEq</a> [...]
 "parquet":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html\" title=\"trait core::marker::StructuralEq\">StructuralEq</a> for <a class=\"struct\" href=\"parquet/format/struct.MilliSeconds.html\" title=\"struct parquet::format::MilliSeconds\">MilliSeconds</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html\" title=\"trait core::marker::StructuralEq\">StructuralEq</a> for <a class [...]
 "parquet_rewrite":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html\" title=\"trait core::marker::StructuralEq\">StructuralEq</a> for <a class=\"enum\" href=\"parquet_rewrite/enum.EnabledStatisticsArgs.html\" title=\"enum parquet_rewrite::EnabledStatisticsArgs\">EnabledStatisticsArgs</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html\" title=\"trait core::marker::StructuralEq\" [...]
diff --git a/implementors/core/marker/trait.StructuralPartialEq.js b/implementors/core/marker/trait.StructuralPartialEq.js
index 9a5a1a3e40..b8f07df103 100644
--- a/implementors/core/marker/trait.StructuralPartialEq.js
+++ b/implementors/core/marker/trait.StructuralPartialEq.js
@@ -6,7 +6,7 @@
 "arrow_flight":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"struct\" href=\"arrow_flight/sql/gen/struct.CommandGetCatalogs.html\" title=\"struct arrow_flight::sql::gen::CommandGetCatalogs\">CommandGetCatalogs</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\" [...]
 "arrow_ipc":[["impl&lt;'a&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"struct\" href=\"arrow_ipc/gen/File/struct.Footer.html\" title=\"struct arrow_ipc::gen::File::Footer\">Footer</a>&lt;'a&gt;"],["impl&lt;'a&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::m [...]
 "arrow_json":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"enum\" href=\"arrow_json/reader/tape/enum.TapeElement.html\" title=\"enum arrow_json::reader::tape::TapeElement\">TapeElement</a>"]],
-"arrow_row":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"struct\" href=\"arrow_row/interner/struct.Interned.html\" title=\"struct arrow_row::interner::Interned\">Interned</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialE [...]
+"arrow_row":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"struct\" href=\"arrow_row/struct.SortField.html\" title=\"struct arrow_row::SortField\">SortField</a>"]],
 "arrow_schema":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"struct\" href=\"arrow_schema/struct.SortOptions.html\" title=\"struct arrow_schema::SortOptions\">SortOptions</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq [...]
 "parquet":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"struct\" href=\"parquet/format/struct.SplitBlockAlgorithm.html\" title=\"struct parquet::format::SplitBlockAlgorithm\">SplitBlockAlgorithm</a>"],["impl&lt;T&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait  [...]
 "parquet_derive":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"enum\" href=\"parquet_derive/parquet_field/enum.ThirdPartyType.html\" title=\"enum parquet_derive::parquet_field::ThirdPartyType\">ThirdPartyType</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"t [...]
diff --git a/implementors/core/marker/trait.Sync.js b/implementors/core/marker/trait.Sync.js
index 621b5d04be..fb783f5728 100644
--- a/implementors/core/marker/trait.Sync.js
+++ b/implementors/core/marker/trait.Sync.js
@@ -14,7 +14,7 @@
 "arrow_json":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"arrow_json/reader/boolean_array/struct.BooleanArrayDecoder.html\" title=\"struct arrow_json::reader::boolean_array::BooleanArrayDecoder\">BooleanArrayDecoder</a>",1,["arrow_json::reader::boolean_array::BooleanArrayDecoder"]],["impl&lt;D&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/ [...]
 "arrow_json_integration_test":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"arrow_json_integration_test/enum.Mode.html\" title=\"enum arrow_json_integration_test::Mode\">Mode</a>",1,["arrow_json_integration_test::Mode"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for < [...]
 "arrow_ord":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"arrow_ord/cmp/enum.Op.html\" title=\"enum arrow_ord::cmp::Op\">Op</a>",1,["arrow_ord::cmp::Op"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"arrow_ord/partition/struct.Partitions.ht [...]
-"arrow_row":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"arrow_row/interner/struct.Interned.html\" title=\"struct arrow_row::interner::Interned\">Interned</a>",1,["arrow_row::interner::Interned"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" hr [...]
+"arrow_row":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"arrow_row/struct.RowConverter.html\" title=\"struct arrow_row::RowConverter\">RowConverter</a>",1,["arrow_row::RowConverter"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"arrow_row/ [...]
 "arrow_schema":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"arrow_schema/datatype/enum.DataType.html\" title=\"enum arrow_schema::datatype::DataType\">DataType</a>",1,["arrow_schema::datatype::DataType"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\ [...]
 "arrow_select":[["impl&lt;'a, V&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"arrow_select/dictionary/struct.Interner.html\" title=\"struct arrow_select::dictionary::Interner\">Interner</a>&lt;'a, V&gt;<span class=\"where fmt-newline\">where\n    V: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::S [...]
 "arrow_string":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"arrow_string/like/enum.Op.html\" title=\"enum arrow_string::like::Op\">Op</a>",1,["arrow_string::like::Op"]],["impl&lt;'a&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"arrow_string/pred [...]
diff --git a/implementors/core/marker/trait.Unpin.js b/implementors/core/marker/trait.Unpin.js
index 251af93ed2..0a7626be6c 100644
--- a/implementors/core/marker/trait.Unpin.js
+++ b/implementors/core/marker/trait.Unpin.js
@@ -14,7 +14,7 @@
 "arrow_json":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"arrow_json/reader/boolean_array/struct.BooleanArrayDecoder.html\" title=\"struct arrow_json::reader::boolean_array::BooleanArrayDecoder\">BooleanArrayDecoder</a>",1,["arrow_json::reader::boolean_array::BooleanArrayDecoder"]],["impl&lt;D&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/co [...]
 "arrow_json_integration_test":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"arrow_json_integration_test/enum.Mode.html\" title=\"enum arrow_json_integration_test::Mode\">Mode</a>",1,["arrow_json_integration_test::Mode"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> [...]
 "arrow_ord":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"arrow_ord/cmp/enum.Op.html\" title=\"enum arrow_ord::cmp::Op\">Op</a>",1,["arrow_ord::cmp::Op"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"arrow_ord/partition/struct.Partiti [...]
-"arrow_row":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"arrow_row/interner/struct.Interned.html\" title=\"struct arrow_row::interner::Interned\">Interned</a>",1,["arrow_row::interner::Interned"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struc [...]
+"arrow_row":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"arrow_row/struct.RowConverter.html\" title=\"struct arrow_row::RowConverter\">RowConverter</a>",1,["arrow_row::RowConverter"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"arro [...]
 "arrow_schema":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"arrow_schema/datatype/enum.DataType.html\" title=\"enum arrow_schema::datatype::DataType\">DataType</a>",1,["arrow_schema::datatype::DataType"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\ [...]
 "arrow_select":[["impl&lt;'a, V&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"arrow_select/dictionary/struct.Interner.html\" title=\"struct arrow_select::dictionary::Interner\">Interner</a>&lt;'a, V&gt;<span class=\"where fmt-newline\">where\n    V: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marke [...]
 "arrow_string":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"arrow_string/like/enum.Op.html\" title=\"enum arrow_string::like::Op\">Op</a>",1,["arrow_string::like::Op"]],["impl&lt;'a&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"arrow_strin [...]
diff --git a/implementors/core/ops/index/trait.Index.js b/implementors/core/ops/index/trait.Index.js
index f23638741d..3de31168ec 100644
--- a/implementors/core/ops/index/trait.Index.js
+++ b/implementors/core/ops/index/trait.Index.js
@@ -1,5 +1,4 @@
 (function() {var implementors = {
 "arrow_array":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/ops/index/trait.Index.html\" title=\"trait core::ops::index::Index\">Index</a>&lt;&amp;<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.str.html\">str</a>&gt; for <a class=\"struct\" href=\"arrow_array/array/struct_array/struct.StructArray.html\" title=\"struct arrow_array::array::struct_array::StructArray\">StructArray</a>"],["impl <a class=\"trait\" href=\"https://doc.rus [...]
-"arrow_row":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/ops/index/trait.Index.html\" title=\"trait core::ops::index::Index\">Index</a>&lt;<a class=\"struct\" href=\"arrow_row/interner/struct.Interned.html\" title=\"struct arrow_row::interner::Interned\">Interned</a>&gt; for <a class=\"struct\" href=\"arrow_row/interner/struct.InternBuffer.html\" title=\"struct arrow_row::interner::InternBuffer\">InternBuffer</a>"]],
 "parquet":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/ops/index/trait.Index.html\" title=\"trait core::ops::index::Index\">Index</a>&lt;<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.usize.html\">usize</a>&gt; for <a class=\"struct\" href=\"parquet/bloom_filter/struct.Block.html\" title=\"struct parquet::bloom_filter::Block\">Block</a>"]]
 };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/implementors/core/panic/unwind_safe/trait.RefUnwindSafe.js b/implementors/core/panic/unwind_safe/trait.RefUnwindSafe.js
index 897d3136a8..80952e43fe 100644
--- a/implementors/core/panic/unwind_safe/trait.RefUnwindSafe.js
+++ b/implementors/core/panic/unwind_safe/trait.RefUnwindSafe.js
@@ -14,7 +14,7 @@
 "arrow_json":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"arrow_json/reader/boolean_array/struct.BooleanArrayDecoder.html\" title=\"struct arrow_json::reader::boolean_array::BooleanArrayDecoder\">BooleanArrayDecoder</a>",1,["arrow_json::reader::boolean_array::BooleanArrayDecoder"]],["impl&lt;D&gt; <a class=\"trai [...]
 "arrow_json_integration_test":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"arrow_json_integration_test/enum.Mode.html\" title=\"enum arrow_json_integration_test::Mode\">Mode</a>",1,["arrow_json_integration_test::Mode"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait. [...]
 "arrow_ord":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"arrow_ord/cmp/enum.Op.html\" title=\"enum arrow_ord::cmp::Op\">Op</a>",1,["arrow_ord::cmp::Op"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUn [...]
-"arrow_row":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"arrow_row/interner/struct.Interned.html\" title=\"struct arrow_row::interner::Interned\">Interned</a>",1,["arrow_row::interner::Interned"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\"  [...]
+"arrow_row":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"arrow_row/struct.RowConverter.html\" title=\"struct arrow_row::RowConverter\">RowConverter</a>",1,["arrow_row::RowConverter"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait [...]
 "arrow_schema":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"arrow_schema/datatype/enum.DataType.html\" title=\"enum arrow_schema::datatype::DataType\">DataType</a>",1,["arrow_schema::datatype::DataType"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.h [...]
 "arrow_select":[["impl&lt;'a, V&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"arrow_select/dictionary/struct.Interner.html\" title=\"struct arrow_select::dictionary::Interner\">Interner</a>&lt;'a, V&gt;<span class=\"where fmt-newline\">where\n    V: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/pani [...]
 "arrow_string":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"arrow_string/like/enum.Op.html\" title=\"enum arrow_string::like::Op\">Op</a>",1,["arrow_string::like::Op"]],["impl&lt;'a&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core:: [...]
diff --git a/implementors/core/panic/unwind_safe/trait.UnwindSafe.js b/implementors/core/panic/unwind_safe/trait.UnwindSafe.js
index 48ca93d670..d89011be1c 100644
--- a/implementors/core/panic/unwind_safe/trait.UnwindSafe.js
+++ b/implementors/core/panic/unwind_safe/trait.UnwindSafe.js
@@ -14,7 +14,7 @@
 "arrow_json":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"arrow_json/reader/boolean_array/struct.BooleanArrayDecoder.html\" title=\"struct arrow_json::reader::boolean_array::BooleanArrayDecoder\">BooleanArrayDecoder</a>",1,["arrow_json::reader::boolean_array::BooleanArrayDecoder"]],["impl&lt;D&gt; <a class=\"trait\" href= [...]
 "arrow_json_integration_test":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"arrow_json_integration_test/enum.Mode.html\" title=\"enum arrow_json_integration_test::Mode\">Mode</a>",1,["arrow_json_integration_test::Mode"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSaf [...]
 "arrow_ord":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"arrow_ord/cmp/enum.Op.html\" title=\"enum arrow_ord::cmp::Op\">Op</a>",1,["arrow_ord::cmp::Op"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">Unwi [...]
-"arrow_row":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"arrow_row/interner/struct.Interned.html\" title=\"struct arrow_row::interner::Interned\">Interned</a>",1,["arrow_row::interner::Interned"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trai [...]
+"arrow_row":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"arrow_row/struct.RowConverter.html\" title=\"struct arrow_row::RowConverter\">RowConverter</a>",1,["arrow_row::RowConverter"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic [...]
 "arrow_schema":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"arrow_schema/datatype/enum.DataType.html\" title=\"enum arrow_schema::datatype::DataType\">DataType</a>",1,["arrow_schema::datatype::DataType"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title= [...]
 "arrow_select":[["impl&lt;'a, V&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"arrow_select/dictionary/struct.Interner.html\" title=\"struct arrow_select::dictionary::Interner\">Interner</a>&lt;'a, V&gt;<span class=\"where fmt-newline\">where\n    V: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_ [...]
 "arrow_string":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"arrow_string/like/enum.Op.html\" title=\"enum arrow_string::like::Op\">Op</a>",1,["arrow_string::like::Op"]],["impl&lt;'a&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwin [...]
diff --git a/search-index.js b/search-index.js
index 4f13c04150..06c4a09622 100644
--- a/search-index.js
+++ b/search-index.js
@@ -14,7 +14,7 @@ var searchIndex = JSON.parse('{\
 "arrow_json":{"doc":"Transfer data between the Arrow memory format and JSON …","t":"CICCCCKOAAIDDDDMMALLLLLLLLLLLLMAKLMMLLLLLLLLLFFFLLLLMAFAMLLAAOLMMMALMMLAMAAAMALLLLLLLLLLLLDLLLLLLLLLLLDLLLLLLLLMMMLLLDLLLMLMLLLMLMLLLDLLLMLLLLMMLLLLMDLLLLLLLLLLLIDLLLMLLLLLKMOLLLNNENNDLLLLLLLLFFLLLLLLFFFFFFFFFFLLLMMLLLMMFLLLLLLLDDDDLLLLLLLLMLLLLLMLLLLLLLLLLLLLLLLLLLLLLLLMLLLLLLLLLLLLLLLLLLLOLLLLLLLLLLLLLLLLMMMMLLLLLLLLLLLLLRDRLLLMLLLLLMLLLDLLLMLMLLLMLMFLLLDNENNNNNNENNNNNNNNNNDDENNNNLLLLLMLLLLLLLLLLLLLMLLL [...]
 "arrow_json_integration_test":{"doc":"","t":"DNNENMFLLLLLLFLLLLLLLLLLLLLLLLMLLLLMFFMLLLLLLLLLLFLMLL","n":["Args","ArrowToJson","JsonToArrow","Mode","Validate","arrow","arrow_to_json","augment_args","augment_args_for_update","borrow","borrow","borrow_mut","borrow_mut","canonicalize_schema","cast","cast","clone","clone_into","command","command_for_update","fmt","fmt","from","from","from_arg_matches","from_arg_matches_mut","from_cast","from_cast","from_ref","group_id","integration","into"," [...]
 "arrow_ord":{"doc":"Arrow ordering kernels","t":"AAAAAINNNNQNNNNEFFFLLLLLFFFFLLLLFFLKKKFFFFFLLLLLLKGFFFFFDLLLLLFLLLLLLFFLLLLLFFFFDGDDLLLLLLLLLFLLLLLLMLMLLLLLLLLLLLLLLLFFLMMLFFFFFFFFFFFFFFFFFFFLLLLLLLLLLLLM","n":["cmp","ord","partition","rank","sort","ArrayOrd","Distinct","Equal","Greater","GreaterEqual","Item","Less","LessEqual","NotDistinct","NotEqual","Op","apply","apply_op","apply_op_vectored","borrow","borrow_mut","cast","clone","clone_into","collect_bool","compare_op","distinct","eq [...]
-"arrow_row":{"doc":"A comparable row-oriented representation of a collection …","t":"ENNNNENNDDDDDDDDNNNNLLLLLLLLLLLLLLLLLLLLLLLMLLLLLLLLLLLLLLLLLLLLLMMMMMLLLMMMFOOALFLMLLLLLLLLLMMALLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLALLLLLLLLLLLLLLALLLLLLLFLMMLLLLLLMLLLFMLLLLLMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMAFFFFFFOFFFSQIIKFFFFFFKFOOFKFDDDDDLLLLLLLLLLLMLLLLLLMLLLLLLLLLLLLLLLLLLLLLLLLLLLLMLLLLLLLLLMLMMLMLLLMLLLLLLLLLLLLLLLLLLLMMMFFFFFRRRRRRFFFFFFFFF","n":["Codec","Dictionary","Dictionary","DictionaryVa [...]
+"arrow_row":{"doc":"A comparable row-oriented representation of a collection …","t":"ENNENNDDDDDDDDNNNNLLLLLLLLLLLLLLLLLLLLLLLMLLLLLLLLLLLLLLLLLLLLLMMMMMLLLMMMFOLFFLMLLLLLLLLLMMALLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLALLLLLLLFLMMLLLLLLLLFMLLLLLMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMASQIIKFFFFFFKFOOFKFFFFFFRRRRRRFFFFFFFFF","n":["Codec","Dictionary","Dictionary","Encoder","List","List","OwnedRow","Row","RowConfig","RowConverter","RowParser","Rows","RowsIter","SortField","Stateless"," [...]
 "arrow_schema":{"doc":"Arrow logical types","t":"ENNNNNNRRRRRENNNNNNNNNNNDGDNNNNNNNNNNENNNNNNNNNNNNNNNNNNNNDDNGNDNNNNENNNNNNDENNMMLLLLLMALMMMLLAAAAMMLLLLMMMLMMLMMMMALLLLNNRRRRRENNNNNNNNNNNNNNNNNNENNNNNNNNNNNNNNNNENNNNNNENNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLENNNNNNNNNNNNNNNNNLLLLLLLLLLLLLLLDDDLLLLLLMMLMMLLLALMLLMLLFLLLLMMMLMLMMFLLLLLLLLLLLLLLLLLSDSSLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLDGLMLLLLLLLMLLMLMLLLLLLLLLLLMLMLLLLLLLLM [...]
 "arrow_select":{"doc":"Arrow selection kernels","t":"AAAAAAAAFFFFFODDGLLLLMFLLFLLLLFLLLMFFLMFMLLLLLLMNRGDDDDNNENNDNLLLLLLLLLLLLLFLLLLLLLMMMLMMLLFLMMFFFFFFFFFLLLLLLLLLLLLLLLLLLLLLLLLLLMLLLLLLLFMLMMMMLLLLLLLLLLLLLLLLLLDMLLLOLLFFFFFLLMOLLLFQDILLLFMLLLLLLLFFFFFFFFFFFFFFFFKOOOLLLLFF","n":["concat","dictionary","filter","interleave","nullif","take","window","zip","binary_capacity","concat","concat_batches","concat_dictionaries","concat_fallback","dict_helper","Interner","MergedDictionaries","P [...]
 "arrow_stream_to_file":{"doc":"","t":"F","n":["main"],"q":[[0,"arrow_stream_to_file"],[1,"arrow::error"]],"d":[""],"i":[0],"f":[[[],1]],"c":[],"p":[[6,"Result",1]]},\
diff --git a/src-files.js b/src-files.js
index e16eab1170..a0028db757 100644
--- a/src-files.js
+++ b/src-files.js
@@ -14,7 +14,7 @@ var srcIndex = JSON.parse('{\
 "arrow_json":["",[["reader",[],["boolean_array.rs","decimal_array.rs","list_array.rs","map_array.rs","mod.rs","null_array.rs","primitive_array.rs","schema.rs","serializer.rs","string_array.rs","struct_array.rs","tape.rs","timestamp_array.rs"]]],["lib.rs","writer.rs"]],\
 "arrow_json_integration_test":["",[],["arrow-json-integration-test.rs"]],\
 "arrow_ord":["",[],["cmp.rs","comparison.rs","lib.rs","ord.rs","partition.rs","rank.rs","sort.rs"]],\
-"arrow_row":["",[],["dictionary.rs","fixed.rs","interner.rs","lib.rs","list.rs","variable.rs"]],\
+"arrow_row":["",[],["fixed.rs","lib.rs","list.rs","variable.rs"]],\
 "arrow_schema":["",[],["datatype.rs","error.rs","ffi.rs","field.rs","fields.rs","lib.rs","schema.rs"]],\
 "arrow_select":["",[],["concat.rs","dictionary.rs","filter.rs","interleave.rs","lib.rs","nullif.rs","take.rs","window.rs","zip.rs"]],\
 "arrow_stream_to_file":["",[],["arrow-stream-to-file.rs"]],\
diff --git a/src/arrow_flight/sql/metadata/mod.rs.html b/src/arrow_flight/sql/metadata/mod.rs.html
index 73e78f76a0..7e9e40765c 100644
--- a/src/arrow_flight/sql/metadata/mod.rs.html
+++ b/src/arrow_flight/sql/metadata/mod.rs.html
@@ -129,7 +129,7 @@
         .iter()
         .map(|a| SortField::new(a.data_type().clone()))
         .collect();
-    <span class="kw">let </span><span class="kw-2">mut </span>converter = RowConverter::new(fields).unwrap();
+    <span class="kw">let </span>converter = RowConverter::new(fields).unwrap();
     <span class="kw">let </span>rows = converter.convert_columns(arrays).unwrap();
     <span class="kw">let </span><span class="kw-2">mut </span>sort: Vec&lt;<span class="kw">_</span>&gt; = rows.iter().enumerate().collect();
     sort.sort_unstable_by(|(<span class="kw">_</span>, a), (<span class="kw">_</span>, b)| a.cmp(b));
diff --git a/src/arrow_row/dictionary.rs.html b/src/arrow_row/dictionary.rs.html
deleted file mode 100644
index 3f38b0ab1f..0000000000
--- a/src/arrow_row/dictionary.rs.html
+++ /dev/null
@@ -1,593 +0,0 @@
-<!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="Source of the Rust file `arrow-row/src/dictionary.rs`."><title>dictionary.rs - source</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin h [...]
-<a href="#2" id="2">2</a>
-<a href="#3" id="3">3</a>
-<a href="#4" id="4">4</a>
-<a href="#5" id="5">5</a>
-<a href="#6" id="6">6</a>
-<a href="#7" id="7">7</a>
-<a href="#8" id="8">8</a>
-<a href="#9" id="9">9</a>
-<a href="#10" id="10">10</a>
-<a href="#11" id="11">11</a>
-<a href="#12" id="12">12</a>
-<a href="#13" id="13">13</a>
-<a href="#14" id="14">14</a>
-<a href="#15" id="15">15</a>
-<a href="#16" id="16">16</a>
-<a href="#17" id="17">17</a>
-<a href="#18" id="18">18</a>
-<a href="#19" id="19">19</a>
-<a href="#20" id="20">20</a>
-<a href="#21" id="21">21</a>
-<a href="#22" id="22">22</a>
-<a href="#23" id="23">23</a>
-<a href="#24" id="24">24</a>
-<a href="#25" id="25">25</a>
-<a href="#26" id="26">26</a>
-<a href="#27" id="27">27</a>
-<a href="#28" id="28">28</a>
-<a href="#29" id="29">29</a>
-<a href="#30" id="30">30</a>
-<a href="#31" id="31">31</a>
-<a href="#32" id="32">32</a>
-<a href="#33" id="33">33</a>
-<a href="#34" id="34">34</a>
-<a href="#35" id="35">35</a>
-<a href="#36" id="36">36</a>
-<a href="#37" id="37">37</a>
-<a href="#38" id="38">38</a>
-<a href="#39" id="39">39</a>
-<a href="#40" id="40">40</a>
-<a href="#41" id="41">41</a>
-<a href="#42" id="42">42</a>
-<a href="#43" id="43">43</a>
-<a href="#44" id="44">44</a>
-<a href="#45" id="45">45</a>
-<a href="#46" id="46">46</a>
-<a href="#47" id="47">47</a>
-<a href="#48" id="48">48</a>
-<a href="#49" id="49">49</a>
-<a href="#50" id="50">50</a>
-<a href="#51" id="51">51</a>
-<a href="#52" id="52">52</a>
-<a href="#53" id="53">53</a>
-<a href="#54" id="54">54</a>
-<a href="#55" id="55">55</a>
-<a href="#56" id="56">56</a>
-<a href="#57" id="57">57</a>
-<a href="#58" id="58">58</a>
-<a href="#59" id="59">59</a>
-<a href="#60" id="60">60</a>
-<a href="#61" id="61">61</a>
-<a href="#62" id="62">62</a>
-<a href="#63" id="63">63</a>
-<a href="#64" id="64">64</a>
-<a href="#65" id="65">65</a>
-<a href="#66" id="66">66</a>
-<a href="#67" id="67">67</a>
-<a href="#68" id="68">68</a>
-<a href="#69" id="69">69</a>
-<a href="#70" id="70">70</a>
-<a href="#71" id="71">71</a>
-<a href="#72" id="72">72</a>
-<a href="#73" id="73">73</a>
-<a href="#74" id="74">74</a>
-<a href="#75" id="75">75</a>
-<a href="#76" id="76">76</a>
-<a href="#77" id="77">77</a>
-<a href="#78" id="78">78</a>
-<a href="#79" id="79">79</a>
-<a href="#80" id="80">80</a>
-<a href="#81" id="81">81</a>
-<a href="#82" id="82">82</a>
-<a href="#83" id="83">83</a>
-<a href="#84" id="84">84</a>
-<a href="#85" id="85">85</a>
-<a href="#86" id="86">86</a>
-<a href="#87" id="87">87</a>
-<a href="#88" id="88">88</a>
-<a href="#89" id="89">89</a>
-<a href="#90" id="90">90</a>
-<a href="#91" id="91">91</a>
-<a href="#92" id="92">92</a>
-<a href="#93" id="93">93</a>
-<a href="#94" id="94">94</a>
-<a href="#95" id="95">95</a>
-<a href="#96" id="96">96</a>
-<a href="#97" id="97">97</a>
-<a href="#98" id="98">98</a>
-<a href="#99" id="99">99</a>
-<a href="#100" id="100">100</a>
-<a href="#101" id="101">101</a>
-<a href="#102" id="102">102</a>
-<a href="#103" id="103">103</a>
-<a href="#104" id="104">104</a>
-<a href="#105" id="105">105</a>
-<a href="#106" id="106">106</a>
-<a href="#107" id="107">107</a>
-<a href="#108" id="108">108</a>
-<a href="#109" id="109">109</a>
-<a href="#110" id="110">110</a>
-<a href="#111" id="111">111</a>
-<a href="#112" id="112">112</a>
-<a href="#113" id="113">113</a>
-<a href="#114" id="114">114</a>
-<a href="#115" id="115">115</a>
-<a href="#116" id="116">116</a>
-<a href="#117" id="117">117</a>
-<a href="#118" id="118">118</a>
-<a href="#119" id="119">119</a>
-<a href="#120" id="120">120</a>
-<a href="#121" id="121">121</a>
-<a href="#122" id="122">122</a>
-<a href="#123" id="123">123</a>
-<a href="#124" id="124">124</a>
-<a href="#125" id="125">125</a>
-<a href="#126" id="126">126</a>
-<a href="#127" id="127">127</a>
-<a href="#128" id="128">128</a>
-<a href="#129" id="129">129</a>
-<a href="#130" id="130">130</a>
-<a href="#131" id="131">131</a>
-<a href="#132" id="132">132</a>
-<a href="#133" id="133">133</a>
-<a href="#134" id="134">134</a>
-<a href="#135" id="135">135</a>
-<a href="#136" id="136">136</a>
-<a href="#137" id="137">137</a>
-<a href="#138" id="138">138</a>
-<a href="#139" id="139">139</a>
-<a href="#140" id="140">140</a>
-<a href="#141" id="141">141</a>
-<a href="#142" id="142">142</a>
-<a href="#143" id="143">143</a>
-<a href="#144" id="144">144</a>
-<a href="#145" id="145">145</a>
-<a href="#146" id="146">146</a>
-<a href="#147" id="147">147</a>
-<a href="#148" id="148">148</a>
-<a href="#149" id="149">149</a>
-<a href="#150" id="150">150</a>
-<a href="#151" id="151">151</a>
-<a href="#152" id="152">152</a>
-<a href="#153" id="153">153</a>
-<a href="#154" id="154">154</a>
-<a href="#155" id="155">155</a>
-<a href="#156" id="156">156</a>
-<a href="#157" id="157">157</a>
-<a href="#158" id="158">158</a>
-<a href="#159" id="159">159</a>
-<a href="#160" id="160">160</a>
-<a href="#161" id="161">161</a>
-<a href="#162" id="162">162</a>
-<a href="#163" id="163">163</a>
-<a href="#164" id="164">164</a>
-<a href="#165" id="165">165</a>
-<a href="#166" id="166">166</a>
-<a href="#167" id="167">167</a>
-<a href="#168" id="168">168</a>
-<a href="#169" id="169">169</a>
-<a href="#170" id="170">170</a>
-<a href="#171" id="171">171</a>
-<a href="#172" id="172">172</a>
-<a href="#173" id="173">173</a>
-<a href="#174" id="174">174</a>
-<a href="#175" id="175">175</a>
-<a href="#176" id="176">176</a>
-<a href="#177" id="177">177</a>
-<a href="#178" id="178">178</a>
-<a href="#179" id="179">179</a>
-<a href="#180" id="180">180</a>
-<a href="#181" id="181">181</a>
-<a href="#182" id="182">182</a>
-<a href="#183" id="183">183</a>
-<a href="#184" id="184">184</a>
-<a href="#185" id="185">185</a>
-<a href="#186" id="186">186</a>
-<a href="#187" id="187">187</a>
-<a href="#188" id="188">188</a>
-<a href="#189" id="189">189</a>
-<a href="#190" id="190">190</a>
-<a href="#191" id="191">191</a>
-<a href="#192" id="192">192</a>
-<a href="#193" id="193">193</a>
-<a href="#194" id="194">194</a>
-<a href="#195" id="195">195</a>
-<a href="#196" id="196">196</a>
-<a href="#197" id="197">197</a>
-<a href="#198" id="198">198</a>
-<a href="#199" id="199">199</a>
-<a href="#200" id="200">200</a>
-<a href="#201" id="201">201</a>
-<a href="#202" id="202">202</a>
-<a href="#203" id="203">203</a>
-<a href="#204" id="204">204</a>
-<a href="#205" id="205">205</a>
-<a href="#206" id="206">206</a>
-<a href="#207" id="207">207</a>
-<a href="#208" id="208">208</a>
-<a href="#209" id="209">209</a>
-<a href="#210" id="210">210</a>
-<a href="#211" id="211">211</a>
-<a href="#212" id="212">212</a>
-<a href="#213" id="213">213</a>
-<a href="#214" id="214">214</a>
-<a href="#215" id="215">215</a>
-<a href="#216" id="216">216</a>
-<a href="#217" id="217">217</a>
-<a href="#218" id="218">218</a>
-<a href="#219" id="219">219</a>
-<a href="#220" id="220">220</a>
-<a href="#221" id="221">221</a>
-<a href="#222" id="222">222</a>
-<a href="#223" id="223">223</a>
-<a href="#224" id="224">224</a>
-<a href="#225" id="225">225</a>
-<a href="#226" id="226">226</a>
-<a href="#227" id="227">227</a>
-<a href="#228" id="228">228</a>
-<a href="#229" id="229">229</a>
-<a href="#230" id="230">230</a>
-<a href="#231" id="231">231</a>
-<a href="#232" id="232">232</a>
-<a href="#233" id="233">233</a>
-<a href="#234" id="234">234</a>
-<a href="#235" id="235">235</a>
-<a href="#236" id="236">236</a>
-<a href="#237" id="237">237</a>
-<a href="#238" id="238">238</a>
-<a href="#239" id="239">239</a>
-<a href="#240" id="240">240</a>
-<a href="#241" id="241">241</a>
-<a href="#242" id="242">242</a>
-<a href="#243" id="243">243</a>
-<a href="#244" id="244">244</a>
-<a href="#245" id="245">245</a>
-<a href="#246" id="246">246</a>
-<a href="#247" id="247">247</a>
-<a href="#248" id="248">248</a>
-<a href="#249" id="249">249</a>
-<a href="#250" id="250">250</a>
-<a href="#251" id="251">251</a>
-<a href="#252" id="252">252</a>
-<a href="#253" id="253">253</a>
-<a href="#254" id="254">254</a>
-<a href="#255" id="255">255</a>
-<a href="#256" id="256">256</a>
-<a href="#257" id="257">257</a>
-<a href="#258" id="258">258</a>
-<a href="#259" id="259">259</a>
-<a href="#260" id="260">260</a>
-<a href="#261" id="261">261</a>
-<a href="#262" id="262">262</a>
-<a href="#263" id="263">263</a>
-<a href="#264" id="264">264</a>
-<a href="#265" id="265">265</a>
-<a href="#266" id="266">266</a>
-<a href="#267" id="267">267</a>
-<a href="#268" id="268">268</a>
-<a href="#269" id="269">269</a>
-<a href="#270" id="270">270</a>
-<a href="#271" id="271">271</a>
-<a href="#272" id="272">272</a>
-<a href="#273" id="273">273</a>
-<a href="#274" id="274">274</a>
-<a href="#275" id="275">275</a>
-<a href="#276" id="276">276</a>
-<a href="#277" id="277">277</a>
-<a href="#278" id="278">278</a>
-<a href="#279" id="279">279</a>
-<a href="#280" id="280">280</a>
-<a href="#281" id="281">281</a>
-<a href="#282" id="282">282</a>
-<a href="#283" id="283">283</a>
-<a href="#284" id="284">284</a>
-<a href="#285" id="285">285</a>
-<a href="#286" id="286">286</a>
-<a href="#287" id="287">287</a>
-<a href="#288" id="288">288</a>
-<a href="#289" id="289">289</a>
-<a href="#290" id="290">290</a>
-<a href="#291" id="291">291</a>
-<a href="#292" id="292">292</a>
-<a href="#293" id="293">293</a>
-<a href="#294" id="294">294</a>
-<a href="#295" id="295">295</a>
-<a href="#296" id="296">296</a>
-</pre></div><pre class="rust"><code><span class="comment">// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements.  See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership.  The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// &quot;License&quot;); you may not use this file except in compliance
-// with the License.  You may obtain a copy of the License at
-//
-//   http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing,
-// software distributed under the License is distributed on an
-// &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-// KIND, either express or implied.  See the License for the
-// specific language governing permissions and limitations
-// under the License.
-
-</span><span class="kw">use </span><span class="kw">crate</span>::fixed::{FixedLengthEncoding, FromSlice};
-<span class="kw">use </span><span class="kw">crate</span>::interner::{Interned, OrderPreservingInterner};
-<span class="kw">use crate</span>::{null_sentinel, Row, Rows};
-<span class="kw">use </span>arrow_array::builder::<span class="kw-2">*</span>;
-<span class="kw">use </span>arrow_array::cast::<span class="kw-2">*</span>;
-<span class="kw">use </span>arrow_array::types::<span class="kw-2">*</span>;
-<span class="kw">use </span>arrow_array::<span class="kw-2">*</span>;
-<span class="kw">use </span>arrow_buffer::{ArrowNativeType, MutableBuffer, ToByteSlice};
-<span class="kw">use </span>arrow_data::{ArrayData, ArrayDataBuilder};
-<span class="kw">use </span>arrow_schema::{ArrowError, DataType, SortOptions};
-<span class="kw">use </span>std::collections::hash_map::Entry;
-<span class="kw">use </span>std::collections::HashMap;
-
-<span class="doccomment">/// Computes the dictionary mapping for the given dictionary values
-</span><span class="kw">pub fn </span>compute_dictionary_mapping(
-    interner: <span class="kw-2">&amp;mut </span>OrderPreservingInterner,
-    values: <span class="kw-2">&amp;</span>ArrayRef,
-) -&gt; Vec&lt;<span class="prelude-ty">Option</span>&lt;Interned&gt;&gt; {
-    <span class="macro">downcast_primitive_array! </span>{
-        values =&gt; interner
-            .intern(values.iter().map(|x| x.map(|x| x.encode()))),
-        DataType::Binary =&gt; {
-            <span class="kw">let </span>iter = as_generic_binary_array::&lt;i32&gt;(values).iter();
-            interner.intern(iter)
-        }
-        DataType::LargeBinary =&gt; {
-            <span class="kw">let </span>iter = as_generic_binary_array::&lt;i64&gt;(values).iter();
-            interner.intern(iter)
-        }
-        DataType::Utf8 =&gt; {
-            <span class="kw">let </span>iter = values.as_string::&lt;i32&gt;().iter().map(|x| x.map(|x| x.as_bytes()));
-            interner.intern(iter)
-        }
-        DataType::LargeUtf8 =&gt; {
-            <span class="kw">let </span>iter = values.as_string::&lt;i64&gt;().iter().map(|x| x.map(|x| x.as_bytes()));
-            interner.intern(iter)
-        }
-        <span class="kw">_ </span>=&gt; <span class="macro">unreachable!</span>(),
-    }
-}
-
-<span class="doccomment">/// Encode dictionary values not preserving the dictionary encoding
-</span><span class="kw">pub fn </span>encode_dictionary_values&lt;K: ArrowDictionaryKeyType&gt;(
-    data: <span class="kw-2">&amp;mut </span>[u8],
-    offsets: <span class="kw-2">&amp;mut </span>[usize],
-    column: <span class="kw-2">&amp;</span>DictionaryArray&lt;K&gt;,
-    values: <span class="kw-2">&amp;</span>Rows,
-    null: <span class="kw-2">&amp;</span>Row&lt;<span class="lifetime">&#39;_</span>&gt;,
-) {
-    <span class="kw">for </span>(offset, k) <span class="kw">in </span>offsets.iter_mut().skip(<span class="number">1</span>).zip(column.keys()) {
-        <span class="kw">let </span>row = <span class="kw">match </span>k {
-            <span class="prelude-val">Some</span>(k) =&gt; values.row(k.as_usize()).data,
-            <span class="prelude-val">None </span>=&gt; null.data,
-        };
-        <span class="kw">let </span>end_offset = <span class="kw-2">*</span>offset + row.len();
-        data[<span class="kw-2">*</span>offset..end_offset].copy_from_slice(row);
-        <span class="kw-2">*</span>offset = end_offset;
-    }
-}
-
-<span class="doccomment">/// Dictionary types are encoded as
-///
-/// - single `0_u8` if null
-/// - the bytes of the corresponding normalized key including the null terminator
-</span><span class="kw">pub fn </span>encode_dictionary&lt;K: ArrowDictionaryKeyType&gt;(
-    data: <span class="kw-2">&amp;mut </span>[u8],
-    offsets: <span class="kw-2">&amp;mut </span>[usize],
-    column: <span class="kw-2">&amp;</span>DictionaryArray&lt;K&gt;,
-    normalized_keys: <span class="kw-2">&amp;</span>[<span class="prelude-ty">Option</span>&lt;<span class="kw-2">&amp;</span>[u8]&gt;],
-    opts: SortOptions,
-) {
-    <span class="kw">for </span>(offset, k) <span class="kw">in </span>offsets.iter_mut().skip(<span class="number">1</span>).zip(column.keys()) {
-        <span class="kw">match </span>k.and_then(|k| normalized_keys[k.as_usize()]) {
-            <span class="prelude-val">Some</span>(normalized_key) =&gt; {
-                <span class="kw">let </span>end_offset = <span class="kw-2">*</span>offset + <span class="number">1 </span>+ normalized_key.len();
-                data[<span class="kw-2">*</span>offset] = <span class="number">1</span>;
-                data[<span class="kw-2">*</span>offset + <span class="number">1</span>..end_offset].copy_from_slice(normalized_key);
-                <span class="comment">// Negate if descending
-                </span><span class="kw">if </span>opts.descending {
-                    data[<span class="kw-2">*</span>offset..end_offset].iter_mut().for_each(|v| <span class="kw-2">*</span>v = !<span class="kw-2">*</span>v)
-                }
-                <span class="kw-2">*</span>offset = end_offset;
-            }
-            <span class="prelude-val">None </span>=&gt; {
-                data[<span class="kw-2">*</span>offset] = null_sentinel(opts);
-                <span class="kw-2">*</span>offset += <span class="number">1</span>;
-            }
-        }
-    }
-}
-
-<span class="macro">macro_rules! </span>decode_primitive_helper {
-    (<span class="macro-nonterminal">$t</span>:ty, <span class="macro-nonterminal">$values</span>: ident, <span class="macro-nonterminal">$data_type</span>:ident) =&gt; {
-        decode_primitive::&lt;<span class="macro-nonterminal">$t</span>&gt;(<span class="kw-2">&amp;</span><span class="macro-nonterminal">$values</span>, <span class="macro-nonterminal">$data_type</span>.clone())
-    };
-}
-
-<span class="doccomment">/// Decodes a string array from `rows` with the provided `options`
-///
-/// # Safety
-///
-/// `interner` must contain valid data for the provided `value_type`
-</span><span class="kw">pub unsafe fn </span>decode_dictionary&lt;K: ArrowDictionaryKeyType&gt;(
-    interner: <span class="kw-2">&amp;</span>OrderPreservingInterner,
-    value_type: <span class="kw-2">&amp;</span>DataType,
-    options: SortOptions,
-    rows: <span class="kw-2">&amp;mut </span>[<span class="kw-2">&amp;</span>[u8]],
-) -&gt; <span class="prelude-ty">Result</span>&lt;DictionaryArray&lt;K&gt;, ArrowError&gt; {
-    <span class="kw">let </span>len = rows.len();
-    <span class="kw">let </span><span class="kw-2">mut </span>dictionary: HashMap&lt;Interned, K::Native&gt; = HashMap::with_capacity(len);
-
-    <span class="kw">let </span>null_sentinel = null_sentinel(options);
-
-    <span class="comment">// If descending, the null terminator will have been negated
-    </span><span class="kw">let </span>null_terminator = <span class="kw">match </span>options.descending {
-        <span class="bool-val">true </span>=&gt; <span class="number">0xFF</span>,
-        <span class="bool-val">false </span>=&gt; <span class="number">0_u8</span>,
-    };
-
-    <span class="kw">let </span><span class="kw-2">mut </span>null_builder = BooleanBufferBuilder::new(len);
-    <span class="kw">let </span><span class="kw-2">mut </span>keys = BufferBuilder::&lt;K::Native&gt;::new(len);
-    <span class="kw">let </span><span class="kw-2">mut </span>values = Vec::with_capacity(len);
-    <span class="kw">let </span><span class="kw-2">mut </span>null_count = <span class="number">0</span>;
-    <span class="kw">let </span><span class="kw-2">mut </span>key_scratch = Vec::new();
-
-    <span class="kw">for </span>row <span class="kw">in </span>rows {
-        <span class="kw">if </span>row[<span class="number">0</span>] == null_sentinel {
-            null_builder.append(<span class="bool-val">false</span>);
-            null_count += <span class="number">1</span>;
-            <span class="kw-2">*</span>row = <span class="kw-2">&amp;</span>row[<span class="number">1</span>..];
-            keys.append(K::Native::default());
-            <span class="kw">continue</span>;
-        }
-
-        <span class="kw">let </span>key_offset = row
-            .iter()
-            .skip(<span class="number">1</span>)
-            .position(|x| <span class="kw-2">*</span>x == null_terminator)
-            .unwrap();
-
-        <span class="comment">// Extract the normalized key including the null terminator
-        </span><span class="kw">let </span>key = <span class="kw-2">&amp;</span>row[<span class="number">1</span>..key_offset + <span class="number">2</span>];
-        <span class="kw-2">*</span>row = <span class="kw-2">&amp;</span>row[key_offset + <span class="number">2</span>..];
-
-        <span class="kw">let </span>interned = <span class="kw">match </span>options.descending {
-            <span class="bool-val">true </span>=&gt; {
-                <span class="comment">// If options.descending the normalized key will have been
-                // negated we must first reverse this
-                </span>key_scratch.clear();
-                key_scratch.extend_from_slice(key);
-                key_scratch.iter_mut().for_each(|o| <span class="kw-2">*</span>o = !<span class="kw-2">*</span>o);
-                interner.lookup(<span class="kw-2">&amp;</span>key_scratch).unwrap()
-            }
-            <span class="bool-val">false </span>=&gt; interner.lookup(key).unwrap(),
-        };
-
-        <span class="kw">let </span>k = <span class="kw">match </span>dictionary.entry(interned) {
-            Entry::Vacant(v) =&gt; {
-                <span class="kw">let </span>k = values.len();
-                values.push(interner.value(interned));
-                <span class="kw">let </span>key = K::Native::from_usize(k)
-                    .ok_or(ArrowError::DictionaryKeyOverflowError)<span class="question-mark">?</span>;
-                <span class="kw-2">*</span>v.insert(key)
-            }
-            Entry::Occupied(o) =&gt; <span class="kw-2">*</span>o.get(),
-        };
-
-        keys.append(k);
-        null_builder.append(<span class="bool-val">true</span>);
-    }
-
-    <span class="kw">let </span>child = <span class="macro">downcast_primitive! </span>{
-        value_type =&gt; (decode_primitive_helper, values, value_type),
-        DataType::Null =&gt; NullArray::new(values.len()).into_data(),
-        DataType::Boolean =&gt; decode_bool(<span class="kw-2">&amp;</span>values),
-        DataType::Utf8 =&gt; decode_string::&lt;i32&gt;(<span class="kw-2">&amp;</span>values),
-        DataType::LargeUtf8 =&gt; decode_string::&lt;i64&gt;(<span class="kw-2">&amp;</span>values),
-        DataType::Binary =&gt; decode_binary::&lt;i32&gt;(<span class="kw-2">&amp;</span>values),
-        DataType::LargeBinary =&gt; decode_binary::&lt;i64&gt;(<span class="kw-2">&amp;</span>values),
-        <span class="kw">_ </span>=&gt; <span class="macro">unreachable!</span>(),
-    };
-
-    <span class="kw">let </span>data_type =
-        DataType::Dictionary(Box::new(K::DATA_TYPE), Box::new(value_type.clone()));
-
-    <span class="kw">let </span>builder = ArrayDataBuilder::new(data_type)
-        .len(len)
-        .null_bit_buffer(<span class="prelude-val">Some</span>(null_builder.into()))
-        .null_count(null_count)
-        .add_buffer(keys.finish())
-        .add_child_data(child);
-
-    <span class="prelude-val">Ok</span>(DictionaryArray::from(builder.build_unchecked()))
-}
-
-<span class="doccomment">/// Decodes a binary array from dictionary values
-///
-/// # Safety
-///
-/// Values must be valid UTF-8
-</span><span class="kw">fn </span>decode_binary&lt;O: OffsetSizeTrait&gt;(values: <span class="kw-2">&amp;</span>[<span class="kw-2">&amp;</span>[u8]]) -&gt; ArrayData {
-    <span class="kw">let </span>capacity = values.iter().map(|x| x.len()).sum();
-    <span class="kw">let </span><span class="kw-2">mut </span>builder = GenericBinaryBuilder::&lt;O&gt;::with_capacity(values.len(), capacity);
-    <span class="kw">for </span>v <span class="kw">in </span>values {
-        builder.append_value(v)
-    }
-    builder.finish().into_data()
-}
-
-<span class="doccomment">/// Decodes a string array from dictionary values
-///
-/// # Safety
-///
-/// Values must be valid UTF-8
-</span><span class="kw">unsafe fn </span>decode_string&lt;O: OffsetSizeTrait&gt;(values: <span class="kw-2">&amp;</span>[<span class="kw-2">&amp;</span>[u8]]) -&gt; ArrayData {
-    <span class="kw">let </span>d = <span class="kw">match </span>O::IS_LARGE {
-        <span class="bool-val">true </span>=&gt; DataType::LargeUtf8,
-        <span class="bool-val">false </span>=&gt; DataType::Utf8,
-    };
-
-    decode_binary::&lt;O&gt;(values)
-        .into_builder()
-        .data_type(d)
-        .build_unchecked()
-}
-
-<span class="doccomment">/// Decodes a boolean array from dictionary values
-</span><span class="kw">fn </span>decode_bool(values: <span class="kw-2">&amp;</span>[<span class="kw-2">&amp;</span>[u8]]) -&gt; ArrayData {
-    <span class="kw">let </span><span class="kw-2">mut </span>builder = BooleanBufferBuilder::new(values.len());
-    <span class="kw">for </span>value <span class="kw">in </span>values {
-        builder.append(bool::decode([value[<span class="number">0</span>]]))
-    }
-
-    <span class="kw">let </span>builder = ArrayDataBuilder::new(DataType::Boolean)
-        .len(values.len())
-        .add_buffer(builder.into());
-
-    <span class="comment">// SAFETY: Buffers correct length
-    </span><span class="kw">unsafe </span>{ builder.build_unchecked() }
-}
-
-<span class="doccomment">/// Decodes a fixed length type array from dictionary values
-///
-/// # Safety
-///
-/// `data_type` must be appropriate native type for `T`
-</span><span class="kw">unsafe fn </span>decode_fixed&lt;T: FixedLengthEncoding + ToByteSlice&gt;(
-    values: <span class="kw-2">&amp;</span>[<span class="kw-2">&amp;</span>[u8]],
-    data_type: DataType,
-) -&gt; ArrayData {
-    <span class="kw">let </span><span class="kw-2">mut </span>buffer = MutableBuffer::new(std::mem::size_of::&lt;T&gt;() * values.len());
-
-    <span class="kw">for </span>value <span class="kw">in </span>values {
-        <span class="kw">let </span>value = T::Encoded::from_slice(value, <span class="bool-val">false</span>);
-        buffer.push(T::decode(value))
-    }
-
-    <span class="kw">let </span>builder = ArrayDataBuilder::new(data_type)
-        .len(values.len())
-        .add_buffer(buffer.into());
-
-    <span class="comment">// SAFETY: Buffers correct length
-    </span>builder.build_unchecked()
-}
-
-<span class="doccomment">/// Decodes a `PrimitiveArray` from dictionary values
-</span><span class="kw">fn </span>decode_primitive&lt;T: ArrowPrimitiveType&gt;(
-    values: <span class="kw-2">&amp;</span>[<span class="kw-2">&amp;</span>[u8]],
-    data_type: DataType,
-) -&gt; ArrayData
-<span class="kw">where
-    </span>T::Native: FixedLengthEncoding,
-{
-    <span class="macro">assert!</span>(PrimitiveArray::&lt;T&gt;::is_compatible(<span class="kw-2">&amp;</span>data_type));
-
-    <span class="comment">// SAFETY:
-    // Validated data type above
-    </span><span class="kw">unsafe </span>{ decode_fixed::&lt;T::Native&gt;(values, data_type) }
-}
-</code></pre></div></section></main></body></html>
\ No newline at end of file
diff --git a/src/arrow_row/interner.rs.html b/src/arrow_row/interner.rs.html
deleted file mode 100644
index cebd3833b7..0000000000
--- a/src/arrow_row/interner.rs.html
+++ /dev/null
@@ -1,1047 +0,0 @@
-<!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="Source of the Rust file `arrow-row/src/interner.rs`."><title>interner.rs - source</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href= [...]
-<a href="#2" id="2">2</a>
-<a href="#3" id="3">3</a>
-<a href="#4" id="4">4</a>
-<a href="#5" id="5">5</a>
-<a href="#6" id="6">6</a>
-<a href="#7" id="7">7</a>
-<a href="#8" id="8">8</a>
-<a href="#9" id="9">9</a>
-<a href="#10" id="10">10</a>
-<a href="#11" id="11">11</a>
-<a href="#12" id="12">12</a>
-<a href="#13" id="13">13</a>
-<a href="#14" id="14">14</a>
-<a href="#15" id="15">15</a>
-<a href="#16" id="16">16</a>
-<a href="#17" id="17">17</a>
-<a href="#18" id="18">18</a>
-<a href="#19" id="19">19</a>
-<a href="#20" id="20">20</a>
-<a href="#21" id="21">21</a>
-<a href="#22" id="22">22</a>
-<a href="#23" id="23">23</a>
-<a href="#24" id="24">24</a>
-<a href="#25" id="25">25</a>
-<a href="#26" id="26">26</a>
-<a href="#27" id="27">27</a>
-<a href="#28" id="28">28</a>
-<a href="#29" id="29">29</a>
-<a href="#30" id="30">30</a>
-<a href="#31" id="31">31</a>
-<a href="#32" id="32">32</a>
-<a href="#33" id="33">33</a>
-<a href="#34" id="34">34</a>
-<a href="#35" id="35">35</a>
-<a href="#36" id="36">36</a>
-<a href="#37" id="37">37</a>
-<a href="#38" id="38">38</a>
-<a href="#39" id="39">39</a>
-<a href="#40" id="40">40</a>
-<a href="#41" id="41">41</a>
-<a href="#42" id="42">42</a>
-<a href="#43" id="43">43</a>
-<a href="#44" id="44">44</a>
-<a href="#45" id="45">45</a>
-<a href="#46" id="46">46</a>
-<a href="#47" id="47">47</a>
-<a href="#48" id="48">48</a>
-<a href="#49" id="49">49</a>
-<a href="#50" id="50">50</a>
-<a href="#51" id="51">51</a>
-<a href="#52" id="52">52</a>
-<a href="#53" id="53">53</a>
-<a href="#54" id="54">54</a>
-<a href="#55" id="55">55</a>
-<a href="#56" id="56">56</a>
-<a href="#57" id="57">57</a>
-<a href="#58" id="58">58</a>
-<a href="#59" id="59">59</a>
-<a href="#60" id="60">60</a>
-<a href="#61" id="61">61</a>
-<a href="#62" id="62">62</a>
-<a href="#63" id="63">63</a>
-<a href="#64" id="64">64</a>
-<a href="#65" id="65">65</a>
-<a href="#66" id="66">66</a>
-<a href="#67" id="67">67</a>
-<a href="#68" id="68">68</a>
-<a href="#69" id="69">69</a>
-<a href="#70" id="70">70</a>
-<a href="#71" id="71">71</a>
-<a href="#72" id="72">72</a>
-<a href="#73" id="73">73</a>
-<a href="#74" id="74">74</a>
-<a href="#75" id="75">75</a>
-<a href="#76" id="76">76</a>
-<a href="#77" id="77">77</a>
-<a href="#78" id="78">78</a>
-<a href="#79" id="79">79</a>
-<a href="#80" id="80">80</a>
-<a href="#81" id="81">81</a>
-<a href="#82" id="82">82</a>
-<a href="#83" id="83">83</a>
-<a href="#84" id="84">84</a>
-<a href="#85" id="85">85</a>
-<a href="#86" id="86">86</a>
-<a href="#87" id="87">87</a>
-<a href="#88" id="88">88</a>
-<a href="#89" id="89">89</a>
-<a href="#90" id="90">90</a>
-<a href="#91" id="91">91</a>
-<a href="#92" id="92">92</a>
-<a href="#93" id="93">93</a>
-<a href="#94" id="94">94</a>
-<a href="#95" id="95">95</a>
-<a href="#96" id="96">96</a>
-<a href="#97" id="97">97</a>
-<a href="#98" id="98">98</a>
-<a href="#99" id="99">99</a>
-<a href="#100" id="100">100</a>
-<a href="#101" id="101">101</a>
-<a href="#102" id="102">102</a>
-<a href="#103" id="103">103</a>
-<a href="#104" id="104">104</a>
-<a href="#105" id="105">105</a>
-<a href="#106" id="106">106</a>
-<a href="#107" id="107">107</a>
-<a href="#108" id="108">108</a>
-<a href="#109" id="109">109</a>
-<a href="#110" id="110">110</a>
-<a href="#111" id="111">111</a>
-<a href="#112" id="112">112</a>
-<a href="#113" id="113">113</a>
-<a href="#114" id="114">114</a>
-<a href="#115" id="115">115</a>
-<a href="#116" id="116">116</a>
-<a href="#117" id="117">117</a>
-<a href="#118" id="118">118</a>
-<a href="#119" id="119">119</a>
-<a href="#120" id="120">120</a>
-<a href="#121" id="121">121</a>
-<a href="#122" id="122">122</a>
-<a href="#123" id="123">123</a>
-<a href="#124" id="124">124</a>
-<a href="#125" id="125">125</a>
-<a href="#126" id="126">126</a>
-<a href="#127" id="127">127</a>
-<a href="#128" id="128">128</a>
-<a href="#129" id="129">129</a>
-<a href="#130" id="130">130</a>
-<a href="#131" id="131">131</a>
-<a href="#132" id="132">132</a>
-<a href="#133" id="133">133</a>
-<a href="#134" id="134">134</a>
-<a href="#135" id="135">135</a>
-<a href="#136" id="136">136</a>
-<a href="#137" id="137">137</a>
-<a href="#138" id="138">138</a>
-<a href="#139" id="139">139</a>
-<a href="#140" id="140">140</a>
-<a href="#141" id="141">141</a>
-<a href="#142" id="142">142</a>
-<a href="#143" id="143">143</a>
-<a href="#144" id="144">144</a>
-<a href="#145" id="145">145</a>
-<a href="#146" id="146">146</a>
-<a href="#147" id="147">147</a>
-<a href="#148" id="148">148</a>
-<a href="#149" id="149">149</a>
-<a href="#150" id="150">150</a>
-<a href="#151" id="151">151</a>
-<a href="#152" id="152">152</a>
-<a href="#153" id="153">153</a>
-<a href="#154" id="154">154</a>
-<a href="#155" id="155">155</a>
-<a href="#156" id="156">156</a>
-<a href="#157" id="157">157</a>
-<a href="#158" id="158">158</a>
-<a href="#159" id="159">159</a>
-<a href="#160" id="160">160</a>
-<a href="#161" id="161">161</a>
-<a href="#162" id="162">162</a>
-<a href="#163" id="163">163</a>
-<a href="#164" id="164">164</a>
-<a href="#165" id="165">165</a>
-<a href="#166" id="166">166</a>
-<a href="#167" id="167">167</a>
-<a href="#168" id="168">168</a>
-<a href="#169" id="169">169</a>
-<a href="#170" id="170">170</a>
-<a href="#171" id="171">171</a>
-<a href="#172" id="172">172</a>
-<a href="#173" id="173">173</a>
-<a href="#174" id="174">174</a>
-<a href="#175" id="175">175</a>
-<a href="#176" id="176">176</a>
-<a href="#177" id="177">177</a>
-<a href="#178" id="178">178</a>
-<a href="#179" id="179">179</a>
-<a href="#180" id="180">180</a>
-<a href="#181" id="181">181</a>
-<a href="#182" id="182">182</a>
-<a href="#183" id="183">183</a>
-<a href="#184" id="184">184</a>
-<a href="#185" id="185">185</a>
-<a href="#186" id="186">186</a>
-<a href="#187" id="187">187</a>
-<a href="#188" id="188">188</a>
-<a href="#189" id="189">189</a>
-<a href="#190" id="190">190</a>
-<a href="#191" id="191">191</a>
-<a href="#192" id="192">192</a>
-<a href="#193" id="193">193</a>
-<a href="#194" id="194">194</a>
-<a href="#195" id="195">195</a>
-<a href="#196" id="196">196</a>
-<a href="#197" id="197">197</a>
-<a href="#198" id="198">198</a>
-<a href="#199" id="199">199</a>
-<a href="#200" id="200">200</a>
-<a href="#201" id="201">201</a>
-<a href="#202" id="202">202</a>
-<a href="#203" id="203">203</a>
-<a href="#204" id="204">204</a>
-<a href="#205" id="205">205</a>
-<a href="#206" id="206">206</a>
-<a href="#207" id="207">207</a>
-<a href="#208" id="208">208</a>
-<a href="#209" id="209">209</a>
-<a href="#210" id="210">210</a>
-<a href="#211" id="211">211</a>
-<a href="#212" id="212">212</a>
-<a href="#213" id="213">213</a>
-<a href="#214" id="214">214</a>
-<a href="#215" id="215">215</a>
-<a href="#216" id="216">216</a>
-<a href="#217" id="217">217</a>
-<a href="#218" id="218">218</a>
-<a href="#219" id="219">219</a>
-<a href="#220" id="220">220</a>
-<a href="#221" id="221">221</a>
-<a href="#222" id="222">222</a>
-<a href="#223" id="223">223</a>
-<a href="#224" id="224">224</a>
-<a href="#225" id="225">225</a>
-<a href="#226" id="226">226</a>
-<a href="#227" id="227">227</a>
-<a href="#228" id="228">228</a>
-<a href="#229" id="229">229</a>
-<a href="#230" id="230">230</a>
-<a href="#231" id="231">231</a>
-<a href="#232" id="232">232</a>
-<a href="#233" id="233">233</a>
-<a href="#234" id="234">234</a>
-<a href="#235" id="235">235</a>
-<a href="#236" id="236">236</a>
-<a href="#237" id="237">237</a>
-<a href="#238" id="238">238</a>
-<a href="#239" id="239">239</a>
-<a href="#240" id="240">240</a>
-<a href="#241" id="241">241</a>
-<a href="#242" id="242">242</a>
-<a href="#243" id="243">243</a>
-<a href="#244" id="244">244</a>
-<a href="#245" id="245">245</a>
-<a href="#246" id="246">246</a>
-<a href="#247" id="247">247</a>
-<a href="#248" id="248">248</a>
-<a href="#249" id="249">249</a>
-<a href="#250" id="250">250</a>
-<a href="#251" id="251">251</a>
-<a href="#252" id="252">252</a>
-<a href="#253" id="253">253</a>
-<a href="#254" id="254">254</a>
-<a href="#255" id="255">255</a>
-<a href="#256" id="256">256</a>
-<a href="#257" id="257">257</a>
-<a href="#258" id="258">258</a>
-<a href="#259" id="259">259</a>
-<a href="#260" id="260">260</a>
-<a href="#261" id="261">261</a>
-<a href="#262" id="262">262</a>
-<a href="#263" id="263">263</a>
-<a href="#264" id="264">264</a>
-<a href="#265" id="265">265</a>
-<a href="#266" id="266">266</a>
-<a href="#267" id="267">267</a>
-<a href="#268" id="268">268</a>
-<a href="#269" id="269">269</a>
-<a href="#270" id="270">270</a>
-<a href="#271" id="271">271</a>
-<a href="#272" id="272">272</a>
-<a href="#273" id="273">273</a>
-<a href="#274" id="274">274</a>
-<a href="#275" id="275">275</a>
-<a href="#276" id="276">276</a>
-<a href="#277" id="277">277</a>
-<a href="#278" id="278">278</a>
-<a href="#279" id="279">279</a>
-<a href="#280" id="280">280</a>
-<a href="#281" id="281">281</a>
-<a href="#282" id="282">282</a>
-<a href="#283" id="283">283</a>
-<a href="#284" id="284">284</a>
-<a href="#285" id="285">285</a>
-<a href="#286" id="286">286</a>
-<a href="#287" id="287">287</a>
-<a href="#288" id="288">288</a>
-<a href="#289" id="289">289</a>
-<a href="#290" id="290">290</a>
-<a href="#291" id="291">291</a>
-<a href="#292" id="292">292</a>
-<a href="#293" id="293">293</a>
-<a href="#294" id="294">294</a>
-<a href="#295" id="295">295</a>
-<a href="#296" id="296">296</a>
-<a href="#297" id="297">297</a>
-<a href="#298" id="298">298</a>
-<a href="#299" id="299">299</a>
-<a href="#300" id="300">300</a>
-<a href="#301" id="301">301</a>
-<a href="#302" id="302">302</a>
-<a href="#303" id="303">303</a>
-<a href="#304" id="304">304</a>
-<a href="#305" id="305">305</a>
-<a href="#306" id="306">306</a>
-<a href="#307" id="307">307</a>
-<a href="#308" id="308">308</a>
-<a href="#309" id="309">309</a>
-<a href="#310" id="310">310</a>
-<a href="#311" id="311">311</a>
-<a href="#312" id="312">312</a>
-<a href="#313" id="313">313</a>
-<a href="#314" id="314">314</a>
-<a href="#315" id="315">315</a>
-<a href="#316" id="316">316</a>
-<a href="#317" id="317">317</a>
-<a href="#318" id="318">318</a>
-<a href="#319" id="319">319</a>
-<a href="#320" id="320">320</a>
-<a href="#321" id="321">321</a>
-<a href="#322" id="322">322</a>
-<a href="#323" id="323">323</a>
-<a href="#324" id="324">324</a>
-<a href="#325" id="325">325</a>
-<a href="#326" id="326">326</a>
-<a href="#327" id="327">327</a>
-<a href="#328" id="328">328</a>
-<a href="#329" id="329">329</a>
-<a href="#330" id="330">330</a>
-<a href="#331" id="331">331</a>
-<a href="#332" id="332">332</a>
-<a href="#333" id="333">333</a>
-<a href="#334" id="334">334</a>
-<a href="#335" id="335">335</a>
-<a href="#336" id="336">336</a>
-<a href="#337" id="337">337</a>
-<a href="#338" id="338">338</a>
-<a href="#339" id="339">339</a>
-<a href="#340" id="340">340</a>
-<a href="#341" id="341">341</a>
-<a href="#342" id="342">342</a>
-<a href="#343" id="343">343</a>
-<a href="#344" id="344">344</a>
-<a href="#345" id="345">345</a>
-<a href="#346" id="346">346</a>
-<a href="#347" id="347">347</a>
-<a href="#348" id="348">348</a>
-<a href="#349" id="349">349</a>
-<a href="#350" id="350">350</a>
-<a href="#351" id="351">351</a>
-<a href="#352" id="352">352</a>
-<a href="#353" id="353">353</a>
-<a href="#354" id="354">354</a>
-<a href="#355" id="355">355</a>
-<a href="#356" id="356">356</a>
-<a href="#357" id="357">357</a>
-<a href="#358" id="358">358</a>
-<a href="#359" id="359">359</a>
-<a href="#360" id="360">360</a>
-<a href="#361" id="361">361</a>
-<a href="#362" id="362">362</a>
-<a href="#363" id="363">363</a>
-<a href="#364" id="364">364</a>
-<a href="#365" id="365">365</a>
-<a href="#366" id="366">366</a>
-<a href="#367" id="367">367</a>
-<a href="#368" id="368">368</a>
-<a href="#369" id="369">369</a>
-<a href="#370" id="370">370</a>
-<a href="#371" id="371">371</a>
-<a href="#372" id="372">372</a>
-<a href="#373" id="373">373</a>
-<a href="#374" id="374">374</a>
-<a href="#375" id="375">375</a>
-<a href="#376" id="376">376</a>
-<a href="#377" id="377">377</a>
-<a href="#378" id="378">378</a>
-<a href="#379" id="379">379</a>
-<a href="#380" id="380">380</a>
-<a href="#381" id="381">381</a>
-<a href="#382" id="382">382</a>
-<a href="#383" id="383">383</a>
-<a href="#384" id="384">384</a>
-<a href="#385" id="385">385</a>
-<a href="#386" id="386">386</a>
-<a href="#387" id="387">387</a>
-<a href="#388" id="388">388</a>
-<a href="#389" id="389">389</a>
-<a href="#390" id="390">390</a>
-<a href="#391" id="391">391</a>
-<a href="#392" id="392">392</a>
-<a href="#393" id="393">393</a>
-<a href="#394" id="394">394</a>
-<a href="#395" id="395">395</a>
-<a href="#396" id="396">396</a>
-<a href="#397" id="397">397</a>
-<a href="#398" id="398">398</a>
-<a href="#399" id="399">399</a>
-<a href="#400" id="400">400</a>
-<a href="#401" id="401">401</a>
-<a href="#402" id="402">402</a>
-<a href="#403" id="403">403</a>
-<a href="#404" id="404">404</a>
-<a href="#405" id="405">405</a>
-<a href="#406" id="406">406</a>
-<a href="#407" id="407">407</a>
-<a href="#408" id="408">408</a>
-<a href="#409" id="409">409</a>
-<a href="#410" id="410">410</a>
-<a href="#411" id="411">411</a>
-<a href="#412" id="412">412</a>
-<a href="#413" id="413">413</a>
-<a href="#414" id="414">414</a>
-<a href="#415" id="415">415</a>
-<a href="#416" id="416">416</a>
-<a href="#417" id="417">417</a>
-<a href="#418" id="418">418</a>
-<a href="#419" id="419">419</a>
-<a href="#420" id="420">420</a>
-<a href="#421" id="421">421</a>
-<a href="#422" id="422">422</a>
-<a href="#423" id="423">423</a>
-<a href="#424" id="424">424</a>
-<a href="#425" id="425">425</a>
-<a href="#426" id="426">426</a>
-<a href="#427" id="427">427</a>
-<a href="#428" id="428">428</a>
-<a href="#429" id="429">429</a>
-<a href="#430" id="430">430</a>
-<a href="#431" id="431">431</a>
-<a href="#432" id="432">432</a>
-<a href="#433" id="433">433</a>
-<a href="#434" id="434">434</a>
-<a href="#435" id="435">435</a>
-<a href="#436" id="436">436</a>
-<a href="#437" id="437">437</a>
-<a href="#438" id="438">438</a>
-<a href="#439" id="439">439</a>
-<a href="#440" id="440">440</a>
-<a href="#441" id="441">441</a>
-<a href="#442" id="442">442</a>
-<a href="#443" id="443">443</a>
-<a href="#444" id="444">444</a>
-<a href="#445" id="445">445</a>
-<a href="#446" id="446">446</a>
-<a href="#447" id="447">447</a>
-<a href="#448" id="448">448</a>
-<a href="#449" id="449">449</a>
-<a href="#450" id="450">450</a>
-<a href="#451" id="451">451</a>
-<a href="#452" id="452">452</a>
-<a href="#453" id="453">453</a>
-<a href="#454" id="454">454</a>
-<a href="#455" id="455">455</a>
-<a href="#456" id="456">456</a>
-<a href="#457" id="457">457</a>
-<a href="#458" id="458">458</a>
-<a href="#459" id="459">459</a>
-<a href="#460" id="460">460</a>
-<a href="#461" id="461">461</a>
-<a href="#462" id="462">462</a>
-<a href="#463" id="463">463</a>
-<a href="#464" id="464">464</a>
-<a href="#465" id="465">465</a>
-<a href="#466" id="466">466</a>
-<a href="#467" id="467">467</a>
-<a href="#468" id="468">468</a>
-<a href="#469" id="469">469</a>
-<a href="#470" id="470">470</a>
-<a href="#471" id="471">471</a>
-<a href="#472" id="472">472</a>
-<a href="#473" id="473">473</a>
-<a href="#474" id="474">474</a>
-<a href="#475" id="475">475</a>
-<a href="#476" id="476">476</a>
-<a href="#477" id="477">477</a>
-<a href="#478" id="478">478</a>
-<a href="#479" id="479">479</a>
-<a href="#480" id="480">480</a>
-<a href="#481" id="481">481</a>
-<a href="#482" id="482">482</a>
-<a href="#483" id="483">483</a>
-<a href="#484" id="484">484</a>
-<a href="#485" id="485">485</a>
-<a href="#486" id="486">486</a>
-<a href="#487" id="487">487</a>
-<a href="#488" id="488">488</a>
-<a href="#489" id="489">489</a>
-<a href="#490" id="490">490</a>
-<a href="#491" id="491">491</a>
-<a href="#492" id="492">492</a>
-<a href="#493" id="493">493</a>
-<a href="#494" id="494">494</a>
-<a href="#495" id="495">495</a>
-<a href="#496" id="496">496</a>
-<a href="#497" id="497">497</a>
-<a href="#498" id="498">498</a>
-<a href="#499" id="499">499</a>
-<a href="#500" id="500">500</a>
-<a href="#501" id="501">501</a>
-<a href="#502" id="502">502</a>
-<a href="#503" id="503">503</a>
-<a href="#504" id="504">504</a>
-<a href="#505" id="505">505</a>
-<a href="#506" id="506">506</a>
-<a href="#507" id="507">507</a>
-<a href="#508" id="508">508</a>
-<a href="#509" id="509">509</a>
-<a href="#510" id="510">510</a>
-<a href="#511" id="511">511</a>
-<a href="#512" id="512">512</a>
-<a href="#513" id="513">513</a>
-<a href="#514" id="514">514</a>
-<a href="#515" id="515">515</a>
-<a href="#516" id="516">516</a>
-<a href="#517" id="517">517</a>
-<a href="#518" id="518">518</a>
-<a href="#519" id="519">519</a>
-<a href="#520" id="520">520</a>
-<a href="#521" id="521">521</a>
-<a href="#522" id="522">522</a>
-<a href="#523" id="523">523</a>
-</pre></div><pre class="rust"><code><span class="comment">// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements.  See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership.  The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// &quot;License&quot;); you may not use this file except in compliance
-// with the License.  You may obtain a copy of the License at
-//
-//   http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing,
-// software distributed under the License is distributed on an
-// &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-// KIND, either express or implied.  See the License for the
-// specific language governing permissions and limitations
-// under the License.
-
-</span><span class="kw">use </span>hashbrown::hash_map::RawEntryMut;
-<span class="kw">use </span>hashbrown::HashMap;
-<span class="kw">use </span>std::num::NonZeroU32;
-<span class="kw">use </span>std::ops::Index;
-
-<span class="doccomment">/// An interned value
-</span><span class="attr">#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)]
-</span><span class="kw">pub struct </span>Interned(NonZeroU32); <span class="comment">// We use NonZeroU32 so that `Option&lt;Interned&gt;` is 32 bits
-
-</span><span class="doccomment">/// A byte array interner that generates normalized keys that are sorted with respect
-/// to the interned values, e.g. `inter(a) &lt; intern(b) =&gt; a &lt; b`
-</span><span class="attr">#[derive(Debug, Default)]
-</span><span class="kw">pub struct </span>OrderPreservingInterner {
-    <span class="doccomment">/// Provides a lookup from [`Interned`] to the normalized key
-    </span>keys: InternBuffer,
-    <span class="doccomment">/// Provides a lookup from [`Interned`] to the normalized value
-    </span>values: InternBuffer,
-    <span class="doccomment">/// Key allocation data structure
-    </span>bucket: Box&lt;Bucket&gt;,
-
-    <span class="comment">// A hash table used to perform faster re-keying, and detect duplicates
-    </span>hasher: ahash::RandomState,
-    lookup: HashMap&lt;Interned, (), ()&gt;,
-}
-
-<span class="kw">impl </span>OrderPreservingInterner {
-    <span class="doccomment">/// Interns an iterator of values returning a list of [`Interned`] which can be
-    /// used with [`Self::normalized_key`] to retrieve the normalized keys with a
-    /// lifetime not tied to the mutable borrow passed to this method
-    </span><span class="kw">pub fn </span>intern&lt;I, V&gt;(<span class="kw-2">&amp;mut </span><span class="self">self</span>, input: I) -&gt; Vec&lt;<span class="prelude-ty">Option</span>&lt;Interned&gt;&gt;
-    <span class="kw">where
-        </span>I: IntoIterator&lt;Item = <span class="prelude-ty">Option</span>&lt;V&gt;&gt;,
-        V: AsRef&lt;[u8]&gt;,
-    {
-        <span class="kw">let </span>iter = input.into_iter();
-        <span class="kw">let </span>capacity = iter.size_hint().<span class="number">0</span>;
-        <span class="kw">let </span><span class="kw-2">mut </span>out = Vec::with_capacity(capacity);
-
-        <span class="comment">// (index in output, hash value, value)
-        </span><span class="kw">let </span><span class="kw-2">mut </span>to_intern: Vec&lt;(usize, u64, V)&gt; = Vec::with_capacity(capacity);
-        <span class="kw">let </span><span class="kw-2">mut </span>to_intern_len = <span class="number">0</span>;
-
-        <span class="kw">for </span>(idx, item) <span class="kw">in </span>iter.enumerate() {
-            <span class="kw">let </span>value: V = <span class="kw">match </span>item {
-                <span class="prelude-val">Some</span>(value) =&gt; value,
-                <span class="prelude-val">None </span>=&gt; {
-                    out.push(<span class="prelude-val">None</span>);
-                    <span class="kw">continue</span>;
-                }
-            };
-
-            <span class="kw">let </span>v = value.as_ref();
-            <span class="kw">let </span>hash = <span class="self">self</span>.hasher.hash_one(v);
-            <span class="kw">let </span>entry = <span class="self">self
-                </span>.lookup
-                .raw_entry_mut()
-                .from_hash(hash, |a| <span class="kw-2">&amp;</span><span class="self">self</span>.values[<span class="kw-2">*</span>a] == v);
-
-            <span class="kw">match </span>entry {
-                RawEntryMut::Occupied(o) =&gt; out.push(<span class="prelude-val">Some</span>(<span class="kw-2">*</span>o.key())),
-                RawEntryMut::Vacant(<span class="kw">_</span>) =&gt; {
-                    <span class="comment">// Push placeholder
-                    </span>out.push(<span class="prelude-val">None</span>);
-                    to_intern_len += v.len();
-                    to_intern.push((idx, hash, value));
-                }
-            };
-        }
-
-        to_intern.sort_unstable_by(|(<span class="kw">_</span>, <span class="kw">_</span>, a), (<span class="kw">_</span>, <span class="kw">_</span>, b)| a.as_ref().cmp(b.as_ref()));
-
-        <span class="self">self</span>.keys.offsets.reserve(to_intern.len());
-        <span class="self">self</span>.keys.values.reserve(to_intern.len()); <span class="comment">// Approximation
-        </span><span class="self">self</span>.values.offsets.reserve(to_intern.len());
-        <span class="self">self</span>.values.values.reserve(to_intern_len);
-
-        <span class="kw">for </span>(idx, hash, value) <span class="kw">in </span>to_intern {
-            <span class="kw">let </span>val = value.as_ref();
-
-            <span class="kw">let </span>entry = <span class="self">self
-                </span>.lookup
-                .raw_entry_mut()
-                .from_hash(hash, |a| <span class="kw-2">&amp;</span><span class="self">self</span>.values[<span class="kw-2">*</span>a] == val);
-
-            <span class="kw">match </span>entry {
-                RawEntryMut::Occupied(o) =&gt; {
-                    out[idx] = <span class="prelude-val">Some</span>(<span class="kw-2">*</span>o.key());
-                }
-                RawEntryMut::Vacant(v) =&gt; {
-                    <span class="kw">let </span>val = value.as_ref();
-                    <span class="self">self</span>.bucket
-                        .insert(<span class="kw-2">&amp;mut </span><span class="self">self</span>.values, val, <span class="kw-2">&amp;mut </span><span class="self">self</span>.keys.values);
-                    <span class="self">self</span>.keys.values.push(<span class="number">0</span>);
-                    <span class="kw">let </span>interned = <span class="self">self</span>.keys.append();
-
-                    <span class="kw">let </span>hasher = <span class="kw-2">&amp;mut </span><span class="self">self</span>.hasher;
-                    <span class="kw">let </span>values = <span class="kw-2">&amp;</span><span class="self">self</span>.values;
-                    v.insert_with_hasher(hash, interned, (), |key| {
-                        hasher.hash_one(<span class="kw-2">&amp;</span>values[<span class="kw-2">*</span>key])
-                    });
-                    out[idx] = <span class="prelude-val">Some</span>(interned);
-                }
-            }
-        }
-
-        out
-    }
-
-    <span class="doccomment">/// Returns a null-terminated byte array that can be compared against other normalized_key
-    /// returned by this instance, to establish ordering of the interned values
-    </span><span class="kw">pub fn </span>normalized_key(<span class="kw-2">&amp;</span><span class="self">self</span>, key: Interned) -&gt; <span class="kw-2">&amp;</span>[u8] {
-        <span class="kw-2">&amp;</span><span class="self">self</span>.keys[key]
-    }
-
-    <span class="doccomment">/// Converts a normalized key returned by [`Self::normalized_key`] to [`Interned`]
-    /// returning `None` if it cannot be found
-    </span><span class="kw">pub fn </span>lookup(<span class="kw-2">&amp;</span><span class="self">self</span>, normalized_key: <span class="kw-2">&amp;</span>[u8]) -&gt; <span class="prelude-ty">Option</span>&lt;Interned&gt; {
-        <span class="kw">let </span>len = normalized_key.len();
-        <span class="kw">if </span>len &lt;= <span class="number">1 </span>{
-            <span class="kw">return </span><span class="prelude-val">None</span>;
-        }
-
-        <span class="kw">let </span><span class="kw-2">mut </span>bucket = <span class="self">self</span>.bucket.as_ref();
-        <span class="kw">if </span>len &gt; <span class="number">2 </span>{
-            <span class="kw">for </span>v <span class="kw">in </span>normalized_key.iter().take(len - <span class="number">2</span>) {
-                <span class="kw">if </span><span class="kw-2">*</span>v == <span class="number">255 </span>{
-                    bucket = bucket.next.as_ref()<span class="question-mark">?</span>;
-                } <span class="kw">else </span>{
-                    <span class="kw">let </span>bucket_idx = v.checked_sub(<span class="number">1</span>)<span class="question-mark">?</span>;
-                    bucket = bucket.slots.get(bucket_idx <span class="kw">as </span>usize)<span class="question-mark">?</span>.child.as_ref()<span class="question-mark">?</span>;
-                }
-            }
-        }
-
-        <span class="kw">let </span>slot_idx = normalized_key[len - <span class="number">2</span>].checked_sub(<span class="number">2</span>)<span class="question-mark">?</span>;
-        <span class="prelude-val">Some</span>(bucket.slots.get(slot_idx <span class="kw">as </span>usize)<span class="question-mark">?</span>.value)
-    }
-
-    <span class="doccomment">/// Returns the interned value for a given [`Interned`]
-    </span><span class="kw">pub fn </span>value(<span class="kw-2">&amp;</span><span class="self">self</span>, key: Interned) -&gt; <span class="kw-2">&amp;</span>[u8] {
-        <span class="self">self</span>.values.index(key)
-    }
-
-    <span class="doccomment">/// Returns the size of this instance in bytes including self
-    </span><span class="kw">pub fn </span>size(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; usize {
-        std::mem::size_of::&lt;<span class="self">Self</span>&gt;()
-            + <span class="self">self</span>.keys.buffer_size()
-            + <span class="self">self</span>.values.buffer_size()
-            + <span class="self">self</span>.bucket.size()
-            + <span class="self">self</span>.lookup.capacity() * std::mem::size_of::&lt;Interned&gt;()
-    }
-}
-
-<span class="doccomment">/// A buffer of `[u8]` indexed by `[Interned]`
-</span><span class="attr">#[derive(Debug)]
-</span><span class="kw">struct </span>InternBuffer {
-    <span class="doccomment">/// Raw values
-    </span>values: Vec&lt;u8&gt;,
-    <span class="doccomment">/// The ith value is `&amp;values[offsets[i]..offsets[i+1]]`
-    </span>offsets: Vec&lt;usize&gt;,
-}
-
-<span class="kw">impl </span>Default <span class="kw">for </span>InternBuffer {
-    <span class="kw">fn </span>default() -&gt; <span class="self">Self </span>{
-        <span class="self">Self </span>{
-            values: Default::default(),
-            offsets: <span class="macro">vec!</span>[<span class="number">0</span>],
-        }
-    }
-}
-
-<span class="kw">impl </span>InternBuffer {
-    <span class="doccomment">/// Insert `data` returning the corresponding [`Interned`]
-    </span><span class="kw">fn </span>insert(<span class="kw-2">&amp;mut </span><span class="self">self</span>, data: <span class="kw-2">&amp;</span>[u8]) -&gt; Interned {
-        <span class="self">self</span>.values.extend_from_slice(data);
-        <span class="self">self</span>.append()
-    }
-
-    <span class="doccomment">/// Appends the next value based on data written to `self.values`
-    /// returning the corresponding [`Interned`]
-    </span><span class="kw">fn </span>append(<span class="kw-2">&amp;mut </span><span class="self">self</span>) -&gt; Interned {
-        <span class="kw">let </span>idx: u32 = <span class="self">self</span>.offsets.len().try_into().unwrap();
-        <span class="kw">let </span>key = Interned(NonZeroU32::new(idx).unwrap());
-        <span class="self">self</span>.offsets.push(<span class="self">self</span>.values.len());
-        key
-    }
-
-    <span class="doccomment">/// Returns the byte size of the associated buffers
-    </span><span class="kw">fn </span>buffer_size(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; usize {
-        <span class="self">self</span>.values.capacity() + <span class="self">self</span>.offsets.capacity() * std::mem::size_of::&lt;usize&gt;()
-    }
-}
-
-<span class="kw">impl </span>Index&lt;Interned&gt; <span class="kw">for </span>InternBuffer {
-    <span class="kw">type </span>Output = [u8];
-
-    <span class="kw">fn </span>index(<span class="kw-2">&amp;</span><span class="self">self</span>, key: Interned) -&gt; <span class="kw-2">&amp;</span><span class="self">Self</span>::Output {
-        <span class="kw">let </span>index = key.<span class="number">0</span>.get() <span class="kw">as </span>usize;
-        <span class="kw">let </span>end = <span class="self">self</span>.offsets[index];
-        <span class="kw">let </span>start = <span class="self">self</span>.offsets[index - <span class="number">1</span>];
-        <span class="comment">// SAFETY:
-        // self.values is never reduced in size and values appended
-        // to self.offsets are always less than self.values at the time
-        </span><span class="kw">unsafe </span>{ <span class="self">self</span>.values.get_unchecked(start..end) }
-    }
-}
-
-<span class="doccomment">/// A slot corresponds to a single byte-value in the generated normalized key
-///
-/// It may contain a value, if not the first slot, and may contain a child [`Bucket`] representing
-/// the next byte in the generated normalized key
-</span><span class="attr">#[derive(Debug, Clone)]
-</span><span class="kw">struct </span>Slot {
-    value: Interned,
-    <span class="doccomment">/// Child values less than `self.value` if any
-    </span>child: <span class="prelude-ty">Option</span>&lt;Box&lt;Bucket&gt;&gt;,
-}
-
-<span class="doccomment">/// Bucket is the root of the data-structure used to allocate normalized keys
-///
-/// In particular it needs to generate keys that
-///
-/// * Contain no `0` bytes other than the null terminator
-/// * Compare lexicographically in the same manner as the encoded `data`
-///
-/// The data structure consists of 254 slots, each of which can store a value.
-/// Additionally each slot may contain a child bucket, containing values smaller
-/// than the value within the slot.
-///
-/// Each bucket also may contain a child bucket, containing values greater than
-/// all values in the current bucket
-///
-/// # Allocation Strategy
-///
-/// The contiguous slice of slots containing values is searched to find the insertion
-/// point for the new value, according to the sort order.
-///
-/// If the insertion position exceeds 254, the number of slots, the value is inserted
-/// into the child bucket of the current bucket.
-///
-/// If the insertion position already contains a value, the value is inserted into the
-/// child bucket of that slot.
-///
-/// If the slot is not occupied, the value is inserted into that slot.
-///
-/// The final key consists of the slot indexes visited incremented by 1,
-/// with the final value incremented by 2, followed by a null terminator.
-///
-/// Consider the case of the integers `[8, 6, 5, 7]` inserted in that order
-///
-/// ```ignore
-/// 8: &amp;[2, 0]
-/// 6: &amp;[1, 2, 0]
-/// 5: &amp;[1, 1, 2, 0]
-/// 7: &amp;[1, 3, 0]
-/// ```
-///
-/// Note: this allocation strategy is optimised for interning values in sorted order
-///
-</span><span class="attr">#[derive(Debug, Clone)]
-</span><span class="kw">struct </span>Bucket {
-    slots: Vec&lt;Slot&gt;,
-    <span class="doccomment">/// Bucket containing values larger than all of `slots`
-    </span>next: <span class="prelude-ty">Option</span>&lt;Box&lt;Bucket&gt;&gt;,
-}
-
-<span class="kw">impl </span>Default <span class="kw">for </span>Bucket {
-    <span class="kw">fn </span>default() -&gt; <span class="self">Self </span>{
-        <span class="self">Self </span>{
-            slots: Vec::with_capacity(<span class="number">254</span>),
-            next: <span class="prelude-val">None</span>,
-        }
-    }
-}
-
-<span class="kw">impl </span>Bucket {
-    <span class="doccomment">/// Insert `data` into this bucket or one of its children, appending the
-    /// normalized key to `out` as it is constructed
-    ///
-    /// # Panics
-    ///
-    /// Panics if the value already exists
-    </span><span class="kw">fn </span>insert(<span class="kw-2">&amp;mut </span><span class="self">self</span>, values_buf: <span class="kw-2">&amp;mut </span>InternBuffer, data: <span class="kw-2">&amp;</span>[u8], out: <span class="kw-2">&amp;mut </span>Vec&lt;u8&gt;) {
-        <span class="kw">let </span>slots_len = <span class="self">self</span>.slots.len() <span class="kw">as </span>u8;
-        <span class="comment">// We optimise the case of inserting a value directly after those already inserted
-        // as [`OrderPreservingInterner::intern`] sorts values prior to interning them
-        </span><span class="kw">match </span><span class="self">self</span>.slots.last() {
-            <span class="prelude-val">Some</span>(slot) =&gt; {
-                <span class="kw">if </span><span class="kw-2">&amp;</span>values_buf[slot.value] &lt; data {
-                    <span class="kw">if </span>slots_len == <span class="number">254 </span>{
-                        out.push(<span class="number">255</span>);
-                        <span class="self">self</span>.next
-                            .get_or_insert_with(Default::default)
-                            .insert(values_buf, data, out)
-                    } <span class="kw">else </span>{
-                        out.push(slots_len + <span class="number">2</span>);
-                        <span class="kw">let </span>value = values_buf.insert(data);
-                        <span class="self">self</span>.slots.push(Slot { value, child: <span class="prelude-val">None </span>});
-                    }
-                } <span class="kw">else </span>{
-                    <span class="comment">// Find insertion point
-                    </span><span class="kw">match </span><span class="self">self
-                        </span>.slots
-                        .binary_search_by(|slot| values_buf[slot.value].cmp(data))
-                    {
-                        <span class="prelude-val">Ok</span>(<span class="kw">_</span>) =&gt; <span class="macro">unreachable!</span>(<span class="string">&quot;value already exists&quot;</span>),
-                        <span class="prelude-val">Err</span>(idx) =&gt; {
-                            out.push(idx <span class="kw">as </span>u8 + <span class="number">1</span>);
-                            <span class="self">self</span>.slots[idx]
-                                .child
-                                .get_or_insert_with(Default::default)
-                                .insert(values_buf, data, out)
-                        }
-                    }
-                }
-            }
-            <span class="prelude-val">None </span>=&gt; {
-                out.push(<span class="number">2</span>);
-                <span class="kw">let </span>value = values_buf.insert(data);
-                <span class="self">self</span>.slots.push(Slot { value, child: <span class="prelude-val">None </span>})
-            }
-        }
-    }
-
-    <span class="doccomment">/// Returns the size of this instance in bytes
-    </span><span class="kw">fn </span>size(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; usize {
-        std::mem::size_of::&lt;<span class="self">Self</span>&gt;()
-            + <span class="self">self</span>.slots.capacity() * std::mem::size_of::&lt;Slot&gt;()
-        <span class="comment">// and account for the size of any embedded buckets in the slots
-            </span>+ <span class="self">self</span>.slot_child_bucket_size()
-            + <span class="self">self</span>.next.as_ref().map(|x| x.size()).unwrap_or_default()
-    }
-
-    <span class="doccomment">/// returns the total size of any recursively allocated `Bucket`s
-    /// in self.slots. This does not include the size of the child Slot itself
-    </span><span class="kw">fn </span>slot_child_bucket_size(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; usize {
-        <span class="self">self</span>.slots
-            .iter()
-            .map(|slot| slot.child.as_ref().map(|x| x.size()).unwrap_or_default())
-            .sum()
-    }
-}
-
-<span class="attr">#[cfg(test)]
-</span><span class="kw">mod </span>tests {
-    <span class="kw">use super</span>::<span class="kw-2">*</span>;
-    <span class="kw">use </span>rand::prelude::<span class="kw-2">*</span>;
-
-    <span class="comment">// Clippy isn&#39;t smart enough to understand dropping mutability
-    </span><span class="attr">#[allow(clippy::needless_collect)]
-    </span><span class="kw">fn </span>test_intern_values(values: <span class="kw-2">&amp;</span>[u64]) {
-        <span class="kw">let </span><span class="kw-2">mut </span>interner = OrderPreservingInterner::default();
-
-        <span class="comment">// Intern a single value at a time to check ordering
-        </span><span class="kw">let </span>interned: Vec&lt;<span class="kw">_</span>&gt; = values
-            .iter()
-            .flat_map(|v| interner.intern([<span class="prelude-val">Some</span>(<span class="kw-2">&amp;</span>v.to_be_bytes())]))
-            .map(Option::unwrap)
-            .collect();
-
-        <span class="kw">for </span>(value, interned) <span class="kw">in </span>values.iter().zip(<span class="kw-2">&amp;</span>interned) {
-            <span class="macro">assert_eq!</span>(interner.value(<span class="kw-2">*</span>interned), <span class="kw-2">&amp;</span>value.to_be_bytes());
-        }
-
-        <span class="kw">let </span>normalized_keys: Vec&lt;<span class="kw">_</span>&gt; = interned
-            .iter()
-            .map(|x| interner.normalized_key(<span class="kw-2">*</span>x))
-            .collect();
-
-        <span class="kw">for </span>(interned, normalized) <span class="kw">in </span>interned.iter().zip(<span class="kw-2">&amp;</span>normalized_keys) {
-            <span class="macro">assert_eq!</span>(<span class="kw-2">*</span>interned, interner.lookup(normalized).unwrap());
-        }
-
-        <span class="kw">for </span>(i, a) <span class="kw">in </span>normalized_keys.iter().enumerate() {
-            <span class="kw">for </span>(j, b) <span class="kw">in </span>normalized_keys.iter().enumerate() {
-                <span class="kw">let </span>interned_cmp = a.cmp(b);
-                <span class="kw">let </span>values_cmp = values[i].cmp(<span class="kw-2">&amp;</span>values[j]);
-                <span class="macro">assert_eq!</span>(
-                    interned_cmp, values_cmp,
-                    <span class="string">&quot;({:?} vs {:?}) vs ({} vs {})&quot;</span>,
-                    a, b, values[i], values[j]
-                )
-            }
-        }
-    }
-
-    <span class="attr">#[test]
-    #[cfg_attr(miri, ignore)]
-    </span><span class="kw">fn </span>test_interner() {
-        test_intern_values(<span class="kw-2">&amp;</span>[<span class="number">8</span>, <span class="number">6</span>, <span class="number">5</span>, <span class="number">7</span>]);
-
-        <span class="kw">let </span><span class="kw-2">mut </span>values: Vec&lt;<span class="kw">_</span>&gt; = (<span class="number">0_u64</span>..<span class="number">2000</span>).collect();
-        test_intern_values(<span class="kw-2">&amp;</span>values);
-
-        <span class="kw">let </span><span class="kw-2">mut </span>rng = thread_rng();
-        values.shuffle(<span class="kw-2">&amp;mut </span>rng);
-        test_intern_values(<span class="kw-2">&amp;</span>values);
-    }
-
-    <span class="attr">#[test]
-    </span><span class="kw">fn </span>test_intern_duplicates() {
-        <span class="comment">// Unsorted with duplicates
-        </span><span class="kw">let </span>values = [<span class="number">0_u8</span>, <span class="number">1</span>, <span class="number">8</span>, <span class="number">4</span>, <span class="number">1</span>, <span class="number">0</span>];
-        <span class="kw">let </span><span class="kw-2">mut </span>interner = OrderPreservingInterner::default();
-
-        <span class="kw">let </span>interned = interner.intern(values.iter().map(std::slice::from_ref).map(<span class="prelude-val">Some</span>));
-        <span class="kw">let </span>interned: Vec&lt;<span class="kw">_</span>&gt; = interned.into_iter().map(Option::unwrap).collect();
-
-        <span class="macro">assert_eq!</span>(interned[<span class="number">0</span>], interned[<span class="number">5</span>]);
-        <span class="macro">assert_eq!</span>(interned[<span class="number">1</span>], interned[<span class="number">4</span>]);
-        <span class="macro">assert!</span>(
-            interner.normalized_key(interned[<span class="number">0</span>]) &lt; interner.normalized_key(interned[<span class="number">1</span>])
-        );
-        <span class="macro">assert!</span>(
-            interner.normalized_key(interned[<span class="number">1</span>]) &lt; interner.normalized_key(interned[<span class="number">2</span>])
-        );
-        <span class="macro">assert!</span>(
-            interner.normalized_key(interned[<span class="number">1</span>]) &lt; interner.normalized_key(interned[<span class="number">3</span>])
-        );
-        <span class="macro">assert!</span>(
-            interner.normalized_key(interned[<span class="number">3</span>]) &lt; interner.normalized_key(interned[<span class="number">2</span>])
-        );
-    }
-
-    <span class="attr">#[test]
-    </span><span class="kw">fn </span>test_intern_sizes() {
-        <span class="kw">let </span><span class="kw-2">mut </span>interner = OrderPreservingInterner::default();
-
-        <span class="comment">// Intern a 1K values each 8 bytes large
-        </span><span class="kw">let </span>num_items = <span class="number">1000</span>;
-        <span class="kw">let </span><span class="kw-2">mut </span>values: Vec&lt;usize&gt; = (<span class="number">0</span>..num_items).collect();
-        values.reverse();
-
-        <span class="comment">// intern these values 1 at a time (otherwise the interner
-        // will sort them first);
-        </span><span class="kw">for </span>v <span class="kw">in </span>values {
-            interner.intern([<span class="prelude-val">Some</span>(v.to_be_bytes())]);
-        }
-
-        <span class="kw">let </span>reported = interner.size();
-
-        <span class="comment">// Figure out the expected size (this is a second
-        // implementation of size()) as a double check
-        </span><span class="kw">let </span>min_expected = BucketWalker::new()
-            .visit_bucket(interner.bucket.as_ref())
-            .memory_estimate()
-            <span class="comment">// hash table  size
-            </span>+ interner.lookup.capacity() *  std::mem::size_of::&lt;Interned&gt;()
-            <span class="comment">// key/value storage
-            </span>+ interner.keys.buffer_size()
-            + interner.values.buffer_size();
-
-        <span class="macro">assert!</span>(
-            reported &gt; min_expected,
-            <span class="string">&quot;reported size {reported} not larger than min expected size: {min_expected}&quot;
-        </span>)
-    }
-
-    <span class="comment">// Walks over the buckets / slots counting counting them all
-    </span><span class="kw">struct </span>BucketWalker {
-        num_buckets: usize,
-        num_slots: usize,
-    }
-
-    <span class="kw">impl </span>BucketWalker {
-        <span class="kw">fn </span>new() -&gt; <span class="self">Self </span>{
-            <span class="self">Self </span>{
-                num_buckets: <span class="number">0</span>,
-                num_slots: <span class="number">0</span>,
-            }
-        }
-
-        <span class="comment">// recursively visit the bucket and any slots/buckets contained
-        </span><span class="kw">fn </span>visit_bucket(<span class="kw-2">mut </span><span class="self">self</span>, bucket: <span class="kw-2">&amp;</span>Bucket) -&gt; <span class="self">Self </span>{
-            <span class="self">self</span>.num_buckets += <span class="number">1</span>;
-            <span class="kw">let </span>acc = bucket
-                .slots
-                .iter()
-                .fold(<span class="self">self</span>, |acc, slot| acc.visit_slot(slot));
-
-            <span class="kw">if let </span><span class="prelude-val">Some</span>(next) = bucket.next.as_ref() {
-                acc.visit_bucket(next.as_ref())
-            } <span class="kw">else </span>{
-                acc
-            }
-        }
-
-        <span class="comment">// recursively visit slot and any slots/buckets
-        </span><span class="kw">fn </span>visit_slot(<span class="kw-2">mut </span><span class="self">self</span>, slot: <span class="kw-2">&amp;</span>Slot) -&gt; <span class="self">Self </span>{
-            <span class="self">self</span>.num_slots += <span class="number">1</span>;
-            <span class="kw">if let </span><span class="prelude-val">Some</span>(child) = slot.child.as_ref() {
-                <span class="self">self</span>.visit_bucket(child.as_ref())
-            } <span class="kw">else </span>{
-                <span class="self">self
-            </span>}
-        }
-
-        <span class="comment">// estimate how much memory is used just for Buckets / Slots
-        // (an underestimate of the total memory used for the
-        // interner as it doesn&#39;t contain any actual values)
-        </span><span class="kw">fn </span>memory_estimate(<span class="self">self</span>) -&gt; usize {
-            <span class="self">self</span>.num_buckets * std::mem::size_of::&lt;Bucket&gt;()
-                + <span class="self">self</span>.num_slots * std::mem::size_of::&lt;Slot&gt;()
-        }
-    }
-}
-</code></pre></div></section></main></body></html>
\ No newline at end of file
diff --git a/src/arrow_row/lib.rs.html b/src/arrow_row/lib.rs.html
index d83495cd7b..cb6762ca19 100644
--- a/src/arrow_row/lib.rs.html
+++ b/src/arrow_row/lib.rs.html
@@ -2309,184 +2309,6 @@
 <a href="#2309" id="2309">2309</a>
 <a href="#2310" id="2310">2310</a>
 <a href="#2311" id="2311">2311</a>
-<a href="#2312" id="2312">2312</a>
-<a href="#2313" id="2313">2313</a>
-<a href="#2314" id="2314">2314</a>
-<a href="#2315" id="2315">2315</a>
-<a href="#2316" id="2316">2316</a>
-<a href="#2317" id="2317">2317</a>
-<a href="#2318" id="2318">2318</a>
-<a href="#2319" id="2319">2319</a>
-<a href="#2320" id="2320">2320</a>
-<a href="#2321" id="2321">2321</a>
-<a href="#2322" id="2322">2322</a>
-<a href="#2323" id="2323">2323</a>
-<a href="#2324" id="2324">2324</a>
-<a href="#2325" id="2325">2325</a>
-<a href="#2326" id="2326">2326</a>
-<a href="#2327" id="2327">2327</a>
-<a href="#2328" id="2328">2328</a>
-<a href="#2329" id="2329">2329</a>
-<a href="#2330" id="2330">2330</a>
-<a href="#2331" id="2331">2331</a>
-<a href="#2332" id="2332">2332</a>
-<a href="#2333" id="2333">2333</a>
-<a href="#2334" id="2334">2334</a>
-<a href="#2335" id="2335">2335</a>
-<a href="#2336" id="2336">2336</a>
-<a href="#2337" id="2337">2337</a>
-<a href="#2338" id="2338">2338</a>
-<a href="#2339" id="2339">2339</a>
-<a href="#2340" id="2340">2340</a>
-<a href="#2341" id="2341">2341</a>
-<a href="#2342" id="2342">2342</a>
-<a href="#2343" id="2343">2343</a>
-<a href="#2344" id="2344">2344</a>
-<a href="#2345" id="2345">2345</a>
-<a href="#2346" id="2346">2346</a>
-<a href="#2347" id="2347">2347</a>
-<a href="#2348" id="2348">2348</a>
-<a href="#2349" id="2349">2349</a>
-<a href="#2350" id="2350">2350</a>
-<a href="#2351" id="2351">2351</a>
-<a href="#2352" id="2352">2352</a>
-<a href="#2353" id="2353">2353</a>
-<a href="#2354" id="2354">2354</a>
-<a href="#2355" id="2355">2355</a>
-<a href="#2356" id="2356">2356</a>
-<a href="#2357" id="2357">2357</a>
-<a href="#2358" id="2358">2358</a>
-<a href="#2359" id="2359">2359</a>
-<a href="#2360" id="2360">2360</a>
-<a href="#2361" id="2361">2361</a>
-<a href="#2362" id="2362">2362</a>
-<a href="#2363" id="2363">2363</a>
-<a href="#2364" id="2364">2364</a>
-<a href="#2365" id="2365">2365</a>
-<a href="#2366" id="2366">2366</a>
-<a href="#2367" id="2367">2367</a>
-<a href="#2368" id="2368">2368</a>
-<a href="#2369" id="2369">2369</a>
-<a href="#2370" id="2370">2370</a>
-<a href="#2371" id="2371">2371</a>
-<a href="#2372" id="2372">2372</a>
-<a href="#2373" id="2373">2373</a>
-<a href="#2374" id="2374">2374</a>
-<a href="#2375" id="2375">2375</a>
-<a href="#2376" id="2376">2376</a>
-<a href="#2377" id="2377">2377</a>
-<a href="#2378" id="2378">2378</a>
-<a href="#2379" id="2379">2379</a>
-<a href="#2380" id="2380">2380</a>
-<a href="#2381" id="2381">2381</a>
-<a href="#2382" id="2382">2382</a>
-<a href="#2383" id="2383">2383</a>
-<a href="#2384" id="2384">2384</a>
-<a href="#2385" id="2385">2385</a>
-<a href="#2386" id="2386">2386</a>
-<a href="#2387" id="2387">2387</a>
-<a href="#2388" id="2388">2388</a>
-<a href="#2389" id="2389">2389</a>
-<a href="#2390" id="2390">2390</a>
-<a href="#2391" id="2391">2391</a>
-<a href="#2392" id="2392">2392</a>
-<a href="#2393" id="2393">2393</a>
-<a href="#2394" id="2394">2394</a>
-<a href="#2395" id="2395">2395</a>
-<a href="#2396" id="2396">2396</a>
-<a href="#2397" id="2397">2397</a>
-<a href="#2398" id="2398">2398</a>
-<a href="#2399" id="2399">2399</a>
-<a href="#2400" id="2400">2400</a>
-<a href="#2401" id="2401">2401</a>
-<a href="#2402" id="2402">2402</a>
-<a href="#2403" id="2403">2403</a>
-<a href="#2404" id="2404">2404</a>
-<a href="#2405" id="2405">2405</a>
-<a href="#2406" id="2406">2406</a>
-<a href="#2407" id="2407">2407</a>
-<a href="#2408" id="2408">2408</a>
-<a href="#2409" id="2409">2409</a>
-<a href="#2410" id="2410">2410</a>
-<a href="#2411" id="2411">2411</a>
-<a href="#2412" id="2412">2412</a>
-<a href="#2413" id="2413">2413</a>
-<a href="#2414" id="2414">2414</a>
-<a href="#2415" id="2415">2415</a>
-<a href="#2416" id="2416">2416</a>
-<a href="#2417" id="2417">2417</a>
-<a href="#2418" id="2418">2418</a>
-<a href="#2419" id="2419">2419</a>
-<a href="#2420" id="2420">2420</a>
-<a href="#2421" id="2421">2421</a>
-<a href="#2422" id="2422">2422</a>
-<a href="#2423" id="2423">2423</a>
-<a href="#2424" id="2424">2424</a>
-<a href="#2425" id="2425">2425</a>
-<a href="#2426" id="2426">2426</a>
-<a href="#2427" id="2427">2427</a>
-<a href="#2428" id="2428">2428</a>
-<a href="#2429" id="2429">2429</a>
-<a href="#2430" id="2430">2430</a>
-<a href="#2431" id="2431">2431</a>
-<a href="#2432" id="2432">2432</a>
-<a href="#2433" id="2433">2433</a>
-<a href="#2434" id="2434">2434</a>
-<a href="#2435" id="2435">2435</a>
-<a href="#2436" id="2436">2436</a>
-<a href="#2437" id="2437">2437</a>
-<a href="#2438" id="2438">2438</a>
-<a href="#2439" id="2439">2439</a>
-<a href="#2440" id="2440">2440</a>
-<a href="#2441" id="2441">2441</a>
-<a href="#2442" id="2442">2442</a>
-<a href="#2443" id="2443">2443</a>
-<a href="#2444" id="2444">2444</a>
-<a href="#2445" id="2445">2445</a>
-<a href="#2446" id="2446">2446</a>
-<a href="#2447" id="2447">2447</a>
-<a href="#2448" id="2448">2448</a>
-<a href="#2449" id="2449">2449</a>
-<a href="#2450" id="2450">2450</a>
-<a href="#2451" id="2451">2451</a>
-<a href="#2452" id="2452">2452</a>
-<a href="#2453" id="2453">2453</a>
-<a href="#2454" id="2454">2454</a>
-<a href="#2455" id="2455">2455</a>
-<a href="#2456" id="2456">2456</a>
-<a href="#2457" id="2457">2457</a>
-<a href="#2458" id="2458">2458</a>
-<a href="#2459" id="2459">2459</a>
-<a href="#2460" id="2460">2460</a>
-<a href="#2461" id="2461">2461</a>
-<a href="#2462" id="2462">2462</a>
-<a href="#2463" id="2463">2463</a>
-<a href="#2464" id="2464">2464</a>
-<a href="#2465" id="2465">2465</a>
-<a href="#2466" id="2466">2466</a>
-<a href="#2467" id="2467">2467</a>
-<a href="#2468" id="2468">2468</a>
-<a href="#2469" id="2469">2469</a>
-<a href="#2470" id="2470">2470</a>
-<a href="#2471" id="2471">2471</a>
-<a href="#2472" id="2472">2472</a>
-<a href="#2473" id="2473">2473</a>
-<a href="#2474" id="2474">2474</a>
-<a href="#2475" id="2475">2475</a>
-<a href="#2476" id="2476">2476</a>
-<a href="#2477" id="2477">2477</a>
-<a href="#2478" id="2478">2478</a>
-<a href="#2479" id="2479">2479</a>
-<a href="#2480" id="2480">2480</a>
-<a href="#2481" id="2481">2481</a>
-<a href="#2482" id="2482">2482</a>
-<a href="#2483" id="2483">2483</a>
-<a href="#2484" id="2484">2484</a>
-<a href="#2485" id="2485">2485</a>
-<a href="#2486" id="2486">2486</a>
-<a href="#2487" id="2487">2487</a>
-<a href="#2488" id="2488">2488</a>
-<a href="#2489" id="2489">2489</a>
 </pre></div><pre class="rust"><code><span class="comment">// Licensed to the Apache Software Foundation (ASF) under one
 // or more contributor license agreements.  See the NOTICE file
 // distributed with this work for additional information
@@ -2550,7 +2372,7 @@
 //! let arrays = vec![a1, a2];
 //!
 //! // Convert arrays to rows
-//! let mut converter = RowConverter::new(vec![
+//! let converter = RowConverter::new(vec![
 //!     SortField::new(DataType::Int32),
 //!     SortField::new(DataType::Utf8),
 //! ]).unwrap();
@@ -2598,7 +2420,7 @@
 //!         .iter()
 //!         .map(|a| SortField::new(a.data_type().clone()))
 //!         .collect();
-//!     let mut converter = RowConverter::new(fields).unwrap();
+//!     let converter = RowConverter::new(fields).unwrap();
 //!     let rows = converter.convert_columns(arrays).unwrap();
 //!     let mut sort: Vec&lt;_&gt; = rows.iter().enumerate().collect();
 //!     sort.sort_unstable_by(|(_, a), (_, b)| a.cmp(b));
@@ -2619,22 +2441,16 @@
 <span class="kw">use </span>std::sync::Arc;
 
 <span class="kw">use </span>arrow_array::cast::<span class="kw-2">*</span>;
+<span class="kw">use </span>arrow_array::types::ArrowDictionaryKeyType;
 <span class="kw">use </span>arrow_array::<span class="kw-2">*</span>;
 <span class="kw">use </span>arrow_buffer::ArrowNativeType;
 <span class="kw">use </span>arrow_data::ArrayDataBuilder;
 <span class="kw">use </span>arrow_schema::<span class="kw-2">*</span>;
 
-<span class="kw">use </span><span class="kw">crate</span>::dictionary::{
-    compute_dictionary_mapping, decode_dictionary, encode_dictionary,
-    encode_dictionary_values,
-};
 <span class="kw">use </span><span class="kw">crate</span>::fixed::{decode_bool, decode_fixed_size_binary, decode_primitive};
-<span class="kw">use </span><span class="kw">crate</span>::interner::OrderPreservingInterner;
 <span class="kw">use </span><span class="kw">crate</span>::variable::{decode_binary, decode_string};
 
-<span class="kw">mod </span>dictionary;
 <span class="kw">mod </span>fixed;
-<span class="kw">mod </span>interner;
 <span class="kw">mod </span>list;
 <span class="kw">mod </span>variable;
 
@@ -2760,53 +2576,7 @@
 ///
 /// ## Dictionary Encoding
 ///
-/// [`RowConverter`] needs to support converting dictionary encoded arrays with unsorted, and
-/// potentially distinct dictionaries. One simple mechanism to avoid this would be to reverse
-/// the dictionary encoding, and encode the array values directly, however, this would lose
-/// the benefits of dictionary encoding to reduce memory and CPU consumption.
-///
-/// As such the [`RowConverter`] creates an order-preserving mapping
-/// for each dictionary encoded column, which allows new dictionary
-/// values to be added whilst preserving the sort order.
-///
-/// A null dictionary value is encoded as `0_u8`.
-///
-/// A non-null dictionary value is encoded as `1_u8` followed by a null-terminated byte array
-/// key determined by the order-preserving dictionary encoding
-///
-/// ```text
-/// ┌──────────┐                 ┌─────┐
-/// │  &quot;Bar&quot;   │ ───────────────▶│ 01  │
-/// └──────────┘                 └─────┘
-/// ┌──────────┐                 ┌─────┬─────┐
-/// │&quot;Fabulous&quot;│ ───────────────▶│ 01  │ 02  │
-/// └──────────┘                 └─────┴─────┘
-/// ┌──────────┐                 ┌─────┐
-/// │  &quot;Soup&quot;  │ ───────────────▶│ 05  │
-/// └──────────┘                 └─────┘
-/// ┌──────────┐                 ┌─────┐
-/// │   &quot;ZZ&quot;   │ ───────────────▶│ 07  │
-/// └──────────┘                 └─────┘
-///
-/// Example Order Preserving Mapping
-/// ```
-/// Using the map above, the corresponding row format will be
-///
-/// ```text
-///                           ┌─────┬─────┬─────┬─────┐
-///    &quot;Fabulous&quot;             │ 01  │ 01  │ 02  │ 00  │
-///                           └─────┴─────┴─────┴─────┘
-///
-///                           ┌─────┬─────┬─────┐
-///    &quot;ZZ&quot;                   │ 01  │ 07  │ 00  │
-///                           └─────┴─────┴─────┘
-///
-///                           ┌─────┐
-///     NULL                  │ 00  │
-///                           └─────┘
-///
-///      Input                  Row Format
-/// ```
+/// Dictionaries are hydrated to their underlying values
 ///
 /// ## Struct Encoding
 ///
@@ -2915,15 +2685,9 @@
 </span><span class="kw">enum </span>Codec {
     <span class="doccomment">/// No additional codec state is necessary
     </span>Stateless,
-    <span class="doccomment">/// The interner used to encode dictionary values
-    ///
-    /// Used when preserving the dictionary encoding
-    </span>Dictionary(OrderPreservingInterner),
     <span class="doccomment">/// A row converter for the dictionary values
     /// and the encoding of a row containing only nulls
-    ///
-    /// Used when not preserving dictionary encoding
-    </span>DictionaryValues(RowConverter, OwnedRow),
+    </span>Dictionary(RowConverter, OwnedRow),
     <span class="doccomment">/// A row converter for the child fields
     /// and the encoding of a row containing only nulls
     </span>Struct(RowConverter, OwnedRow),
@@ -2934,25 +2698,22 @@
 <span class="kw">impl </span>Codec {
     <span class="kw">fn </span>new(sort_field: <span class="kw-2">&amp;</span>SortField) -&gt; <span class="prelude-ty">Result</span>&lt;<span class="self">Self</span>, ArrowError&gt; {
         <span class="kw">match </span><span class="kw-2">&amp;</span>sort_field.data_type {
-            DataType::Dictionary(<span class="kw">_</span>, values) =&gt; <span class="kw">match </span>sort_field.preserve_dictionaries {
-                <span class="bool-val">true </span>=&gt; <span class="prelude-val">Ok</span>(<span class="self">Self</span>::Dictionary(Default::default())),
-                <span class="bool-val">false </span>=&gt; {
-                    <span class="kw">let </span>sort_field = SortField::new_with_options(
-                        values.as_ref().clone(),
-                        sort_field.options,
-                    );
+            DataType::Dictionary(<span class="kw">_</span>, values) =&gt; {
+                <span class="kw">let </span>sort_field = SortField::new_with_options(
+                    values.as_ref().clone(),
+                    sort_field.options,
+                );
 
-                    <span class="kw">let </span><span class="kw-2">mut </span>converter = RowConverter::new(<span class="macro">vec!</span>[sort_field])<span class="question-mark">?</span>;
-                    <span class="kw">let </span>null_array = new_null_array(values.as_ref(), <span class="number">1</span>);
-                    <span class="kw">let </span>nulls = converter.convert_columns(<span class="kw-2">&amp;</span>[null_array])<span class="question-mark">?</span>;
+                <span class="kw">let </span>converter = RowConverter::new(<span class="macro">vec!</span>[sort_field])<span class="question-mark">?</span>;
+                <span class="kw">let </span>null_array = new_null_array(values.as_ref(), <span class="number">1</span>);
+                <span class="kw">let </span>nulls = converter.convert_columns(<span class="kw-2">&amp;</span>[null_array])<span class="question-mark">?</span>;
 
-                    <span class="kw">let </span>owned = OwnedRow {
-                        data: nulls.buffer.into(),
-                        config: nulls.config,
-                    };
-                    <span class="prelude-val">Ok</span>(<span class="self">Self</span>::DictionaryValues(converter, owned))
-                }
-            },
+                <span class="kw">let </span>owned = OwnedRow {
+                    data: nulls.buffer.into(),
+                    config: nulls.config,
+                };
+                <span class="prelude-val">Ok</span>(<span class="self">Self</span>::Dictionary(converter, owned))
+            }
             d <span class="kw">if </span>!d.is_nested() =&gt; <span class="prelude-val">Ok</span>(<span class="self">Self</span>::Stateless),
             DataType::List(f) | DataType::LargeList(f) =&gt; {
                 <span class="comment">// The encoded contents will be inverted if descending is set to true
@@ -2979,7 +2740,7 @@
                     })
                     .collect();
 
-                <span class="kw">let </span><span class="kw-2">mut </span>converter = RowConverter::new(sort_fields)<span class="question-mark">?</span>;
+                <span class="kw">let </span>converter = RowConverter::new(sort_fields)<span class="question-mark">?</span>;
                 <span class="kw">let </span>nulls: Vec&lt;<span class="kw">_</span>&gt; =
                     f.iter().map(|x| new_null_array(x.data_type(), <span class="number">1</span>)).collect();
 
@@ -2998,32 +2759,13 @@
         }
     }
 
-    <span class="kw">fn </span>encoder(<span class="kw-2">&amp;mut </span><span class="self">self</span>, array: <span class="kw-2">&amp;</span><span class="kw">dyn </span>Array) -&gt; <span class="prelude-ty">Result</span>&lt;Encoder&lt;<span class="lifetime">&#39;_</span>&gt;, ArrowError&gt; {
+    <span class="kw">fn </span>encoder(<span class="kw-2">&amp;</span><span class="self">self</span>, array: <span class="kw-2">&amp;</span><span class="kw">dyn </span>Array) -&gt; <span class="prelude-ty">Result</span>&lt;Encoder&lt;<span class="lifetime">&#39;_</span>&gt;, ArrowError&gt; {
         <span class="kw">match </span><span class="self">self </span>{
             Codec::Stateless =&gt; <span class="prelude-val">Ok</span>(Encoder::Stateless),
-            Codec::Dictionary(interner) =&gt; {
-                <span class="kw">let </span>values = <span class="macro">downcast_dictionary_array! </span>{
-                    array =&gt; array.values(),
-                    <span class="kw">_ </span>=&gt; <span class="macro">unreachable!</span>()
-                };
-
-                <span class="kw">let </span>mapping = compute_dictionary_mapping(interner, values)
-                    .into_iter()
-                    .map(|maybe_interned| {
-                        maybe_interned.map(|interned| interner.normalized_key(interned))
-                    })
-                    .collect();
-
-                <span class="prelude-val">Ok</span>(Encoder::Dictionary(mapping))
-            }
-            Codec::DictionaryValues(converter, nulls) =&gt; {
-                <span class="kw">let </span>values = <span class="macro">downcast_dictionary_array! </span>{
-                    array =&gt; array.values(),
-                    <span class="kw">_ </span>=&gt; <span class="macro">unreachable!</span>()
-                };
-
-                <span class="kw">let </span>rows = converter.convert_columns(<span class="kw-2">&amp;</span>[values.clone()])<span class="question-mark">?</span>;
-                <span class="prelude-val">Ok</span>(Encoder::DictionaryValues(rows, nulls.row()))
+            Codec::Dictionary(converter, nulls) =&gt; {
+                <span class="kw">let </span>values = array.as_any_dictionary().values().clone();
+                <span class="kw">let </span>rows = converter.convert_columns(<span class="kw-2">&amp;</span>[values])<span class="question-mark">?</span>;
+                <span class="prelude-val">Ok</span>(Encoder::Dictionary(rows, nulls.row()))
             }
             Codec::Struct(converter, null) =&gt; {
                 <span class="kw">let </span>v = as_struct_array(array);
@@ -3045,10 +2787,7 @@
     <span class="kw">fn </span>size(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; usize {
         <span class="kw">match </span><span class="self">self </span>{
             Codec::Stateless =&gt; <span class="number">0</span>,
-            Codec::Dictionary(interner) =&gt; interner.size(),
-            Codec::DictionaryValues(converter, nulls) =&gt; {
-                converter.size() + nulls.data.len()
-            }
+            Codec::Dictionary(converter, nulls) =&gt; converter.size() + nulls.data.len(),
             Codec::Struct(converter, nulls) =&gt; converter.size() + nulls.data.len(),
             Codec::List(converter) =&gt; converter.size(),
         }
@@ -3059,10 +2798,8 @@
 </span><span class="kw">enum </span>Encoder&lt;<span class="lifetime">&#39;a</span>&gt; {
     <span class="doccomment">/// No additional encoder state is necessary
     </span>Stateless,
-    <span class="doccomment">/// The mapping from dictionary keys to normalized keys
-    </span>Dictionary(Vec&lt;<span class="prelude-ty">Option</span>&lt;<span class="kw-2">&amp;</span><span class="lifetime">&#39;a </span>[u8]&gt;&gt;),
     <span class="doccomment">/// The encoding of the child array and the encoding of a null row
-    </span>DictionaryValues(Rows, Row&lt;<span class="lifetime">&#39;a</span>&gt;),
+    </span>Dictionary(Rows, Row&lt;<span class="lifetime">&#39;a</span>&gt;),
     <span class="doccomment">/// The row encoding of the child arrays and the encoding of a null row
     ///
     /// It is necessary to encode to a temporary [`Rows`] to avoid serializing
@@ -3080,8 +2817,6 @@
     </span>options: SortOptions,
     <span class="doccomment">/// Data type
     </span>data_type: DataType,
-    <span class="doccomment">/// Preserve dictionaries
-    </span>preserve_dictionaries: bool,
 }
 
 <span class="kw">impl </span>SortField {
@@ -3092,30 +2827,7 @@
 
     <span class="doccomment">/// Create a new column with the given data type and [`SortOptions`]
     </span><span class="kw">pub fn </span>new_with_options(data_type: DataType, options: SortOptions) -&gt; <span class="self">Self </span>{
-        <span class="self">Self </span>{
-            options,
-            data_type,
-            preserve_dictionaries: <span class="bool-val">true</span>,
-        }
-    }
-
-    <span class="doccomment">/// By default dictionaries are preserved as described on [`RowConverter`]
-    ///
-    /// However, this process requires maintaining and incrementally updating
-    /// an order-preserving mapping of dictionary values. This is relatively expensive
-    /// computationally but reduces the size of the encoded rows, minimising memory
-    /// usage and potentially yielding faster comparisons.
-    ///
-    /// Some applications may wish to instead trade-off space efficiency, for improved
-    /// encoding performance, by instead encoding dictionary values directly
-    ///
-    /// When `preserve_dictionaries` is true, fields will instead be encoded as their
-    /// underlying value, reversing any dictionary encoding
-    </span><span class="kw">pub fn </span>preserve_dictionaries(<span class="self">self</span>, preserve_dictionaries: bool) -&gt; <span class="self">Self </span>{
-        <span class="self">Self </span>{
-            preserve_dictionaries,
-            ..<span class="self">self
-        </span>}
+        <span class="self">Self </span>{ options, data_type }
     }
 
     <span class="doccomment">/// Return size of this instance in bytes.
@@ -3168,7 +2880,7 @@
     /// # Panics
     ///
     /// Panics if the schema of `columns` does not match that provided to [`RowConverter::new`]
-    </span><span class="kw">pub fn </span>convert_columns(<span class="kw-2">&amp;mut </span><span class="self">self</span>, columns: <span class="kw-2">&amp;</span>[ArrayRef]) -&gt; <span class="prelude-ty">Result</span>&lt;Rows, ArrowError&gt; {
+    </span><span class="kw">pub fn </span>convert_columns(<span class="kw-2">&amp;</span><span class="self">self</span>, columns: <span class="kw-2">&amp;</span>[ArrayRef]) -&gt; <span class="prelude-ty">Result</span>&lt;Rows, ArrowError&gt; {
         <span class="kw">let </span>num_rows = columns.first().map(|x| x.len()).unwrap_or(<span class="number">0</span>);
         <span class="kw">let </span><span class="kw-2">mut </span>rows = <span class="self">self</span>.empty_rows(num_rows, <span class="number">0</span>);
         <span class="self">self</span>.append(<span class="kw-2">&amp;mut </span>rows, columns)<span class="question-mark">?</span>;
@@ -3193,7 +2905,7 @@
     /// # use arrow_row::{Row, RowConverter, SortField};
     /// # use arrow_schema::DataType;
     /// #
-    /// let mut converter = RowConverter::new(vec![SortField::new(DataType::Utf8)]).unwrap();
+    /// let converter = RowConverter::new(vec![SortField::new(DataType::Utf8)]).unwrap();
     /// let a1 = StringArray::from(vec![&quot;hello&quot;, &quot;world&quot;]);
     /// let a2 = StringArray::from(vec![&quot;a&quot;, &quot;a&quot;, &quot;hello&quot;]);
     ///
@@ -3206,7 +2918,7 @@
     /// assert_eq!(&amp;values, &amp;[&quot;hello&quot;, &quot;world&quot;, &quot;a&quot;, &quot;a&quot;, &quot;hello&quot;]);
     /// ```
     </span><span class="kw">pub fn </span>append(
-        <span class="kw-2">&amp;mut </span><span class="self">self</span>,
+        <span class="kw-2">&amp;</span><span class="self">self</span>,
         rows: <span class="kw-2">&amp;mut </span>Rows,
         columns: <span class="kw-2">&amp;</span>[ArrayRef],
     ) -&gt; <span class="prelude-ty">Result</span>&lt;(), ArrowError&gt; {
@@ -3225,7 +2937,7 @@
 
         <span class="kw">let </span>encoders = columns
             .iter()
-            .zip(<span class="kw-2">&amp;mut </span><span class="self">self</span>.codecs)
+            .zip(<span class="kw-2">&amp;</span><span class="self">self</span>.codecs)
             .zip(<span class="self">self</span>.fields.iter())
             .map(|((column, codec), field)| {
                 <span class="kw">if </span>!column.data_type().equals_datatype(<span class="kw-2">&amp;</span>field.data_type) {
@@ -3333,7 +3045,7 @@
     /// # use arrow_row::{Row, RowConverter, SortField};
     /// # use arrow_schema::DataType;
     /// #
-    /// let mut converter = RowConverter::new(vec![SortField::new(DataType::Utf8)]).unwrap();
+    /// let converter = RowConverter::new(vec![SortField::new(DataType::Utf8)]).unwrap();
     /// let array = StringArray::from(vec![&quot;hello&quot;, &quot;world&quot;, &quot;a&quot;, &quot;a&quot;, &quot;hello&quot;]);
     ///
     /// // Convert to row format and deduplicate
@@ -3723,20 +3435,7 @@
                     <span class="kw">_ </span>=&gt; <span class="macro">unreachable!</span>(),
                 }
             }
-            Encoder::Dictionary(dict) =&gt; {
-                <span class="macro">downcast_dictionary_array! </span>{
-                    array =&gt; {
-                        <span class="kw">for </span>(v, length) <span class="kw">in </span>array.keys().iter().zip(lengths.iter_mut()) {
-                            <span class="kw">match </span>v.and_then(|v| dict[v <span class="kw">as </span>usize]) {
-                                <span class="prelude-val">Some</span>(k) =&gt; <span class="kw-2">*</span>length += k.len() + <span class="number">1</span>,
-                                <span class="prelude-val">None </span>=&gt; <span class="kw-2">*</span>length += <span class="number">1</span>,
-                            }
-                        }
-                    }
-                    <span class="kw">_ </span>=&gt; <span class="macro">unreachable!</span>(),
-                }
-            }
-            Encoder::DictionaryValues(values, null) =&gt; {
+            Encoder::Dictionary(values, null) =&gt; {
                 <span class="macro">downcast_dictionary_array! </span>{
                     array =&gt; {
                         <span class="kw">for </span>(v, length) <span class="kw">in </span>array.keys().iter().zip(lengths.iter_mut()) {
@@ -3812,13 +3511,7 @@
                 <span class="kw">_ </span>=&gt; <span class="macro">unreachable!</span>(),
             }
         }
-        Encoder::Dictionary(dict) =&gt; {
-            <span class="macro">downcast_dictionary_array! </span>{
-                column =&gt; encode_dictionary(data, offsets, column, dict, opts),
-                <span class="kw">_ </span>=&gt; <span class="macro">unreachable!</span>()
-            }
-        }
-        Encoder::DictionaryValues(values, nulls) =&gt; {
+        Encoder::Dictionary(values, nulls) =&gt; {
             <span class="macro">downcast_dictionary_array! </span>{
                 column =&gt; encode_dictionary_values(data, offsets, column, values, nulls),
                 <span class="kw">_ </span>=&gt; <span class="macro">unreachable!</span>()
@@ -3854,18 +3547,31 @@
     }
 }
 
+<span class="doccomment">/// Encode dictionary values not preserving the dictionary encoding
+</span><span class="kw">pub fn </span>encode_dictionary_values&lt;K: ArrowDictionaryKeyType&gt;(
+    data: <span class="kw-2">&amp;mut </span>[u8],
+    offsets: <span class="kw-2">&amp;mut </span>[usize],
+    column: <span class="kw-2">&amp;</span>DictionaryArray&lt;K&gt;,
+    values: <span class="kw-2">&amp;</span>Rows,
+    null: <span class="kw-2">&amp;</span>Row&lt;<span class="lifetime">&#39;_</span>&gt;,
+) {
+    <span class="kw">for </span>(offset, k) <span class="kw">in </span>offsets.iter_mut().skip(<span class="number">1</span>).zip(column.keys()) {
+        <span class="kw">let </span>row = <span class="kw">match </span>k {
+            <span class="prelude-val">Some</span>(k) =&gt; values.row(k.as_usize()).data,
+            <span class="prelude-val">None </span>=&gt; null.data,
+        };
+        <span class="kw">let </span>end_offset = <span class="kw-2">*</span>offset + row.len();
+        data[<span class="kw-2">*</span>offset..end_offset].copy_from_slice(row);
+        <span class="kw-2">*</span>offset = end_offset;
+    }
+}
+
 <span class="macro">macro_rules! </span>decode_primitive_helper {
     (<span class="macro-nonterminal">$t</span>:ty, <span class="macro-nonterminal">$rows</span>:ident, <span class="macro-nonterminal">$data_type</span>:ident, <span class="macro-nonterminal">$options</span>:ident) =&gt; {
         Arc::new(decode_primitive::&lt;<span class="macro-nonterminal">$t</span>&gt;(<span class="macro-nonterminal">$rows</span>, <span class="macro-nonterminal">$data_type</span>, <span class="macro-nonterminal">$options</span>))
     };
 }
 
-<span class="macro">macro_rules! </span>decode_dictionary_helper {
-    (<span class="macro-nonterminal">$t</span>:ty, <span class="macro-nonterminal">$interner</span>:ident, <span class="macro-nonterminal">$v</span>:ident, <span class="macro-nonterminal">$options</span>:ident, <span class="macro-nonterminal">$rows</span>:ident) =&gt; {
-        Arc::new(decode_dictionary::&lt;<span class="macro-nonterminal">$t</span>&gt;(<span class="macro-nonterminal">$interner</span>, <span class="macro-nonterminal">$v</span>, <span class="macro-nonterminal">$options</span>, <span class="macro-nonterminal">$rows</span>)<span class="question-mark">?</span>)
-    };
-}
-
 <span class="doccomment">/// Decodes a the provided `field` from `rows`
 ///
 /// # Safety
@@ -3891,20 +3597,11 @@
                 DataType::FixedSizeBinary(size) =&gt; Arc::new(decode_fixed_size_binary(rows, size, options)),
                 DataType::Utf8 =&gt; Arc::new(decode_string::&lt;i32&gt;(rows, options, validate_utf8)),
                 DataType::LargeUtf8 =&gt; Arc::new(decode_string::&lt;i64&gt;(rows, options, validate_utf8)),
+                DataType::Dictionary(<span class="kw">_</span>, <span class="kw">_</span>) =&gt; <span class="macro">todo!</span>(),
                 <span class="kw">_ </span>=&gt; <span class="macro">unreachable!</span>()
             }
         }
-        Codec::Dictionary(interner) =&gt; {
-            <span class="kw">let </span>(k, v) = <span class="kw">match </span><span class="kw-2">&amp;</span>field.data_type {
-                DataType::Dictionary(k, v) =&gt; (k.as_ref(), v.as_ref()),
-                <span class="kw">_ </span>=&gt; <span class="macro">unreachable!</span>(),
-            };
-            <span class="macro">downcast_integer! </span>{
-                k =&gt; (decode_dictionary_helper, interner, v, options, rows),
-                <span class="kw">_ </span>=&gt; <span class="macro">unreachable!</span>()
-            }
-        }
-        Codec::DictionaryValues(converter, <span class="kw">_</span>) =&gt; {
+        Codec::Dictionary(converter, <span class="kw">_</span>) =&gt; {
             <span class="kw">let </span>cols = converter.convert_raw(rows, validate_utf8)<span class="question-mark">?</span>;
             cols.into_iter().next().unwrap()
         }
@@ -3976,7 +3673,7 @@
             ])) <span class="kw">as </span>ArrayRef,
         ];
 
-        <span class="kw">let </span><span class="kw-2">mut </span>converter = RowConverter::new(<span class="macro">vec!</span>[
+        <span class="kw">let </span>converter = RowConverter::new(<span class="macro">vec!</span>[
             SortField::new(DataType::Int16),
             SortField::new(DataType::Float32),
         ])
@@ -4018,9 +3715,10 @@
 
     <span class="attr">#[test]
     </span><span class="kw">fn </span>test_decimal128() {
-        <span class="kw">let </span><span class="kw-2">mut </span>converter = RowConverter::new(<span class="macro">vec!</span>[SortField::new(
-            DataType::Decimal128(DECIMAL128_MAX_PRECISION, <span class="number">7</span>),
-        )])
+        <span class="kw">let </span>converter = RowConverter::new(<span class="macro">vec!</span>[SortField::new(DataType::Decimal128(
+            DECIMAL128_MAX_PRECISION,
+            <span class="number">7</span>,
+        ))])
         .unwrap();
         <span class="kw">let </span>col = Arc::new(
             Decimal128Array::from_iter([
@@ -4047,9 +3745,10 @@
 
     <span class="attr">#[test]
     </span><span class="kw">fn </span>test_decimal256() {
-        <span class="kw">let </span><span class="kw-2">mut </span>converter = RowConverter::new(<span class="macro">vec!</span>[SortField::new(
-            DataType::Decimal256(DECIMAL256_MAX_PRECISION, <span class="number">7</span>),
-        )])
+        <span class="kw">let </span>converter = RowConverter::new(<span class="macro">vec!</span>[SortField::new(DataType::Decimal256(
+            DECIMAL256_MAX_PRECISION,
+            <span class="number">7</span>,
+        ))])
         .unwrap();
         <span class="kw">let </span>col = Arc::new(
             Decimal256Array::from_iter([
@@ -4078,7 +3777,7 @@
 
     <span class="attr">#[test]
     </span><span class="kw">fn </span>test_bool() {
-        <span class="kw">let </span><span class="kw-2">mut </span>converter =
+        <span class="kw">let </span>converter =
             RowConverter::new(<span class="macro">vec!</span>[SortField::new(DataType::Boolean)]).unwrap();
 
         <span class="kw">let </span>col = Arc::new(BooleanArray::from_iter([<span class="prelude-val">None</span>, <span class="prelude-val">Some</span>(<span class="bool-val">false</span>), <span class="prelude-val">Some</span>(<span class="bool-val">true</span>)]))
@@ -4092,7 +3791,7 @@
         <span class="kw">let </span>cols = converter.convert_rows(<span class="kw-2">&amp;</span>rows).unwrap();
         <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>cols[<span class="number">0</span>], <span class="kw-2">&amp;</span>col);
 
-        <span class="kw">let </span><span class="kw-2">mut </span>converter = RowConverter::new(<span class="macro">vec!</span>[SortField::new_with_options(
+        <span class="kw">let </span>converter = RowConverter::new(<span class="macro">vec!</span>[SortField::new_with_options(
             DataType::Boolean,
             SortOptions {
                 descending: <span class="bool-val">true</span>,
@@ -4115,7 +3814,7 @@
             .with_timezone(<span class="string">&quot;+01:00&quot;</span>.to_string());
         <span class="kw">let </span>d = a.data_type().clone();
 
-        <span class="kw">let </span><span class="kw-2">mut </span>converter =
+        <span class="kw">let </span>converter =
             RowConverter::new(<span class="macro">vec!</span>[SortField::new(a.data_type().clone())]).unwrap();
         <span class="kw">let </span>rows = converter.convert_columns(<span class="kw-2">&amp;</span>[Arc::new(a) <span class="kw">as _</span>]).unwrap();
         <span class="kw">let </span>back = converter.convert_rows(<span class="kw-2">&amp;</span>rows).unwrap();
@@ -4133,29 +3832,23 @@
         </span><span class="kw">let </span>dict = a.finish();
         <span class="kw">let </span>values = TimestampNanosecondArray::from(dict.values().to_data());
         <span class="kw">let </span>dict_with_tz = dict.with_values(Arc::new(values.with_timezone(<span class="string">&quot;+02:00&quot;</span>)));
-        <span class="kw">let </span>d = DataType::Dictionary(
-            Box::new(DataType::Int32),
-            Box::new(DataType::Timestamp(
-                TimeUnit::Nanosecond,
-                <span class="prelude-val">Some</span>(<span class="string">&quot;+02:00&quot;</span>.into()),
-            )),
-        );
+        <span class="kw">let </span>v = DataType::Timestamp(TimeUnit::Nanosecond, <span class="prelude-val">Some</span>(<span class="string">&quot;+02:00&quot;</span>.into()));
+        <span class="kw">let </span>d = DataType::Dictionary(Box::new(DataType::Int32), Box::new(v.clone()));
 
         <span class="macro">assert_eq!</span>(dict_with_tz.data_type(), <span class="kw-2">&amp;</span>d);
-        <span class="kw">let </span><span class="kw-2">mut </span>converter = RowConverter::new(<span class="macro">vec!</span>[SortField::new(d.clone())]).unwrap();
+        <span class="kw">let </span>converter = RowConverter::new(<span class="macro">vec!</span>[SortField::new(d.clone())]).unwrap();
         <span class="kw">let </span>rows = converter
             .convert_columns(<span class="kw-2">&amp;</span>[Arc::new(dict_with_tz) <span class="kw">as _</span>])
             .unwrap();
         <span class="kw">let </span>back = converter.convert_rows(<span class="kw-2">&amp;</span>rows).unwrap();
         <span class="macro">assert_eq!</span>(back.len(), <span class="number">1</span>);
-        <span class="macro">assert_eq!</span>(back[<span class="number">0</span>].data_type(), <span class="kw-2">&amp;</span>d);
+        <span class="macro">assert_eq!</span>(back[<span class="number">0</span>].data_type(), <span class="kw-2">&amp;</span>v);
     }
 
     <span class="attr">#[test]
     </span><span class="kw">fn </span>test_null_encoding() {
         <span class="kw">let </span>col = Arc::new(NullArray::new(<span class="number">10</span>));
-        <span class="kw">let </span><span class="kw-2">mut </span>converter =
-            RowConverter::new(<span class="macro">vec!</span>[SortField::new(DataType::Null)]).unwrap();
+        <span class="kw">let </span>converter = RowConverter::new(<span class="macro">vec!</span>[SortField::new(DataType::Null)]).unwrap();
         <span class="kw">let </span>rows = converter.convert_columns(<span class="kw-2">&amp;</span>[col]).unwrap();
         <span class="macro">assert_eq!</span>(rows.num_rows(), <span class="number">10</span>);
         <span class="macro">assert_eq!</span>(rows.row(<span class="number">1</span>).data.len(), <span class="number">0</span>);
@@ -4171,8 +3864,7 @@
             <span class="prelude-val">Some</span>(<span class="string">&quot;&quot;</span>),
         ])) <span class="kw">as </span>ArrayRef;
 
-        <span class="kw">let </span><span class="kw-2">mut </span>converter =
-            RowConverter::new(<span class="macro">vec!</span>[SortField::new(DataType::Utf8)]).unwrap();
+        <span class="kw">let </span>converter = RowConverter::new(<span class="macro">vec!</span>[SortField::new(DataType::Utf8)]).unwrap();
         <span class="kw">let </span>rows = converter.convert_columns(<span class="kw-2">&amp;</span>[Arc::clone(<span class="kw-2">&amp;</span>col)]).unwrap();
 
         <span class="macro">assert!</span>(rows.row(<span class="number">1</span>) &lt; rows.row(<span class="number">0</span>));
@@ -4203,7 +3895,7 @@
             <span class="prelude-val">Some</span>(<span class="macro">vec!</span>[<span class="number">0xFF_u8</span>; variable::BLOCK_SIZE + <span class="number">1</span>]),
         ])) <span class="kw">as </span>ArrayRef;
 
-        <span class="kw">let </span><span class="kw-2">mut </span>converter =
+        <span class="kw">let </span>converter =
             RowConverter::new(<span class="macro">vec!</span>[SortField::new(DataType::Binary)]).unwrap();
         <span class="kw">let </span>rows = converter.convert_columns(<span class="kw-2">&amp;</span>[Arc::clone(<span class="kw-2">&amp;</span>col)]).unwrap();
 
@@ -4223,7 +3915,7 @@
         <span class="kw">let </span>cols = converter.convert_rows(<span class="kw-2">&amp;</span>rows).unwrap();
         <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>cols[<span class="number">0</span>], <span class="kw-2">&amp;</span>col);
 
-        <span class="kw">let </span><span class="kw-2">mut </span>converter = RowConverter::new(<span class="macro">vec!</span>[SortField::new_with_options(
+        <span class="kw">let </span>converter = RowConverter::new(<span class="macro">vec!</span>[SortField::new_with_options(
             DataType::Binary,
             SortOptions {
                 descending: <span class="bool-val">true</span>,
@@ -4251,9 +3943,9 @@
     }
 
     <span class="doccomment">/// If `exact` is false performs a logical comparison between a and dictionary-encoded b
-    </span><span class="kw">fn </span>dictionary_eq(exact: bool, a: <span class="kw-2">&amp;</span><span class="kw">dyn </span>Array, b: <span class="kw-2">&amp;</span><span class="kw">dyn </span>Array) {
+    </span><span class="kw">fn </span>dictionary_eq(a: <span class="kw-2">&amp;</span><span class="kw">dyn </span>Array, b: <span class="kw-2">&amp;</span><span class="kw">dyn </span>Array) {
         <span class="kw">match </span>b.data_type() {
-            DataType::Dictionary(<span class="kw">_</span>, v) <span class="kw">if </span>!exact =&gt; {
+            DataType::Dictionary(<span class="kw">_</span>, v) =&gt; {
                 <span class="macro">assert_eq!</span>(a.data_type(), v.as_ref());
                 <span class="kw">let </span>b = arrow_cast::cast(b, v).unwrap();
                 <span class="macro">assert_eq!</span>(a, b.as_ref())
@@ -4264,11 +3956,6 @@
 
     <span class="attr">#[test]
     </span><span class="kw">fn </span>test_string_dictionary() {
-        test_string_dictionary_impl(<span class="bool-val">false</span>);
-        test_string_dictionary_impl(<span class="bool-val">true</span>);
-    }
-
-    <span class="kw">fn </span>test_string_dictionary_impl(preserve: bool) {
         <span class="kw">let </span>a = Arc::new(DictionaryArray::&lt;Int32Type&gt;::from_iter([
             <span class="prelude-val">Some</span>(<span class="string">&quot;foo&quot;</span>),
             <span class="prelude-val">Some</span>(<span class="string">&quot;hello&quot;</span>),
@@ -4280,8 +3967,8 @@
             <span class="prelude-val">Some</span>(<span class="string">&quot;hello&quot;</span>),
         ])) <span class="kw">as </span>ArrayRef;
 
-        <span class="kw">let </span>field = SortField::new(a.data_type().clone()).preserve_dictionaries(preserve);
-        <span class="kw">let </span><span class="kw-2">mut </span>converter = RowConverter::new(<span class="macro">vec!</span>[field]).unwrap();
+        <span class="kw">let </span>field = SortField::new(a.data_type().clone());
+        <span class="kw">let </span>converter = RowConverter::new(<span class="macro">vec!</span>[field]).unwrap();
         <span class="kw">let </span>rows_a = converter.convert_columns(<span class="kw-2">&amp;</span>[Arc::clone(<span class="kw-2">&amp;</span>a)]).unwrap();
 
         <span class="macro">assert!</span>(rows_a.row(<span class="number">3</span>) &lt; rows_a.row(<span class="number">5</span>));
@@ -4294,7 +3981,7 @@
         <span class="macro">assert_eq!</span>(rows_a.row(<span class="number">1</span>), rows_a.row(<span class="number">7</span>));
 
         <span class="kw">let </span>cols = converter.convert_rows(<span class="kw-2">&amp;</span>rows_a).unwrap();
-        dictionary_eq(preserve, <span class="kw-2">&amp;</span>cols[<span class="number">0</span>], <span class="kw-2">&amp;</span>a);
+        dictionary_eq(<span class="kw-2">&amp;</span>cols[<span class="number">0</span>], <span class="kw-2">&amp;</span>a);
 
         <span class="kw">let </span>b = Arc::new(DictionaryArray::&lt;Int32Type&gt;::from_iter([
             <span class="prelude-val">Some</span>(<span class="string">&quot;hello&quot;</span>),
@@ -4308,16 +3995,15 @@
         <span class="macro">assert!</span>(rows_b.row(<span class="number">2</span>) &lt; rows_a.row(<span class="number">0</span>));
 
         <span class="kw">let </span>cols = converter.convert_rows(<span class="kw-2">&amp;</span>rows_b).unwrap();
-        dictionary_eq(preserve, <span class="kw-2">&amp;</span>cols[<span class="number">0</span>], <span class="kw-2">&amp;</span>b);
+        dictionary_eq(<span class="kw-2">&amp;</span>cols[<span class="number">0</span>], <span class="kw-2">&amp;</span>b);
 
-        <span class="kw">let </span><span class="kw-2">mut </span>converter = RowConverter::new(<span class="macro">vec!</span>[SortField::new_with_options(
+        <span class="kw">let </span>converter = RowConverter::new(<span class="macro">vec!</span>[SortField::new_with_options(
             a.data_type().clone(),
             SortOptions {
                 descending: <span class="bool-val">true</span>,
                 nulls_first: <span class="bool-val">false</span>,
             },
-        )
-        .preserve_dictionaries(preserve)])
+        )])
         .unwrap();
 
         <span class="kw">let </span>rows_c = converter.convert_columns(<span class="kw-2">&amp;</span>[Arc::clone(<span class="kw-2">&amp;</span>a)]).unwrap();
@@ -4327,16 +4013,15 @@
         <span class="macro">assert!</span>(rows_c.row(<span class="number">3</span>) &gt; rows_c.row(<span class="number">0</span>));
 
         <span class="kw">let </span>cols = converter.convert_rows(<span class="kw-2">&amp;</span>rows_c).unwrap();
-        dictionary_eq(preserve, <span class="kw-2">&amp;</span>cols[<span class="number">0</span>], <span class="kw-2">&amp;</span>a);
+        dictionary_eq(<span class="kw-2">&amp;</span>cols[<span class="number">0</span>], <span class="kw-2">&amp;</span>a);
 
-        <span class="kw">let </span><span class="kw-2">mut </span>converter = RowConverter::new(<span class="macro">vec!</span>[SortField::new_with_options(
+        <span class="kw">let </span>converter = RowConverter::new(<span class="macro">vec!</span>[SortField::new_with_options(
             a.data_type().clone(),
             SortOptions {
                 descending: <span class="bool-val">true</span>,
                 nulls_first: <span class="bool-val">true</span>,
             },
-        )
-        .preserve_dictionaries(preserve)])
+        )])
         .unwrap();
 
         <span class="kw">let </span>rows_c = converter.convert_columns(<span class="kw-2">&amp;</span>[Arc::clone(<span class="kw-2">&amp;</span>a)]).unwrap();
@@ -4346,7 +4031,7 @@
         <span class="macro">assert!</span>(rows_c.row(<span class="number">3</span>) &lt; rows_c.row(<span class="number">0</span>));
 
         <span class="kw">let </span>cols = converter.convert_rows(<span class="kw-2">&amp;</span>rows_c).unwrap();
-        dictionary_eq(preserve, <span class="kw-2">&amp;</span>cols[<span class="number">0</span>], <span class="kw-2">&amp;</span>a);
+        dictionary_eq(<span class="kw-2">&amp;</span>cols[<span class="number">0</span>], <span class="kw-2">&amp;</span>a);
     }
 
     <span class="attr">#[test]
@@ -4359,7 +4044,7 @@
         <span class="kw">let </span>s1 = Arc::new(StructArray::from(<span class="macro">vec!</span>[(a_f, a), (u_f, u)])) <span class="kw">as </span>ArrayRef;
 
         <span class="kw">let </span>sort_fields = <span class="macro">vec!</span>[SortField::new(s1.data_type().clone())];
-        <span class="kw">let </span><span class="kw-2">mut </span>converter = RowConverter::new(sort_fields).unwrap();
+        <span class="kw">let </span>converter = RowConverter::new(sort_fields).unwrap();
         <span class="kw">let </span>r1 = converter.convert_columns(<span class="kw-2">&amp;</span>[Arc::clone(<span class="kw-2">&amp;</span>s1)]).unwrap();
 
         <span class="kw">for </span>(a, b) <span class="kw">in </span>r1.iter().zip(r1.iter().skip(<span class="number">1</span>)) {
@@ -4408,16 +4093,14 @@
         <span class="kw">let </span>data_type = a.data_type().clone();
         <span class="kw">let </span>columns = [Arc::new(a) <span class="kw">as </span>ArrayRef];
 
-        <span class="kw">for </span>preserve <span class="kw">in </span>[<span class="bool-val">true</span>, <span class="bool-val">false</span>] {
-            <span class="kw">let </span>field = SortField::new(data_type.clone()).preserve_dictionaries(preserve);
-            <span class="kw">let </span><span class="kw-2">mut </span>converter = RowConverter::new(<span class="macro">vec!</span>[field]).unwrap();
-            <span class="kw">let </span>rows = converter.convert_columns(<span class="kw-2">&amp;</span>columns).unwrap();
-            <span class="macro">assert!</span>(rows.row(<span class="number">0</span>) &lt; rows.row(<span class="number">1</span>));
-            <span class="macro">assert!</span>(rows.row(<span class="number">2</span>) &lt; rows.row(<span class="number">0</span>));
-            <span class="macro">assert!</span>(rows.row(<span class="number">3</span>) &lt; rows.row(<span class="number">2</span>));
-            <span class="macro">assert!</span>(rows.row(<span class="number">6</span>) &lt; rows.row(<span class="number">2</span>));
-            <span class="macro">assert!</span>(rows.row(<span class="number">3</span>) &lt; rows.row(<span class="number">6</span>));
-        }
+        <span class="kw">let </span>field = SortField::new(data_type.clone());
+        <span class="kw">let </span>converter = RowConverter::new(<span class="macro">vec!</span>[field]).unwrap();
+        <span class="kw">let </span>rows = converter.convert_columns(<span class="kw-2">&amp;</span>columns).unwrap();
+        <span class="macro">assert!</span>(rows.row(<span class="number">0</span>) &lt; rows.row(<span class="number">1</span>));
+        <span class="macro">assert!</span>(rows.row(<span class="number">2</span>) &lt; rows.row(<span class="number">0</span>));
+        <span class="macro">assert!</span>(rows.row(<span class="number">3</span>) &lt; rows.row(<span class="number">2</span>));
+        <span class="macro">assert!</span>(rows.row(<span class="number">6</span>) &lt; rows.row(<span class="number">2</span>));
+        <span class="macro">assert!</span>(rows.row(<span class="number">3</span>) &lt; rows.row(<span class="number">6</span>));
     }
 
     <span class="attr">#[test]
@@ -4438,22 +4121,20 @@
             .unwrap();
 
         <span class="kw">let </span>columns = [Arc::new(DictionaryArray::&lt;Int32Type&gt;::from(data)) <span class="kw">as </span>ArrayRef];
-        <span class="kw">for </span>preserve <span class="kw">in </span>[<span class="bool-val">true</span>, <span class="bool-val">false</span>] {
-            <span class="kw">let </span>field = SortField::new(data_type.clone()).preserve_dictionaries(preserve);
-            <span class="kw">let </span><span class="kw-2">mut </span>converter = RowConverter::new(<span class="macro">vec!</span>[field]).unwrap();
-            <span class="kw">let </span>rows = converter.convert_columns(<span class="kw-2">&amp;</span>columns).unwrap();
-
-            <span class="macro">assert_eq!</span>(rows.row(<span class="number">0</span>), rows.row(<span class="number">1</span>));
-            <span class="macro">assert_eq!</span>(rows.row(<span class="number">3</span>), rows.row(<span class="number">4</span>));
-            <span class="macro">assert_eq!</span>(rows.row(<span class="number">4</span>), rows.row(<span class="number">5</span>));
-            <span class="macro">assert!</span>(rows.row(<span class="number">3</span>) &lt; rows.row(<span class="number">0</span>));
-        }
+        <span class="kw">let </span>field = SortField::new(data_type.clone());
+        <span class="kw">let </span>converter = RowConverter::new(<span class="macro">vec!</span>[field]).unwrap();
+        <span class="kw">let </span>rows = converter.convert_columns(<span class="kw-2">&amp;</span>columns).unwrap();
+
+        <span class="macro">assert_eq!</span>(rows.row(<span class="number">0</span>), rows.row(<span class="number">1</span>));
+        <span class="macro">assert_eq!</span>(rows.row(<span class="number">3</span>), rows.row(<span class="number">4</span>));
+        <span class="macro">assert_eq!</span>(rows.row(<span class="number">4</span>), rows.row(<span class="number">5</span>));
+        <span class="macro">assert!</span>(rows.row(<span class="number">3</span>) &lt; rows.row(<span class="number">0</span>));
     }
 
     <span class="attr">#[test]
     #[should_panic(expected = <span class="string">&quot;Encountered non UTF-8 data&quot;</span>)]
     </span><span class="kw">fn </span>test_invalid_utf8() {
-        <span class="kw">let </span><span class="kw-2">mut </span>converter =
+        <span class="kw">let </span>converter =
             RowConverter::new(<span class="macro">vec!</span>[SortField::new(DataType::Binary)]).unwrap();
         <span class="kw">let </span>array = Arc::new(BinaryArray::from_iter_values([<span class="kw-2">&amp;</span>[<span class="number">0xFF</span>]])) <span class="kw">as _</span>;
         <span class="kw">let </span>rows = converter.convert_columns(<span class="kw-2">&amp;</span>[array]).unwrap();
@@ -4470,8 +4151,7 @@
     #[should_panic(expected = <span class="string">&quot;rows were not produced by this RowConverter&quot;</span>)]
     </span><span class="kw">fn </span>test_different_converter() {
         <span class="kw">let </span>values = Arc::new(Int32Array::from_iter([<span class="prelude-val">Some</span>(<span class="number">1</span>), <span class="prelude-val">Some</span>(-<span class="number">1</span>)]));
-        <span class="kw">let </span><span class="kw-2">mut </span>converter =
-            RowConverter::new(<span class="macro">vec!</span>[SortField::new(DataType::Int32)]).unwrap();
+        <span class="kw">let </span>converter = RowConverter::new(<span class="macro">vec!</span>[SortField::new(DataType::Int32)]).unwrap();
         <span class="kw">let </span>rows = converter.convert_columns(<span class="kw-2">&amp;</span>[values]).unwrap();
 
         <span class="kw">let </span>converter = RowConverter::new(<span class="macro">vec!</span>[SortField::new(DataType::Int32)]).unwrap();
@@ -4502,7 +4182,7 @@
         <span class="kw">let </span>list = Arc::new(builder.finish()) <span class="kw">as </span>ArrayRef;
         <span class="kw">let </span>d = list.data_type().clone();
 
-        <span class="kw">let </span><span class="kw-2">mut </span>converter = RowConverter::new(<span class="macro">vec!</span>[SortField::new(d.clone())]).unwrap();
+        <span class="kw">let </span>converter = RowConverter::new(<span class="macro">vec!</span>[SortField::new(d.clone())]).unwrap();
 
         <span class="kw">let </span>rows = converter.convert_columns(<span class="kw-2">&amp;</span>[Arc::clone(<span class="kw-2">&amp;</span>list)]).unwrap();
         <span class="macro">assert!</span>(rows.row(<span class="number">0</span>) &gt; rows.row(<span class="number">1</span>)); <span class="comment">// [32, 52, 32] &gt; [32, 52, 12]
@@ -4522,7 +4202,7 @@
             nulls_first: <span class="bool-val">false</span>,
         };
         <span class="kw">let </span>field = SortField::new_with_options(d.clone(), options);
-        <span class="kw">let </span><span class="kw-2">mut </span>converter = RowConverter::new(<span class="macro">vec!</span>[field]).unwrap();
+        <span class="kw">let </span>converter = RowConverter::new(<span class="macro">vec!</span>[field]).unwrap();
         <span class="kw">let </span>rows = converter.convert_columns(<span class="kw-2">&amp;</span>[Arc::clone(<span class="kw-2">&amp;</span>list)]).unwrap();
 
         <span class="macro">assert!</span>(rows.row(<span class="number">0</span>) &gt; rows.row(<span class="number">1</span>)); <span class="comment">// [32, 52, 32] &gt; [32, 52, 12]
@@ -4542,7 +4222,7 @@
             nulls_first: <span class="bool-val">false</span>,
         };
         <span class="kw">let </span>field = SortField::new_with_options(d.clone(), options);
-        <span class="kw">let </span><span class="kw-2">mut </span>converter = RowConverter::new(<span class="macro">vec!</span>[field]).unwrap();
+        <span class="kw">let </span>converter = RowConverter::new(<span class="macro">vec!</span>[field]).unwrap();
         <span class="kw">let </span>rows = converter.convert_columns(<span class="kw-2">&amp;</span>[Arc::clone(<span class="kw-2">&amp;</span>list)]).unwrap();
 
         <span class="macro">assert!</span>(rows.row(<span class="number">0</span>) &lt; rows.row(<span class="number">1</span>)); <span class="comment">// [32, 52, 32] &lt; [32, 52, 12]
@@ -4562,7 +4242,7 @@
             nulls_first: <span class="bool-val">true</span>,
         };
         <span class="kw">let </span>field = SortField::new_with_options(d, options);
-        <span class="kw">let </span><span class="kw-2">mut </span>converter = RowConverter::new(<span class="macro">vec!</span>[field]).unwrap();
+        <span class="kw">let </span>converter = RowConverter::new(<span class="macro">vec!</span>[field]).unwrap();
         <span class="kw">let </span>rows = converter.convert_columns(<span class="kw-2">&amp;</span>[Arc::clone(<span class="kw-2">&amp;</span>list)]).unwrap();
 
         <span class="macro">assert!</span>(rows.row(<span class="number">0</span>) &lt; rows.row(<span class="number">1</span>)); <span class="comment">// [32, 52, 32] &lt; [32, 52, 12]
@@ -4626,7 +4306,7 @@
             nulls_first: <span class="bool-val">true</span>,
         };
         <span class="kw">let </span>field = SortField::new_with_options(d.clone(), options);
-        <span class="kw">let </span><span class="kw-2">mut </span>converter = RowConverter::new(<span class="macro">vec!</span>[field]).unwrap();
+        <span class="kw">let </span>converter = RowConverter::new(<span class="macro">vec!</span>[field]).unwrap();
         <span class="kw">let </span>rows = converter.convert_columns(<span class="kw-2">&amp;</span>[Arc::clone(<span class="kw-2">&amp;</span>list)]).unwrap();
 
         <span class="macro">assert!</span>(rows.row(<span class="number">0</span>) &gt; rows.row(<span class="number">1</span>));
@@ -4645,7 +4325,7 @@
             nulls_first: <span class="bool-val">true</span>,
         };
         <span class="kw">let </span>field = SortField::new_with_options(d.clone(), options);
-        <span class="kw">let </span><span class="kw-2">mut </span>converter = RowConverter::new(<span class="macro">vec!</span>[field]).unwrap();
+        <span class="kw">let </span>converter = RowConverter::new(<span class="macro">vec!</span>[field]).unwrap();
         <span class="kw">let </span>rows = converter.convert_columns(<span class="kw-2">&amp;</span>[Arc::clone(<span class="kw-2">&amp;</span>list)]).unwrap();
 
         <span class="macro">assert!</span>(rows.row(<span class="number">0</span>) &gt; rows.row(<span class="number">1</span>));
@@ -4664,7 +4344,7 @@
             nulls_first: <span class="bool-val">false</span>,
         };
         <span class="kw">let </span>field = SortField::new_with_options(d, options);
-        <span class="kw">let </span><span class="kw-2">mut </span>converter = RowConverter::new(<span class="macro">vec!</span>[field]).unwrap();
+        <span class="kw">let </span>converter = RowConverter::new(<span class="macro">vec!</span>[field]).unwrap();
         <span class="kw">let </span>rows = converter.convert_columns(<span class="kw-2">&amp;</span>[Arc::clone(<span class="kw-2">&amp;</span>list)]).unwrap();
 
         <span class="macro">assert!</span>(rows.row(<span class="number">0</span>) &lt; rows.row(<span class="number">1</span>));
@@ -4691,35 +4371,6 @@
         test_nested_list::&lt;i64&gt;();
     }
 
-    <span class="attr">#[test]
-    </span><span class="kw">fn </span>test_dictionary_preserving() {
-        <span class="kw">let </span><span class="kw-2">mut </span>dict = StringDictionaryBuilder::&lt;Int32Type&gt;::new();
-        dict.append_value(<span class="string">&quot;foo&quot;</span>);
-        dict.append_value(<span class="string">&quot;foo&quot;</span>);
-        dict.append_value(<span class="string">&quot;bar&quot;</span>);
-        dict.append_value(<span class="string">&quot;bar&quot;</span>);
-        dict.append_value(<span class="string">&quot;bar&quot;</span>);
-        dict.append_value(<span class="string">&quot;bar&quot;</span>);
-
-        <span class="kw">let </span>array = Arc::new(dict.finish()) <span class="kw">as </span>ArrayRef;
-        <span class="kw">let </span>preserve = SortField::new(array.data_type().clone());
-        <span class="kw">let </span>non_preserve = preserve.clone().preserve_dictionaries(<span class="bool-val">false</span>);
-
-        <span class="kw">let </span><span class="kw-2">mut </span>c1 = RowConverter::new(<span class="macro">vec!</span>[preserve]).unwrap();
-        <span class="kw">let </span>r1 = c1.convert_columns(<span class="kw-2">&amp;</span>[array.clone()]).unwrap();
-
-        <span class="kw">let </span><span class="kw-2">mut </span>c2 = RowConverter::new(<span class="macro">vec!</span>[non_preserve]).unwrap();
-        <span class="kw">let </span>r2 = c2.convert_columns(<span class="kw-2">&amp;</span>[array.clone()]).unwrap();
-
-        <span class="kw">for </span>r <span class="kw">in </span>r1.iter() {
-            <span class="macro">assert_eq!</span>(r.data.len(), <span class="number">3</span>);
-        }
-
-        <span class="kw">for </span>r <span class="kw">in </span>r2.iter() {
-            <span class="macro">assert_eq!</span>(r.data.len(), <span class="number">10</span>);
-        }
-    }
-
     <span class="kw">fn </span>generate_primitive_array&lt;K&gt;(len: usize, valid_percent: f64) -&gt; PrimitiveArray&lt;K&gt;
     <span class="kw">where
         </span>K: ArrowPrimitiveType,
@@ -4875,21 +4526,15 @@
                 })
                 .collect();
 
-            <span class="kw">let </span>preserve: Vec&lt;<span class="kw">_</span>&gt; = (<span class="number">0</span>..num_columns).map(|<span class="kw">_</span>| rng.gen_bool(<span class="number">0.5</span>)).collect();
-
             <span class="kw">let </span>comparator = LexicographicalComparator::try_new(<span class="kw-2">&amp;</span>sort_columns).unwrap();
 
             <span class="kw">let </span>columns = options
                 .into_iter()
                 .zip(<span class="kw-2">&amp;</span>arrays)
-                .zip(<span class="kw-2">&amp;</span>preserve)
-                .map(|((o, a), p)| {
-                    SortField::new_with_options(a.data_type().clone(), o)
-                        .preserve_dictionaries(<span class="kw-2">*</span>p)
-                })
+                .map(|(o, a)| SortField::new_with_options(a.data_type().clone(), o))
                 .collect();
 
-            <span class="kw">let </span><span class="kw-2">mut </span>converter = RowConverter::new(columns).unwrap();
+            <span class="kw">let </span>converter = RowConverter::new(columns).unwrap();
             <span class="kw">let </span>rows = converter.convert_columns(<span class="kw-2">&amp;</span>arrays).unwrap();
 
             <span class="kw">for </span>i <span class="kw">in </span><span class="number">0</span>..len {
@@ -4912,17 +4557,16 @@
             }
 
             <span class="kw">let </span>back = converter.convert_rows(<span class="kw-2">&amp;</span>rows).unwrap();
-            <span class="kw">for </span>((actual, expected), preserve) <span class="kw">in </span>back.iter().zip(<span class="kw-2">&amp;</span>arrays).zip(preserve) {
+            <span class="kw">for </span>(actual, expected) <span class="kw">in </span>back.iter().zip(<span class="kw-2">&amp;</span>arrays) {
                 actual.to_data().validate_full().unwrap();
-                dictionary_eq(preserve, actual, expected)
+                dictionary_eq(actual, expected)
             }
         }
     }
 
     <span class="attr">#[test]
     </span><span class="kw">fn </span>test_clear() {
-        <span class="kw">let </span><span class="kw-2">mut </span>converter =
-            RowConverter::new(<span class="macro">vec!</span>[SortField::new(DataType::Int32)]).unwrap();
+        <span class="kw">let </span>converter = RowConverter::new(<span class="macro">vec!</span>[SortField::new(DataType::Int32)]).unwrap();
         <span class="kw">let </span><span class="kw-2">mut </span>rows = converter.empty_rows(<span class="number">3</span>, <span class="number">128</span>);
 
         <span class="kw">let </span>first = Int32Array::from(<span class="macro">vec!</span>[<span class="prelude-val">None</span>, <span class="prelude-val">Some</span>(<span class="number">2</span>), <span class="prelude-val">Some</span>(<span class="number">4</span>)]);
@@ -4952,7 +4596,7 @@
     </span><span class="kw">fn </span>test_append_codec_dictionary_binary() {
         <span class="kw">use </span>DataType::<span class="kw-2">*</span>;
         <span class="comment">// Dictionary RowConverter
-        </span><span class="kw">let </span><span class="kw-2">mut </span>converter = RowConverter::new(<span class="macro">vec!</span>[SortField::new(Dictionary(
+        </span><span class="kw">let </span>converter = RowConverter::new(<span class="macro">vec!</span>[SortField::new(Dictionary(
             Box::new(Int32),
             Box::new(Binary),
         ))])
@@ -4973,7 +4617,7 @@
         converter.append(<span class="kw-2">&amp;mut </span>rows, <span class="kw-2">&amp;</span>[array.clone()]).unwrap();
         <span class="kw">let </span>back = converter.convert_rows(<span class="kw-2">&amp;</span>rows).unwrap();
 
-        <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>back[<span class="number">0</span>], <span class="kw-2">&amp;</span>array);
+        dictionary_eq(<span class="kw-2">&amp;</span>back[<span class="number">0</span>], <span class="kw-2">&amp;</span>array);
     }
 }
 </code></pre></div></section></main></body></html>
\ No newline at end of file