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/10/30 11:45:04 UTC

(arrow-rs) branch asf-site updated: deploy: d9aaa437ca4ebf5a3500c865272243612862c7d4

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 d8bf811377 deploy: d9aaa437ca4ebf5a3500c865272243612862c7d4
d8bf811377 is described below

commit d8bf811377ec0bfad248be71b6e8fb7c2086eac7
Author: tustvold <tu...@users.noreply.github.com>
AuthorDate: Mon Oct 30 11:44:57 2023 +0000

    deploy: d9aaa437ca4ebf5a3500c865272243612862c7d4
---
 .../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 +-
 help.html                                          |   2 +-
 parquet/all.html                                   |   2 +-
 .../selection/struct.RowSelection.html             |   2 +-
 .../arrow/arrow_reader/struct.RowSelection.html    |   2 +-
 .../record_reader/buffer/trait.ScalarValue.html    |   2 +-
 parquet/basic/enum.ColumnOrder.html                |   2 +-
 parquet/basic/enum.ConvertedType.html              |   2 +-
 parquet/basic/enum.LogicalType.html                |   2 +-
 parquet/basic/enum.PageType.html                   |   2 +-
 parquet/basic/enum.SortOrder.html                  |   2 +-
 parquet/basic/enum.Type.html                       |   2 +-
 .../column/writer/encoder/trait.ColumnValues.html  |   2 +-
 .../data_type/private/trait.ParquetValueType.html  |  24 +-
 parquet/data_type/struct.ByteArray.html            |  16 +-
 parquet/data_type/struct.FixedLenByteArray.html    |  16 +-
 parquet/data_type/trait.AsBytes.html               |   2 +-
 parquet/data_type/trait.SliceAsBytes.html          |   2 +-
 parquet/errors/enum.ParquetError.html              |   2 +-
 parquet/file/reader/trait.Length.html              |   2 +-
 .../struct.SerializedFileReader.html               |   2 +-
 parquet/file/statistics/enum.Statistics.html       |   2 +-
 .../statistics/private/trait.MakeStatistics.html   |   8 +-
 .../file/statistics/struct.ValueStatistics.html    |   2 +-
 parquet/format/enum.LogicalType.html               |   2 +-
 parquet/format/struct.BoundaryOrder.html           |   2 +-
 parquet/format/struct.CompressionCodec.html        |   2 +-
 parquet/format/struct.ConvertedType.html           |   2 +-
 parquet/format/struct.Encoding.html                |   2 +-
 parquet/format/struct.FieldRepetitionType.html     |   2 +-
 parquet/format/struct.PageType.html                |   2 +-
 parquet/format/struct.Type.html                    |   2 +-
 parquet/record/api/enum.Field.html                 |   2 +-
 parquet/record/api/struct.Row.html                 |   4 +-
 parquet/record/enum.Field.html                     |   2 +-
 parquet/record/index.html                          |  11 +-
 .../{record_writer => record_reader}/index.html    |   4 +-
 parquet/record/record_reader/sidebar-items.js      |   1 +
 .../record/record_reader/trait.RecordReader.html   |  15 +
 parquet/record/record_writer/index.html            |   5 +-
 .../record/record_writer/trait.RecordWriter.html   |  10 +-
 parquet/record/sidebar-items.js                    |   2 +-
 parquet/record/struct.Row.html                     |   4 +-
 parquet/record/trait.RecordReader.html             |  15 +
 parquet/record/trait.RecordWriter.html             |  10 +-
 parquet_derive/all.html                            |   2 +-
 ...Writer.html => derive.ParquetRecordReader.html} |  44 +-
 parquet_derive/derive.ParquetRecordWriter.html     |   1 +
 parquet_derive/index.html                          |   5 +-
 parquet_derive/parquet_field/enum.Type.html        |  22 +-
 parquet_derive/parquet_field/index.html            |   2 +-
 parquet_derive/parquet_field/struct.Field.html     |  21 +-
 parquet_derive/sidebar-items.js                    |   2 +-
 parquet_derive_test/all.html                       |   2 +-
 parquet_derive_test/index.html                     |   2 +-
 parquet_derive_test/sidebar-items.js               |   2 +-
 .../struct.APartiallyCompleteRecord.html           |  34 ++
 search-index.js                                    |   6 +-
 settings.html                                      |   2 +-
 src-files.js                                       |   2 +-
 src/parquet/record/mod.rs.html                     |   4 +
 ...record_writer.rs.html => record_reader.rs.html} |  24 +-
 src/parquet/record/record_writer.rs.html           |  10 +-
 src/parquet_derive/lib.rs.html                     | 176 +++++-
 src/parquet_derive/parquet_field.rs.html           | 636 ++++++++++++++++++++-
 src/parquet_derive_test/lib.rs.html                | 136 ++++-
 .../flight_service_server/trait.FlightService.js   |   2 +-
 trait.impl/core/clone/trait.Clone.js               |   2 +-
 trait.impl/core/cmp/trait.Eq.js                    |   2 +-
 trait.impl/core/cmp/trait.Ord.js                   |   2 +-
 trait.impl/core/cmp/trait.PartialEq.js             |   3 +-
 trait.impl/core/cmp/trait.PartialOrd.js            |   2 +-
 trait.impl/core/convert/trait.AsRef.js             |   2 +-
 trait.impl/core/convert/trait.From.js              |   2 +-
 trait.impl/core/convert/trait.TryFrom.js           |   2 +-
 trait.impl/core/default/trait.Default.js           |   2 +-
 trait.impl/core/fmt/trait.Debug.js                 |   3 +-
 trait.impl/core/fmt/trait.Display.js               |   2 +-
 trait.impl/core/hash/trait.Hash.js                 |   2 +-
 .../core/iter/traits/iterator/trait.Iterator.js    |   2 +-
 trait.impl/core/marker/trait.Copy.js               |   2 +-
 trait.impl/core/marker/trait.Freeze.js             |   2 +-
 trait.impl/core/marker/trait.Send.js               |   2 +-
 trait.impl/core/marker/trait.StructuralEq.js       |   2 +-
 .../core/marker/trait.StructuralPartialEq.js       |   3 +-
 trait.impl/core/marker/trait.Sync.js               |   2 +-
 trait.impl/core/marker/trait.Unpin.js              |   2 +-
 .../core/panic/unwind_safe/trait.RefUnwindSafe.js  |   2 +-
 .../core/panic/unwind_safe/trait.UnwindSafe.js     |   2 +-
 trait.impl/core/str/traits/trait.FromStr.js        |   2 +-
 .../record/record_reader/trait.RecordReader.js     |   3 +
 .../record/record_writer/trait.RecordWriter.js     |   2 +-
 trait.impl/std/io/trait.Write.js                   |   2 +-
 .../struct.FlightServiceClient.js                  |   2 +-
 .../file/statistics/struct.ValueStatistics.js      |   2 +-
 type.impl/parquet/format/struct.KeyValue.js        |   2 +-
 110 files changed, 1300 insertions(+), 298 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 d6785e9fea..14fa369ac8 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.10.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.10.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 676fb531ef..7aee4b4fdd 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.10.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.10.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.10.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.10.2/tonic/transport/channel/struct.Channel.html" [...]
\ 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 fc04ce1f89..6f8268cac9 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 0db2668e5f..d290bafeb6 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.10.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.10.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 6c8f9d71b6..4a92090945 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.10.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.10.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 d03660ff4f..590793e171 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;IpcWriteOptions
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 23457004ce..0a2b0767eb 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.10.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.10.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 d341bdc4b2..2f7e9a742b 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.10.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.10.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 fd17da7769..cabb9432d7 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.10.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.10.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.10.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.10.2/tonic/transport/channel/struct.Channel.html" [...]
\ 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 fe671085da..c874b3d2f2 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.10.2/tonic/status/struct.Status.html" title="struct tonic::status::Status">Status</a>&gt;</h4></section><sect [...]
     &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.10.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.10.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.10.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.10.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#110-116">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#110-116">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.10.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.10.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#118-163">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#118-163">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.10.2/tonic/request/struct.Request.html" title="struct tonic::request::Request">Request</a>&lt;<a class="struct" href="https://docs.rs/tonic/0.10.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.10.2/tonic/request/struct.Request.html" title="struct tonic::request::Request">Request</a>&lt;<a class="struct" href="https://docs.rs/tonic/0.10.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#165-171">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#165-171">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.10.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.10.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#173-179">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#173-179">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.10.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.10.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#181-188">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#181-188">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.10.2/tonic/request/struct.Request.html" title="struct tonic::request::Request">Request</a>&lt;<a class="struct" href="https://docs.rs/tonic/0.10.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.10.2/tonic/request/struct.Request.html" title="struct tonic::request::Request">Request</a>&lt;<a class="struct" href="https://docs.rs/tonic/0.10.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#190-200">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#190-200">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.10.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.10.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#202-208">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#202-208">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.10.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.10.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#210-217">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#210-217">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.10.2/tonic/request/struct.Request.html" title="struct tonic::request::Request">Request</a>&lt;<a class="struct" href="https://docs.rs/tonic/0.10.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.10.2/tonic/request/struct.Request.html" title="struct tonic::request::Request">Request</a>&lt;<a class="struct" href="https://docs.rs/tonic/0.10.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 87acefd444..40cbb26da0 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 5a4bbc9269..3182c79413 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.10.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.10.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.10.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.10.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.10.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 671df071a0..b7261b6335 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.10.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.10.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.10.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 c5e97506f9..b760c77193 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.10.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.10.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-145">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-145">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.10.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.10.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#147-152">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#147-152">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.10.2/tonic/request/struct.Request.html" title="struct tonic::request::Request">Request</a>&lt;<a class="struct" href="https://docs.rs/tonic/0.10.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.10.2/tonic/request/struct.Request.html" title="struct tonic::request::Request">Request</a>&lt;<a class="struct" href="https://docs.rs/tonic/0.10.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#154-159">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#154-159">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.10.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.10.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#161-205">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#161-205">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.10.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.10.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#207-253">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#207-253">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.10.2/tonic/request/struct.Request.html" title="struct tonic::request::Request">Request</a>&lt;<a class="struct" href="https://docs.rs/tonic/0.10.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.10.2/tonic/request/struct.Request.html" title="struct tonic::request::Request">Request</a>&lt;<a class="struct" href="https://docs.rs/tonic/0.10.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#255-260">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#255-260">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.10.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.10.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#262-267">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#262-267">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.10.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.10.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#269-274">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#269-274">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.10.2/tonic/request/struct.Request.html" title="struct tonic::request::Request">Request</a>&lt;<a class="struct" href="https://docs.rs/tonic/0.10.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.10.2/tonic/request/struct.Request.html" title="struct tonic::request::Request">Request</a>&lt;<a class="struct" href="https://docs.rs/tonic/0.10.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 6b17e50c7f..7b5a67f7aa 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.10.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.10.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.10.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.10.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.10.2/tonic/request/struct.Request.html" title="struct tonic::request::Request">Request</a>&lt;<a class="struct" href="https://docs.rs/tonic/0.10.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.10.2/tonic/request/struct.Request.html" title="struct tonic::request::Request">Request</a>&lt;<a class="struct" href="https://docs.rs/tonic/0.10.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.10.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.10.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-121">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-121">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.10.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.10.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#123-128">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#123-128">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.10.2/tonic/request/struct.Request.html" title="struct tonic::request::Request">Request</a>&lt;<a class="struct" href="https://docs.rs/tonic/0.10.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.10.2/tonic/request/struct.Request.html" title="struct tonic::request::Request">Request</a>&lt;<a class="struct" href="https://docs.rs/tonic/0.10.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#130-135">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#130-135">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.10.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.10.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#137-142">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#137-142">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.10.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.10.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#144-149">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#144-149">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.10.2/tonic/request/struct.Request.html" title="struct tonic::request::Request">Request</a>&lt;<a class="struct" href="https://docs.rs/tonic/0.10.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.10.2/tonic/request/struct.Request.html" title="struct tonic::request::Request">Request</a>&lt;<a class="struct" href="https://docs.rs/tonic/0.10.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/help.html b/help.html
index 6e3cd33450..6a80691bd8 100644
--- a/help.html
+++ b/help.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="Documentation for Rustdoc"><title>Help</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/FiraSans-Regular-018c141bf0843f [...]
\ 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="Documentation for Rustdoc"><title>Help</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/FiraSans-Regular-018c141bf0843f [...]
\ No newline at end of file
diff --git a/parquet/all.html b/parquet/all.html
index 28ae6bf3fa..b4aa9ac084 100644
--- a/parquet/all.html
+++ b/parquet/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/parquet/arrow/arrow_reader/selection/struct.RowSelection.html b/parquet/arrow/arrow_reader/selection/struct.RowSelection.html
index 5468aad3eb..8eb76737aa 100644
--- a/parquet/arrow/arrow_reader/selection/struct.RowSelection.html
+++ b/parquet/arrow/arrow_reader/selection/struct.RowSelection.html
@@ -66,7 +66,7 @@ other:     NYNNNNNNY</p>
 </div></details><details class="toggle method-toggle" open><summary><section id="method.iter" class="method"><a class="src rightside" href="../../../../src/parquet/arrow/arrow_reader/selection.rs.html#434-436">source</a><h4 class="code-header">pub fn <a href="#method.iter" class="fn">iter</a>(&amp;self) -&gt; impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a>&lt;Ite [...]
 <a href="struct.RowSelection.html" title="struct parquet::arrow::arrow_reader::selection::RowSelection"><code>RowSelection</code></a>.</p>
 </div></details><details class="toggle method-toggle" open><summary><section id="method.row_count" class="method"><a class="src rightside" href="../../../../src/parquet/arrow/arrow_reader/selection.rs.html#439-441">source</a><h4 class="code-header">pub fn <a href="#method.row_count" class="fn">row_count</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 o [...]
-</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-RowSelection" class="impl"><a class="src rightside" href="../../../../src/parquet/arrow/arrow_reader/selection.rs.html#87">source</a><a href="#impl-Clone-for-RowSelection" class="anchor">§</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-Clone-for-RowSelection" class="impl"><a class="src rightside" href="../../../../src/parquet/arrow/arrow_reader/selection.rs.html#87">source</a><a href="#impl-Clone-for-RowSelection" class="anchor">§</a> [...]
 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#239">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-RowSelection" class="impl"><a class="src rightside" href="../../../../src/parquet/arrow/arrow_reader/selection.rs.html#87">source</a><a href="#impl-Eq-for-RowSelection" 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. [...]
     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 [...]
diff --git a/parquet/arrow/arrow_reader/struct.RowSelection.html b/parquet/arrow/arrow_reader/struct.RowSelection.html
index e90aa4c14c..bfc51c3af4 100644
--- a/parquet/arrow/arrow_reader/struct.RowSelection.html
+++ b/parquet/arrow/arrow_reader/struct.RowSelection.html
@@ -66,7 +66,7 @@ other:     NYNNNNNNY</p>
 </div></details><details class="toggle method-toggle" open><summary><section id="method.iter" class="method"><a class="src rightside" href="../../../src/parquet/arrow/arrow_reader/selection.rs.html#434-436">source</a><h4 class="code-header">pub fn <a href="#method.iter" class="fn">iter</a>(&amp;self) -&gt; impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a>&lt;Item = [...]
 <a href="selection/struct.RowSelection.html" title="struct parquet::arrow::arrow_reader::selection::RowSelection"><code>RowSelection</code></a>.</p>
 </div></details><details class="toggle method-toggle" open><summary><section id="method.row_count" class="method"><a class="src rightside" href="../../../src/parquet/arrow/arrow_reader/selection.rs.html#439-441">source</a><h4 class="code-header">pub fn <a href="#method.row_count" class="fn">row_count</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 s [...]
-</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-RowSelection" class="impl"><a class="src rightside" href="../../../src/parquet/arrow/arrow_reader/selection.rs.html#87">source</a><a href="#impl-Clone-for-RowSelection" class="anchor">§</a><h3 [...]
+</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-RowSelection" class="impl"><a class="src rightside" href="../../../src/parquet/arrow/arrow_reader/selection.rs.html#87">source</a><a href="#impl-Clone-for-RowSelection" class="anchor">§</a><h3 [...]
 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#239">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-RowSelection" class="impl"><a class="src rightside" href="../../../src/parquet/arrow/arrow_reader/selection.rs.html#87">source</a><a href="#impl-Eq-for-RowSelection" 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="selection/ [...]
     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 [...]
diff --git a/parquet/arrow/record_reader/buffer/trait.ScalarValue.html b/parquet/arrow/record_reader/buffer/trait.ScalarValue.html
index 798555427d..44d67f4538 100644
--- a/parquet/arrow/record_reader/buffer/trait.ScalarValue.html
+++ b/parquet/arrow/record_reader/buffer/trait.ScalarValue.html
@@ -2,4 +2,4 @@
 <p>This means that a <code>[Self::default()]</code> of length <code>len</code> can be safely created from a
 zero-initialized <code>[u8]</code> with length <code>len * std::mem::size_of::&lt;Self&gt;()</code> and
 alignment of <code>std::mem::size_of::&lt;Self&gt;()</code></p>
-</div></details><h2 id="foreign-impls" class="small-section-header">Implementations on Foreign Types<a href="#foreign-impls" class="anchor">§</a></h2><section id="impl-ScalarValue-for-u16" class="impl"><a class="src rightside" href="../../../../src/parquet/arrow/record_reader/buffer.rs.html#75">source</a><a href="#impl-ScalarValue-for-u16" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.ScalarValue.html" title="trait parquet::arrow::record_reader::buffer::Sc [...]
\ No newline at end of file
+</div></details><h2 id="foreign-impls" class="small-section-header">Implementations on Foreign Types<a href="#foreign-impls" class="anchor">§</a></h2><section id="impl-ScalarValue-for-i16" class="impl"><a class="src rightside" href="../../../../src/parquet/arrow/record_reader/buffer.rs.html#76">source</a><a href="#impl-ScalarValue-for-i16" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.ScalarValue.html" title="trait parquet::arrow::record_reader::buffer::Sc [...]
\ No newline at end of file
diff --git a/parquet/basic/enum.ColumnOrder.html b/parquet/basic/enum.ColumnOrder.html
index 46713f8214..19656dd331 100644
--- a/parquet/basic/enum.ColumnOrder.html
+++ b/parquet/basic/enum.ColumnOrder.html
@@ -19,7 +19,7 @@ Sort order is always SIGNED.</p>
     physical_type: <a class="enum" href="enum.Type.html" title="enum parquet::basic::Type">Type</a>
 ) -&gt; <a class="enum" href="enum.SortOrder.html" title="enum parquet::basic::SortOrder">SortOrder</a></h4></section><details class="toggle method-toggle" open><summary><section id="method.get_default_sort_order" class="method"><a class="src rightside" href="../../src/parquet/basic.rs.html#527-543">source</a><h4 class="code-header">fn <a href="#method.get_default_sort_order" class="fn">get_default_sort_order</a>(physical_type: <a class="enum" href="enum.Type.html" title="enum parquet::b [...]
 </div></details><details class="toggle method-toggle" open><summary><section id="method.sort_order" class="method"><a class="src rightside" href="../../src/parquet/basic.rs.html#546-551">source</a><h4 class="code-header">pub fn <a href="#method.sort_order" class="fn">sort_order</a>(&amp;self) -&gt; <a class="enum" href="enum.SortOrder.html" title="enum parquet::basic::SortOrder">SortOrder</a></h4></section></summary><div class="docblock"><p>Returns sort order associated with this column  [...]
-</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-ColumnOrder" class="impl"><a class="src rightside" href="../../src/parquet/basic.rs.html#446">source</a><a href="#impl-Clone-for-ColumnOrder" class="anchor">§</a><h3 class="code-header">impl < [...]
+</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-ColumnOrder" class="impl"><a class="src rightside" href="../../src/parquet/basic.rs.html#446">source</a><a href="#impl-Clone-for-ColumnOrder" class="anchor">§</a><h3 class="code-header">impl < [...]
 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#239">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-ColumnOrder" class="impl"><a class="src rightside" href="../../src/parquet/basic.rs.html#446">source</a><a href="#impl-Copy-for-ColumnOrder" 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="enum" href="enum.ColumnOrder.html"  [...]
     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 [...]
diff --git a/parquet/basic/enum.ConvertedType.html b/parquet/basic/enum.ConvertedType.html
index 297ccbaf98..df05a0512b 100644
--- a/parquet/basic/enum.ConvertedType.html
+++ b/parquet/basic/enum.ConvertedType.html
@@ -70,7 +70,7 @@ the number of months associated with the duration, the second identifies
 the number of days associated with the duration and the third identifies
 the number of milliseconds associated with the provided duration.
 This duration of time is independent of any particular timezone or date.</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-Clone-for-ConvertedType" class="impl"><a class="src rightside" href="../../src/parquet/basic.rs.html#68">source</a><a href="#impl-Clone-for-ConvertedType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="h [...]
+</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-Clone-for-ConvertedType" class="impl"><a class="src rightside" href="../../src/parquet/basic.rs.html#68">source</a><a href="#impl-Clone-for-ConvertedType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="h [...]
 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#239">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-TryFrom%3COption%3CConvertedType%3E%3E-for-ConvertedType" class="impl"><a class="src rightside" href="../../src/parquet/basic.rs.html#641-679">source</a><a href="#impl-TryFrom%3COption%3CConvertedType%3E%3E-for-ConvertedType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lan [...]
     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 [...]
diff --git a/parquet/basic/enum.LogicalType.html b/parquet/basic/enum.LogicalType.html
index f31762e08d..4e21593b18 100644
--- a/parquet/basic/enum.LogicalType.html
+++ b/parquet/basic/enum.LogicalType.html
@@ -28,7 +28,7 @@
 <p>This is an <em>entirely new</em> struct as of version
 4.0.0. The struct previously named <code>LogicalType</code> was renamed to
 <a href="enum.ConvertedType.html" title="enum parquet::basic::ConvertedType"><code>ConvertedType</code></a>. Please see the README.md for more details.</p>
-</div></details><h2 id="variants" class="variants small-section-header">Variants<a href="#variants" class="anchor">§</a></h2><div class="variants"><section id="variant.String" class="variant"><a href="#variant.String" class="anchor">§</a><h3 class="code-header">String</h3></section><section id="variant.Map" class="variant"><a href="#variant.Map" class="anchor">§</a><h3 class="code-header">Map</h3></section><section id="variant.List" class="variant"><a href="#variant.List" class="anchor"> [...]
+</div></details><h2 id="variants" class="variants small-section-header">Variants<a href="#variants" class="anchor">§</a></h2><div class="variants"><section id="variant.String" class="variant"><a href="#variant.String" class="anchor">§</a><h3 class="code-header">String</h3></section><section id="variant.Map" class="variant"><a href="#variant.Map" class="anchor">§</a><h3 class="code-header">Map</h3></section><section id="variant.List" class="variant"><a href="#variant.List" class="anchor"> [...]
 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#239">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-LogicalType" class="impl"><a class="src rightside" href="../../src/parquet/basic.rs.html#170">source</a><a href="#impl-Eq-for-LogicalType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="enum" href="enum.LogicalType.html" title="enum parq [...]
     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 [...]
diff --git a/parquet/basic/enum.PageType.html b/parquet/basic/enum.PageType.html
index ff883697f9..a9766b7ffb 100644
--- a/parquet/basic/enum.PageType.html
+++ b/parquet/basic/enum.PageType.html
@@ -5,7 +5,7 @@
     DATA_PAGE_V2,
 }</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Available data pages for Parquet file format.
 Note that some of the page types may not be supported.</p>
-</div></details><h2 id="variants" class="variants small-section-header">Variants<a href="#variants" class="anchor">§</a></h2><div class="variants"><section id="variant.DATA_PAGE" class="variant"><a href="#variant.DATA_PAGE" class="anchor">§</a><h3 class="code-header">DATA_PAGE</h3></section><section id="variant.INDEX_PAGE" class="variant"><a href="#variant.INDEX_PAGE" class="anchor">§</a><h3 class="code-header">INDEX_PAGE</h3></section><section id="variant.DICTIONARY_PAGE" class="variant [...]
+</div></details><h2 id="variants" class="variants small-section-header">Variants<a href="#variants" class="anchor">§</a></h2><div class="variants"><section id="variant.DATA_PAGE" class="variant"><a href="#variant.DATA_PAGE" class="anchor">§</a><h3 class="code-header">DATA_PAGE</h3></section><section id="variant.INDEX_PAGE" class="variant"><a href="#variant.INDEX_PAGE" class="anchor">§</a><h3 class="code-header">INDEX_PAGE</h3></section><section id="variant.DICTIONARY_PAGE" class="variant [...]
 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#239">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-TryFrom%3CPageType%3E-for-PageType" class="impl"><a class="src rightside" href="../../src/parquet/basic.rs.html#952-964">source</a><a href="#impl-TryFrom%3CPageType%3E-for-PageType" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.htm [...]
     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 [...]
diff --git a/parquet/basic/enum.SortOrder.html b/parquet/basic/enum.SortOrder.html
index 41fdff90e2..2c4b393e25 100644
--- a/parquet/basic/enum.SortOrder.html
+++ b/parquet/basic/enum.SortOrder.html
@@ -12,7 +12,7 @@ min/max.</p>
 </div><section id="variant.UNSIGNED" class="variant"><a href="#variant.UNSIGNED" class="anchor">§</a><h3 class="code-header">UNSIGNED</h3></section><div class="docblock"><p>Unsigned (depending on physical type either value or byte-wise) comparison.</p>
 </div><section id="variant.UNDEFINED" class="variant"><a href="#variant.UNDEFINED" class="anchor">§</a><h3 class="code-header">UNDEFINED</h3></section><div class="docblock"><p>Comparison is undefined.</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-SortOrder" class="impl"><a class="src rightside" href="../../src/parquet/basic.rs.html#434-439">source</a><a href="#impl-SortOrder" class="anchor">§</a><h3 class="code-header">impl <a class="enum" href="enum.SortOrder.html" title="enum parquet::basic:: [...]
-</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-SortOrder" class="impl"><a class="src rightside" href="../../src/parquet/basic.rs.html#423">source</a><a href="#impl-Clone-for-SortOrder" class="anchor">§</a><h3 class="code-header">impl <a cl [...]
+</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-SortOrder" class="impl"><a class="src rightside" href="../../src/parquet/basic.rs.html#423">source</a><a href="#impl-Clone-for-SortOrder" class="anchor">§</a><h3 class="code-header">impl <a cl [...]
 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#239">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-SortOrder" class="impl"><a class="src rightside" href="../../src/parquet/basic.rs.html#423">source</a><a href="#impl-Copy-for-SortOrder" 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="enum" href="enum.SortOrder.html" title= [...]
     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 [...]
diff --git a/parquet/basic/enum.Type.html b/parquet/basic/enum.Type.html
index fb34bf2bc6..61af922488 100644
--- a/parquet/basic/enum.Type.html
+++ b/parquet/basic/enum.Type.html
@@ -12,7 +12,7 @@ These physical types are intended to be used in combination with the encodings t
 control the on disk storage format.
 For example INT16 is not included as a type since a good encoding of INT32
 would handle this.</p>
-</div></details><h2 id="variants" class="variants small-section-header">Variants<a href="#variants" class="anchor">§</a></h2><div class="variants"><section id="variant.BOOLEAN" class="variant"><a href="#variant.BOOLEAN" class="anchor">§</a><h3 class="code-header">BOOLEAN</h3></section><section id="variant.INT32" class="variant"><a href="#variant.INT32" class="anchor">§</a><h3 class="code-header">INT32</h3></section><section id="variant.INT64" class="variant"><a href="#variant.INT64" clas [...]
+</div></details><h2 id="variants" class="variants small-section-header">Variants<a href="#variants" class="anchor">§</a></h2><div class="variants"><section id="variant.BOOLEAN" class="variant"><a href="#variant.BOOLEAN" class="anchor">§</a><h3 class="code-header">BOOLEAN</h3></section><section id="variant.INT32" class="variant"><a href="#variant.INT32" class="anchor">§</a><h3 class="code-header">INT32</h3></section><section id="variant.INT64" class="variant"><a href="#variant.INT64" clas [...]
     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#239">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= [...]
diff --git a/parquet/column/writer/encoder/trait.ColumnValues.html b/parquet/column/writer/encoder/trait.ColumnValues.html
index 6d49dd8c0c..561e1f8ba3 100644
--- a/parquet/column/writer/encoder/trait.ColumnValues.html
+++ b/parquet/column/writer/encoder/trait.ColumnValues.html
@@ -3,4 +3,4 @@
     fn <a href="#tymethod.len" class="fn">len</a>(&amp;self) -&gt; <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>A collection of <a href="../../../data_type/private/trait.ParquetValueType.html" title="trait parquet::data_type::private::ParquetValueType"><code>ParquetValueType</code></a> encoded by a <a href="trait.ColumnValueEncoder.html" title="trait parquet::column::writer::encoder::ColumnValueEncoder"><code>ColumnValueEncoder</code></a></p>
 </div></details><h2 id="required-methods" class="small-section-header">Required Methods<a href="#required-methods" class="anchor">§</a></h2><div class="methods"><details class="toggle method-toggle" open><summary><section id="tymethod.len" class="method"><a class="src rightside" href="../../../../src/parquet/column/writer/encoder.rs.html#34">source</a><h4 class="code-header">fn <a href="#tymethod.len" class="fn">len</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.or [...]
-</div></details></div><h2 id="foreign-impls" class="small-section-header">Implementations on Foreign Types<a href="#foreign-impls" class="anchor">§</a></h2><details class="toggle implementors-toggle"><summary><section id="impl-ColumnValues-for-dyn+Array" class="impl"><a class="src rightside" href="../../../../src/parquet/column/writer/encoder.rs.html#38-42">source</a><a href="#impl-ColumnValues-for-dyn+Array" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.C [...]
\ No newline at end of file
+</div></details></div><h2 id="foreign-impls" class="small-section-header">Implementations on Foreign Types<a href="#foreign-impls" class="anchor">§</a></h2><details class="toggle implementors-toggle"><summary><section id="impl-ColumnValues-for-%5BT%5D" class="impl"><a class="src rightside" href="../../../../src/parquet/column/writer/encoder.rs.html#44-48">source</a><a href="#impl-ColumnValues-for-%5BT%5D" class="anchor">§</a><h3 class="code-header">impl&lt;T: <a class="trait" href="../.. [...]
\ No newline at end of file
diff --git a/parquet/data_type/private/trait.ParquetValueType.html b/parquet/data_type/private/trait.ParquetValueType.html
index 780f480a5e..e8a59ea995 100644
--- a/parquet/data_type/private/trait.ParquetValueType.html
+++ b/parquet/data_type/private/trait.ParquetValueType.html
@@ -54,18 +54,18 @@ implemented for <code>f32</code> and <code>f64</code>, types that would fail orp
 </div></details><details class="toggle method-toggle" open><summary><section id="method.as_u64" class="method"><a class="src rightside" href="../../../src/parquet/data_type.rs.html#645-649">source</a><h4 class="code-header">fn <a href="#method.as_u64" class="fn">as_u64</a>(&amp;self) -&gt; <a class="type" href="../../errors/type.Result.html" title="type parquet::errors::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;< [...]
 <p>This is essentially the same as <code>std::convert::TryInto&lt;u64&gt;</code> but can
 implemented for <code>f32</code> and <code>f64</code>, types that would fail orphan rules</p>
-</div></details></div><h2 id="foreign-impls" class="small-section-header">Implementations on Foreign Types<a href="#foreign-impls" class="anchor">§</a></h2><details class="toggle implementors-toggle"><summary><section id="impl-ParquetValueType-for-bool" class="impl"><a class="src rightside" href="../../../src/parquet/data_type.rs.html#658-710">source</a><a href="#impl-ParquetValueType-for-bool" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.ParquetValueType [...]
+</div></details></div><h2 id="foreign-impls" class="small-section-header">Implementations on Foreign Types<a href="#foreign-impls" class="anchor">§</a></h2><details class="toggle implementors-toggle"><summary><section id="impl-ParquetValueType-for-i64" class="impl"><a class="src rightside" href="../../../src/parquet/data_type.rs.html#795">source</a><a href="#impl-ParquetValueType-for-i64" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.ParquetValueType.html" [...]
     values: &amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[Self]</a>,
-    _: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut W</a>,
-    bit_writer: &amp;mut BitWriter
-) -&gt; <a class="type" href="../../errors/type.Result.html" title="type parquet::errors::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>&gt;</h4></section><section id="method.set_data" class="method trait-impl"><a class="src rightside" href="../../../src/parquet/data_type.rs.html#674-677">source</a><a href="#method.set_data" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.set_data" class="fn">set_data</a>(
+    writer: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut W</a>,
+    _: &amp;mut BitWriter
+) -&gt; <a class="type" href="../../errors/type.Result.html" title="type parquet::errors::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>&gt;</h4></section><section id="method.set_data" class="method trait-impl"><a class="src rightside" href="../../../src/parquet/data_type.rs.html#795">source</a><a href="#method.set_data" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.set_data" class="fn">set_data</a>(
     decoder: &amp;mut PlainDecoderDetails,
     data: ByteBufferPtr,
     num_values: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>
-)</h4></section><section id="method.decode" class="method trait-impl"><a class="src rightside" href="../../../src/parquet/data_type.rs.html#680-686">source</a><a href="#method.decode" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.decode" class="fn">decode</a>(
+)</h4></section><section id="method.decode" class="method trait-impl"><a class="src rightside" href="../../../src/parquet/data_type.rs.html#795">source</a><a href="#method.decode" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.decode" class="fn">decode</a>(
     buffer: &amp;mut <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[Self]</a>,
     decoder: &amp;mut PlainDecoderDetails
-) -&gt; <a class="type" href="../../errors/type.Result.html" title="type parquet::errors::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>&gt;</h4></section><section id="method.skip" class="method trait-impl"><a class="src rightside" href="../../../src/parquet/data_type.rs.html#688-694">source</a><a href="#method.skip" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.skip" class="fn">skip</a>(decoder:  [...]
+) -&gt; <a class="type" href="../../errors/type.Result.html" title="type parquet::errors::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>&gt;</h4></section><section id="method.skip" class="method trait-impl"><a class="src rightside" href="../../../src/parquet/data_type.rs.html#795">source</a><a href="#method.skip" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.skip" class="fn">skip</a>(decoder: &amp [...]
     values: &amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[Self]</a>,
     writer: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut W</a>,
     _: &amp;mut BitWriter
@@ -98,15 +98,15 @@ implemented for <code>f32</code> and <code>f64</code>, types that would fail orp
 )</h4></section><section id="method.decode-3" class="method trait-impl"><a class="src rightside" href="../../../src/parquet/data_type.rs.html#794">source</a><a href="#method.decode-3" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.decode" class="fn">decode</a>(
     buffer: &amp;mut <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[Self]</a>,
     decoder: &amp;mut PlainDecoderDetails
-) -&gt; <a class="type" href="../../errors/type.Result.html" title="type parquet::errors::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>&gt;</h4></section><section id="method.skip-3" class="method trait-impl"><a class="src rightside" href="../../../src/parquet/data_type.rs.html#794">source</a><a href="#method.skip-3" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.skip" class="fn">skip</a>(decoder:  [...]
+) -&gt; <a class="type" href="../../errors/type.Result.html" title="type parquet::errors::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>&gt;</h4></section><section id="method.skip-3" class="method trait-impl"><a class="src rightside" href="../../../src/parquet/data_type.rs.html#794">source</a><a href="#method.skip-3" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.skip" class="fn">skip</a>(decoder:  [...]
     values: &amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[Self]</a>,
-    writer: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut W</a>,
-    _: &amp;mut BitWriter
-) -&gt; <a class="type" href="../../errors/type.Result.html" title="type parquet::errors::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>&gt;</h4></section><section id="method.set_data-4" class="method trait-impl"><a class="src rightside" href="../../../src/parquet/data_type.rs.html#795">source</a><a href="#method.set_data-4" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.set_data" class="fn">set_data</a>(
+    _: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut W</a>,
+    bit_writer: &amp;mut BitWriter
+) -&gt; <a class="type" href="../../errors/type.Result.html" title="type parquet::errors::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>&gt;</h4></section><section id="method.set_data-4" class="method trait-impl"><a class="src rightside" href="../../../src/parquet/data_type.rs.html#674-677">source</a><a href="#method.set_data-4" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.set_data" class="fn">set_data</a>(
     decoder: &amp;mut PlainDecoderDetails,
     data: ByteBufferPtr,
     num_values: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>
-)</h4></section><section id="method.decode-4" class="method trait-impl"><a class="src rightside" href="../../../src/parquet/data_type.rs.html#795">source</a><a href="#method.decode-4" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.decode" class="fn">decode</a>(
+)</h4></section><section id="method.decode-4" class="method trait-impl"><a class="src rightside" href="../../../src/parquet/data_type.rs.html#680-686">source</a><a href="#method.decode-4" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.decode" class="fn">decode</a>(
     buffer: &amp;mut <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[Self]</a>,
     decoder: &amp;mut PlainDecoderDetails
-) -&gt; <a class="type" href="../../errors/type.Result.html" title="type parquet::errors::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>&gt;</h4></section><section id="method.skip-4" class="method trait-impl"><a class="src rightside" href="../../../src/parquet/data_type.rs.html#795">source</a><a href="#method.skip-4" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.skip" class="fn">skip</a>(decoder:  [...]
\ No newline at end of file
+) -&gt; <a class="type" href="../../errors/type.Result.html" title="type parquet::errors::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>&gt;</h4></section><section id="method.skip-4" class="method trait-impl"><a class="src rightside" href="../../../src/parquet/data_type.rs.html#688-694">source</a><a href="#method.skip-4" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.skip" class="fn">skip</a>(decod [...]
\ No newline at end of file
diff --git a/parquet/data_type/struct.ByteArray.html b/parquet/data_type/struct.ByteArray.html
index 812c372744..79b8d987c9 100644
--- a/parquet/data_type/struct.ByteArray.html
+++ b/parquet/data_type/struct.ByteArray.html
@@ -8,7 +8,7 @@ Value is backed by a byte buffer.</p>
 </div></details><details class="toggle method-toggle" open><summary><section id="method.data" class="method"><a class="src rightside" href="../../src/parquet/data_type.rs.html#161-166">source</a><h4 class="code-header">pub fn <a href="#method.data" class="fn">data</a>(&amp;self) -&gt; &amp;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>] <a href="#" class="tooltip" data-notable-ty="&amp;[u8]">ⓘ</a></h4></section></summary><div class="docblock"> [...]
 </div></details><details class="toggle method-toggle" open><summary><section id="method.set_data" class="method"><a class="src rightside" href="../../src/parquet/data_type.rs.html#170-172">source</a><h4 class="code-header">pub fn <a href="#method.set_data" class="fn">set_data</a>(&amp;mut self, data: ByteBufferPtr)</h4></section></summary><div class="docblock"><p>Set data from another byte buffer.</p>
 </div></details><details class="toggle method-toggle" open><summary><section id="method.slice" class="method"><a class="src rightside" href="../../src/parquet/data_type.rs.html#176-183">source</a><h4 class="code-header">pub fn <a href="#method.slice" class="fn">slice</a>(&amp;self, start: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>, len: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) - [...]
-</div></details><section id="method.as_utf8" class="method"><a class="src rightside" href="../../src/parquet/data_type.rs.html#185-191">source</a><h4 class="code-header">pub fn <a href="#method.as_utf8" class="fn">as_utf8</a>(&amp;self) -&gt; <a class="type" href="../errors/type.Result.html" title="type parquet::errors::Result">Result</a>&lt;&amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>&gt;</h4></section></div></details></div><h2 id="tr [...]
+</div></details><section id="method.as_utf8" class="method"><a class="src rightside" href="../../src/parquet/data_type.rs.html#185-191">source</a><h4 class="code-header">pub fn <a href="#method.as_utf8" class="fn">as_utf8</a>(&amp;self) -&gt; <a class="type" href="../errors/type.Result.html" title="type parquet::errors::Result">Result</a>&lt;&amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>&gt;</h4></section></div></details></div><h2 id="tr [...]
     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></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-ParquetValueType-for-ByteArray" class="impl"><a class="src rightside" href="../../src/parquet/data_type.rs.html#886-968">source</a><a href="#impl-ParquetValueType-for-ByteArray" class="anchor">§</a><h3 class="code-header">impl <a class=" [...]
     values: &amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[Self]</a>,
     writer: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut W</a>,
@@ -20,18 +20,18 @@ Value is backed by a byte buffer.</p>
 )</h4></section></summary><div class='docblock'>Establish the data that will be decoded in a buffer</div></details><details class="toggle method-toggle" open><summary><section id="method.decode" class="method trait-impl"><a class="src rightside" href="../../src/parquet/data_type.rs.html#912-935">source</a><a href="#method.decode" class="anchor">§</a><h4 class="code-header">fn <a href="private/trait.ParquetValueType.html#tymethod.decode" class="fn">decode</a>(
     buffer: &amp;mut <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[Self]</a>,
     decoder: &amp;mut PlainDecoderDetails
-) -&gt; <a class="type" href="../errors/type.Result.html" title="type parquet::errors::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>&gt;</h4></section></summary><div class='docblock'>Decode the value from a given buffer for a higher level decoder</div></details><section id="method.skip" class="method trait-impl"><a class="src rightside" href="../../src/parquet/data_type.rs.html#937-952">source</a><a href="#method.sk [...]
-by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne-1" 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#239">source</a></span><a href="#method.ne-1" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" cl [...]
-sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq%3CFixedLenByteArray%3E-for-ByteArray" class="impl"><a class="src rightside" href="../../src/parquet/data_type.rs.html#280-284">source</a><a href="#impl-PartialEq%3CFixedLenByteArray%3E-for-ByteArray" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/co [...]
+) -&gt; <a class="type" href="../errors/type.Result.html" title="type parquet::errors::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>&gt;</h4></section></summary><div class='docblock'>Decode the value from a given buffer for a higher level decoder</div></details><section id="method.skip" class="method trait-impl"><a class="src rightside" href="../../src/parquet/data_type.rs.html#937-952">source</a><a href="#method.sk [...]
 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#239">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-PartialEq-for-ByteArray" class="impl"><a class="src rightside" href="../../src/parquet/data_type.rs.html#234-242">source</a><a href="#impl-PartialEq-for-ByteArray" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core [...]
+sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq%3CFixedLenByteArray%3E-for-ByteArray" class="impl"><a class="src rightside" href="../../src/parquet/data_type.rs.html#280-284">source</a><a href="#impl-PartialEq%3CFixedLenByteArray%3E-for-ByteArray" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/co [...]
 by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne-2" 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#239">source</a></span><a href="#method.ne-2" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" cl [...]
+sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-ByteArray" class="impl"><a class="src rightside" href="../../src/parquet/data_type.rs.html#234-242">source</a><a href="#impl-PartialEq-for-ByteArray" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core [...]
+by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne-1" 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#239">source</a></span><a href="#method.ne-1" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" cl [...]
 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%3CByteArray%3E-for-FixedLenByteArray" class="impl"><a class="src rightside" href="../../src/parquet/data_type.rs.html#304-308">source</a><a href="#impl-PartialOrd%3CByteArray%3E-for-FixedLenByteArray" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/ [...]
 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#1155">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><details class="toggle implementors-toggle" open><summary><section id="impl-PartialOrd%3CFixedLenByteArray%3E-for-ByteArray" class="impl"><a class="src rightside" href="../../src/parquet/data_type.rs.html#298-302">source</a><a href="#impl-PartialOrd%3CFixedLenByteArray%3E-for-ByteArray" class="anchor">§</a><h3 class="code-header">impl <a class="trait [...]
-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-1" 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#1155">source</a></span><a href="#method.gt-1" class="anchor">§</a><h4 class="code-header" [...]
-operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.ge">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialOrd-for-ByteArray" class="impl"><a class="src rightside" href="../../src/parquet/data_type.rs.html#121-137">source</a><a href="#impl-PartialOrd-for-ByteArray" class="anchor">§</a><h3 class="code-header">impl <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.ge">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialOrd%3CFixedLenByteArray%3E-for-ByteArray" class="impl"><a class="src rightside" href="../../src/parquet/data_type.rs.html#298-302">source</a><a href="#impl-PartialOrd%3CFixedLenByteArray%3E-for-ByteArray" class="anchor">§</a><h3 class="code-header">impl <a class="trait [...]
 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-2" 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#1155">source</a></span><a href="#method.gt-2" class="anchor">§</a><h4 class="code-header" [...]
+operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.ge">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialOrd-for-ByteArray" class="impl"><a class="src rightside" href="../../src/parquet/data_type.rs.html#121-137">source</a><a href="#impl-PartialOrd-for-ByteArray" class="anchor">§</a><h3 class="code-header">impl <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-1" 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#1155">source</a></span><a href="#method.gt-1" class="anchor">§</a><h4 class="code-header" [...]
 operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.ge">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-SliceAsBytes-for-ByteArray" class="impl"><a class="src rightside" href="../../src/parquet/data_type.rs.html#531">source</a><a href="#impl-SliceAsBytes-for-ByteArray" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.SliceAsBytes.html" title="trait  [...]
     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: [...]
diff --git a/parquet/data_type/struct.FixedLenByteArray.html b/parquet/data_type/struct.FixedLenByteArray.html
index ee371e800e..a61de2dcef 100644
--- a/parquet/data_type/struct.FixedLenByteArray.html
+++ b/parquet/data_type/struct.FixedLenByteArray.html
@@ -14,7 +14,7 @@ level logical types, removing the data-hazard from all decoding and encoding pat
 </div></details><details class="toggle method-toggle" open><summary><section id="method.data" class="method"><a class="src rightside" href="../../src/parquet/data_type.rs.html#161-166">source</a><h4 class="code-header">pub fn <a href="#method.data" class="fn">data</a>(&amp;self) -&gt; &amp;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>] <a href="#" class="tooltip" data-notable-ty="&amp;[u8]">ⓘ</a></h4></section></summary><div class="docblock"> [...]
 </div></details><details class="toggle method-toggle" open><summary><section id="method.set_data" class="method"><a class="src rightside" href="../../src/parquet/data_type.rs.html#170-172">source</a><h4 class="code-header">pub fn <a href="#method.set_data" class="fn">set_data</a>(&amp;mut self, data: ByteBufferPtr)</h4></section></summary><div class="docblock"><p>Set data from another byte buffer.</p>
 </div></details><details class="toggle method-toggle" open><summary><section id="method.slice" class="method"><a class="src rightside" href="../../src/parquet/data_type.rs.html#176-183">source</a><h4 class="code-header">pub fn <a href="#method.slice" class="fn">slice</a>(&amp;self, start: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>, len: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) - [...]
-</div></details><section id="method.as_utf8" class="method"><a class="src rightside" href="../../src/parquet/data_type.rs.html#185-191">source</a><h4 class="code-header">pub fn <a href="#method.as_utf8" class="fn">as_utf8</a>(&amp;self) -&gt; <a class="type" href="../errors/type.Result.html" title="type parquet::errors::Result">Result</a>&lt;&amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>&gt;</h4></section></div><h2 id="trait-implementati [...]
+</div></details><section id="method.as_utf8" class="method"><a class="src rightside" href="../../src/parquet/data_type.rs.html#185-191">source</a><h4 class="code-header">pub fn <a href="#method.as_utf8" class="fn">as_utf8</a>(&amp;self) -&gt; <a class="type" href="../errors/type.Result.html" title="type parquet::errors::Result">Result</a>&lt;&amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>&gt;</h4></section></div><h2 id="trait-implementati [...]
     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></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-ParquetValueType-for-FixedLenByteArray" class="impl"><a class="src rightside" href="../../src/parquet/data_type.rs.html#970-1054">source</a><a href="#impl-ParquetValueType-for-FixedLenByteArray" class="anchor">§</a><h3 class="code-header [...]
     values: &amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[Self]</a>,
     writer: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut W</a>,
@@ -28,16 +28,16 @@ level logical types, removing the data-hazard from all decoding and encoding pat
     decoder: &amp;mut PlainDecoderDetails
 ) -&gt; <a class="type" href="../errors/type.Result.html" title="type parquet::errors::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>&gt;</h4></section></summary><div class='docblock'>Decode the value from a given buffer for a higher level decoder</div></details><section id="method.skip" class="method trait-impl"><a class="src rightside" href="../../src/parquet/data_type.rs.html#1018-1038">source</a><a href="#method. [...]
 by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne-1" 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#239">source</a></span><a href="#method.ne-1" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" cl [...]
-sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq%3CFixedLenByteArray%3E-for-ByteArray" class="impl"><a class="src rightside" href="../../src/parquet/data_type.rs.html#280-284">source</a><a href="#impl-PartialEq%3CFixedLenByteArray%3E-for-ByteArray" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/co [...]
-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#239">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-PartialEq-for-FixedLenByteArray" class="impl"><a class="src rightside" href="../../src/parquet/data_type.rs.html#268-272">source</a><a href="#impl-PartialEq-for-FixedLenByteArray" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" t [...]
+sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq%3CFixedLenByteArray%3E-for-ByteArray" class="impl"><a class="src rightside" href="../../src/parquet/data_type.rs.html#280-284">source</a><a href="#impl-PartialEq%3CFixedLenByteArray%3E-for-ByteArray" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/co [...]
 by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne-2" 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#239">source</a></span><a href="#method.ne-2" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" cl [...]
-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%3CByteArray%3E-for-FixedLenByteArray" class="impl"><a class="src rightside" href="../../src/parquet/data_type.rs.html#304-308">source</a><a href="#impl-PartialOrd%3CByteArray%3E-for-FixedLenByteArray" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/ [...]
-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-1" 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#1155">source</a></span><a href="#method.gt-1" class="anchor">§</a><h4 class="code-header" [...]
+sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-FixedLenByteArray" class="impl"><a class="src rightside" href="../../src/parquet/data_type.rs.html#268-272">source</a><a href="#impl-PartialEq-for-FixedLenByteArray" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" t [...]
+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#239">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%3CByteArray%3E-for-FixedLenByteArray" class="impl"><a class="src rightside" href="../../src/parquet/data_type.rs.html#304-308">source</a><a href="#impl-PartialOrd%3CByteArray%3E-for-FixedLenByteArray" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/ [...]
+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#1155">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><details class="toggle implementors-toggle" open><summary><section id="impl-PartialOrd%3CFixedLenByteArray%3E-for-ByteArray" class="impl"><a class="src rightside" href="../../src/parquet/data_type.rs.html#298-302">source</a><a href="#impl-PartialOrd%3CFixedLenByteArray%3E-for-ByteArray" class="anchor">§</a><h3 class="code-header">impl <a class="trait [...]
 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-2" 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#1155">source</a></span><a href="#method.gt-2" class="anchor">§</a><h4 class="code-header" [...]
-operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.ge">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialOrd-for-FixedLenByteArray" class="impl"><a class="src rightside" href="../../src/parquet/data_type.rs.html#292-296">source</a><a href="#impl-PartialOrd-for-FixedLenByteArray" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang. [...]
-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#1155">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><details class="toggle implementors-toggle" open><summary><section id="impl-PartialOrd-for-FixedLenByteArray" class="impl"><a class="src rightside" href="../../src/parquet/data_type.rs.html#292-296">source</a><a href="#impl-PartialOrd-for-FixedLenByteArray" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang. [...]
+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-1" 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#1155">source</a></span><a href="#method.gt-1" class="anchor">§</a><h4 class="code-header" [...]
 operator. <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.ge">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-SliceAsBytes-for-FixedLenByteArray" class="impl"><a class="src rightside" href="../../src/parquet/data_type.rs.html#532">source</a><a href="#impl-SliceAsBytes-for-FixedLenByteArray" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.SliceAsBytes.htm [...]
     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: [...]
diff --git a/parquet/data_type/trait.AsBytes.html b/parquet/data_type/trait.AsBytes.html
index 77b461c23a..2d9b3f4597 100644
--- a/parquet/data_type/trait.AsBytes.html
+++ b/parquet/data_type/trait.AsBytes.html
@@ -3,4 +3,4 @@
     fn <a href="#tymethod.as_bytes" class="fn">as_bytes</a>(&amp;self) -&gt; &amp;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>] <a href="#" class="tooltip" data-notable-ty="&amp;[u8]">ⓘ</a>;
 }</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Converts an instance of data type to a slice of bytes as <code>u8</code>.</p>
 </div></details><h2 id="required-methods" class="small-section-header">Required Methods<a href="#required-methods" class="anchor">§</a></h2><div class="methods"><details class="toggle method-toggle" open><summary><section id="tymethod.as_bytes" class="method"><a class="src rightside" href="../../src/parquet/data_type.rs.html#444">source</a><h4 class="code-header">fn <a href="#tymethod.as_bytes" class="fn">as_bytes</a>(&amp;self) -&gt; &amp;[<a class="primitive" href="https://doc.rust-lan [...]
-</div></details></div><h2 id="foreign-impls" class="small-section-header">Implementations on Foreign Types<a href="#foreign-impls" class="anchor">§</a></h2><details class="toggle implementors-toggle"><summary><section id="impl-AsBytes-for-f64" class="impl"><a class="src rightside" href="../../src/parquet/data_type.rs.html#512">source</a><a href="#impl-AsBytes-for-f64" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.AsBytes.html" title="trait parquet::data_ty [...]
\ No newline at end of file
+</div></details></div><h2 id="foreign-impls" class="small-section-header">Implementations on Foreign Types<a href="#foreign-impls" class="anchor">§</a></h2><details class="toggle implementors-toggle"><summary><section id="impl-AsBytes-for-u8" class="impl"><a class="src rightside" href="../../src/parquet/data_type.rs.html#507">source</a><a href="#impl-AsBytes-for-u8" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.AsBytes.html" title="trait parquet::data_type [...]
\ No newline at end of file
diff --git a/parquet/data_type/trait.SliceAsBytes.html b/parquet/data_type/trait.SliceAsBytes.html
index 558e68b543..8618f7624e 100644
--- a/parquet/data_type/trait.SliceAsBytes.html
+++ b/parquet/data_type/trait.SliceAsBytes.html
@@ -8,4 +8,4 @@
 <h5 id="safety"><a href="#safety">Safety</a></h5>
 <p>If modified you are <em>required</em> to ensure the internal representation
 is valid and correct for the actual raw data</p>
-</div></details></div><h2 id="foreign-impls" class="small-section-header">Implementations on Foreign Types<a href="#foreign-impls" class="anchor">§</a></h2><details class="toggle implementors-toggle"><summary><section id="impl-SliceAsBytes-for-i32" class="impl"><a class="src rightside" href="../../src/parquet/data_type.rs.html#505">source</a><a href="#impl-SliceAsBytes-for-i32" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.SliceAsBytes.html" title="trait p [...]
\ No newline at end of file
+</div></details></div><h2 id="foreign-impls" class="small-section-header">Implementations on Foreign Types<a href="#foreign-impls" class="anchor">§</a></h2><details class="toggle implementors-toggle"><summary><section id="impl-SliceAsBytes-for-f64" class="impl"><a class="src rightside" href="../../src/parquet/data_type.rs.html#512">source</a><a href="#impl-SliceAsBytes-for-f64" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.SliceAsBytes.html" title="trait p [...]
\ No newline at end of file
diff --git a/parquet/errors/enum.ParquetError.html b/parquet/errors/enum.ParquetError.html
index a0eec5e06c..8a852912ae 100644
--- a/parquet/errors/enum.ParquetError.html
+++ b/parquet/errors/enum.ParquetError.html
@@ -16,7 +16,7 @@ decode.</p>
 </div><section id="variant.ArrowError" class="variant"><a href="#variant.ArrowError" class="anchor">§</a><h3 class="code-header">ArrowError(<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>)</h3></section><div class="docblock"><p>Arrow error.
 Returned when reading into arrow or writing from arrow.</p>
 </div><section id="variant.IndexOutOfBound" class="variant"><a href="#variant.IndexOutOfBound" class="anchor">§</a><h3 class="code-header">IndexOutOfBound(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>, <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h3></section><section id="variant.External" class="variant"><a href="#variant.External" class="anchor">§</a><h3 class="code-header">External [...]
-</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-ParquetError" class="impl"><a class="src rightside" href="../../src/parquet/errors.rs.html#29">source</a><a href="#impl-Debug-for-ParquetError" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="ht [...]
+</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-ParquetError" class="impl"><a class="src rightside" href="../../src/parquet/errors.rs.html#29">source</a><a href="#impl-Debug-for-ParquetError" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="ht [...]
     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/error/trait.Error.html" title="trait core::error::Error">Error</a> + 'static,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.as_error_source" class="method trait-impl"><a href="#method.as_error_source" class="anchor">§</a><h4 class="code-header">fn <a class="fn">as_error_source</a>(&amp;self) -&gt; &amp;(dyn <a class="trait" href="https://do [...]
 to benefit from Rust’s automatic dereferencing of method
diff --git a/parquet/file/reader/trait.Length.html b/parquet/file/reader/trait.Length.html
index ff5b44e5b8..a1e5453240 100644
--- a/parquet/file/reader/trait.Length.html
+++ b/parquet/file/reader/trait.Length.html
@@ -4,4 +4,4 @@
 }</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Length should return the total number of bytes in the input source.
 It’s mainly used to read the metadata, which is at the end of the source.</p>
 </div></details><h2 id="required-methods" class="small-section-header">Required Methods<a href="#required-methods" class="anchor">§</a></h2><div class="methods"><details class="toggle method-toggle" open><summary><section id="tymethod.len" class="method"><a class="src rightside" href="../../../src/parquet/file/reader.rs.html#45">source</a><h4 class="code-header">fn <a href="#tymethod.len" class="fn">len</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std [...]
-</div></details></div><h2 id="foreign-impls" class="small-section-header">Implementations on Foreign Types<a href="#foreign-impls" class="anchor">§</a></h2><details class="toggle implementors-toggle"><summary><section id="impl-Length-for-File" class="impl"><a class="src rightside" href="../../../src/parquet/file/reader.rs.html#70-74">source</a><a href="#impl-Length-for-File" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.Length.html" title="trait parquet::f [...]
\ No newline at end of file
+</div></details></div><h2 id="foreign-impls" class="small-section-header">Implementations on Foreign Types<a href="#foreign-impls" class="anchor">§</a></h2><details class="toggle implementors-toggle"><summary><section id="impl-Length-for-Bytes" class="impl"><a class="src rightside" href="../../../src/parquet/file/reader.rs.html#102-106">source</a><a href="#impl-Length-for-Bytes" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.Length.html" title="trait parque [...]
\ No newline at end of file
diff --git a/parquet/file/serialized_reader/struct.SerializedFileReader.html b/parquet/file/serialized_reader/struct.SerializedFileReader.html
index 68cf753960..c3c262c28f 100644
--- a/parquet/file/serialized_reader/struct.SerializedFileReader.html
+++ b/parquet/file/serialized_reader/struct.SerializedFileReader.html
@@ -9,7 +9,7 @@ Returns error if Parquet file does not exist or is corrupt.</p>
 Returns error if Parquet file does not exist or is corrupt.</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-FileReader-for-SerializedFileReader%3CR%3E" class="impl"><a class="src rightside" href="../../../src/parquet/file/serialized_reader.rs.html#257-282">source</a><a href="#impl-FileReader-for-SerializedFil [...]
 using the full file schema over all row groups.</p>
-</div><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Item" class="associatedtype trait-impl"><a href="#associatedtype.Item" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.Item" class="associatedtype">Item</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a [...]
+</div><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Item" class="associatedtype trait-impl"><a href="#associatedtype.Item" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.Item" class="associatedtype">Item</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a [...]
     R: <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>,</span></h3></section><section id="impl-Send-for-SerializedFileReader%3CR%3E" class="impl"><a href="#impl-Send-for-SerializedFileReader%3CR%3E" class="anchor">§</a><h3 class="code-header">impl&lt;R&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core:: [...]
     R: <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>,</span></h3></section></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"> [...]
     T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</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 [...]
diff --git a/parquet/file/statistics/enum.Statistics.html b/parquet/file/statistics/enum.Statistics.html
index c3f62feeed..ad8ed64009 100644
--- a/parquet/file/statistics/enum.Statistics.html
+++ b/parquet/file/statistics/enum.Statistics.html
@@ -87,7 +87,7 @@ Panics if min value is not set.</p>
 </div></details><details class="toggle method-toggle" open><summary><section id="method.max_bytes" class="method"><a class="src rightside" href="../../../src/parquet/file/statistics.rs.html#383-385">source</a><h4 class="code-header">pub fn <a href="#method.max_bytes" class="fn">max_bytes</a>(&amp;self) -&gt; &amp;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>] <a href="#" class="tooltip" data-notable-ty="&amp;[u8]">ⓘ</a></h4></section></summar [...]
 Panics if max value is not set.</p>
 </div></details><details class="toggle method-toggle" open><summary><section id="method.physical_type" class="method"><a class="src rightside" href="../../../src/parquet/file/statistics.rs.html#388-399">source</a><h4 class="code-header">pub fn <a href="#method.physical_type" class="fn">physical_type</a>(&amp;self) -&gt; <a class="enum" href="../../basic/enum.Type.html" title="enum parquet::basic::Type">Type</a></h4></section></summary><div class="docblock"><p>Returns physical type associ [...]
-</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-Statistics" class="impl"><a class="src rightside" href="../../../src/parquet/file/statistics.rs.html#273">source</a><a href="#impl-Clone-for-Statistics" class="anchor">§</a><h3 class="code-hea [...]
+</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-Statistics" class="impl"><a class="src rightside" href="../../../src/parquet/file/statistics.rs.html#273">source</a><a href="#impl-Clone-for-Statistics" class="anchor">§</a><h3 class="code-hea [...]
 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#239">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-StructuralPartialEq-for-Statistics" class="impl"><a class="src rightside" href="../../../src/parquet/file/statistics.rs.html#273">source</a><a href="#impl-StructuralPartialEq-for-Statistics" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::Structur [...]
     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 [...]
diff --git a/parquet/file/statistics/private/trait.MakeStatistics.html b/parquet/file/statistics/private/trait.MakeStatistics.html
index 9d175d972a..7022daa5d2 100644
--- a/parquet/file/statistics/private/trait.MakeStatistics.html
+++ b/parquet/file/statistics/private/trait.MakeStatistics.html
@@ -3,9 +3,9 @@
     fn <a href="#tymethod.make_statistics" class="fn">make_statistics</a>(statistics: <a class="struct" href="../struct.ValueStatistics.html" title="struct parquet::file::statistics::ValueStatistics">ValueStatistics</a>&lt;Self&gt;) -&gt; <a class="enum" href="../enum.Statistics.html" title="enum parquet::file::statistics::Statistics">Statistics</a>
        <span class="where">where Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a></span>;
 }</code></pre><h2 id="required-methods" class="small-section-header">Required Methods<a href="#required-methods" class="anchor">§</a></h2><div class="methods"><section id="tymethod.make_statistics" class="method"><a class="src rightside" href="../../../../src/parquet/file/statistics.rs.html#54-56">source</a><h4 class="code-header">fn <a href="#tymethod.make_statistics" class="fn">make_statistics</a>(statistics: <a class="struct" href="../struct.ValueStatistics.html" title="struct parquet [...]
-    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></div><h2 id="foreign-impls" class="small-section-header">Implementations on Foreign Types<a href="#foreign-impls" class="anchor">§</a></h2><details class="toggle implementors-toggle"><summary><section id="impl-MakeStatistics-for-i32" class="impl"><a class="src rightside" href="../../../../src/parquet/file/statistics.rs.html#73 [...]
+    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></div><h2 id="foreign-impls" class="small-section-header">Implementations on Foreign Types<a href="#foreign-impls" class="anchor">§</a></h2><details class="toggle implementors-toggle"><summary><section id="impl-MakeStatistics-for-bool" class="impl"><a class="src rightside" href="../../../../src/parquet/file/statistics.rs.html#7 [...]
     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></div></details><details class="toggle implementors-toggle"><summary><section id="impl-MakeStatistics-for-f64" class="impl"><a class="src rightside" href="../../../../src/parquet/file/statistics.rs.html#77">source</a><a href="#impl-MakeStatistics-for-f64" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="t [...]
-    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></div></details><details class="toggle implementors-toggle"><summary><section id="impl-MakeStatistics-for-bool" class="impl"><a class="src rightside" href="../../../../src/parquet/file/statistics.rs.html#72">source</a><a href="#impl-MakeStatistics-for-bool" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href= [...]
-    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></div></details><details class="toggle implementors-toggle"><summary><section id="impl-MakeStatistics-for-f32" class="impl"><a class="src rightside" href="../../../../src/parquet/file/statistics.rs.html#76">source</a><a href="#impl-MakeStatistics-for-f32" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="t [...]
-    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></div></details><details class="toggle implementors-toggle"><summary><section id="impl-MakeStatistics-for-i64" class="impl"><a class="src rightside" href="../../../../src/parquet/file/statistics.rs.html#74">source</a><a href="#impl-MakeStatistics-for-i64" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="t [...]
+    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></div></details><details class="toggle implementors-toggle"><summary><section id="impl-MakeStatistics-for-i32" class="impl"><a class="src rightside" href="../../../../src/parquet/file/statistics.rs.html#73">source</a><a href="#impl-MakeStatistics-for-i32" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="t [...]
+    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></div></details><details class="toggle implementors-toggle"><summary><section id="impl-MakeStatistics-for-i64" class="impl"><a class="src rightside" href="../../../../src/parquet/file/statistics.rs.html#74">source</a><a href="#impl-MakeStatistics-for-i64" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="t [...]
+    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></div></details><details class="toggle implementors-toggle"><summary><section id="impl-MakeStatistics-for-f32" class="impl"><a class="src rightside" href="../../../../src/parquet/file/statistics.rs.html#76">source</a><a href="#impl-MakeStatistics-for-f32" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="t [...]
     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></div></details><h2 id="implementors" class="small-section-header">Implementors<a href="#implementors" class="anchor">§</a></h2><div id="implementors-list"><section id="impl-MakeStatistics-for-ByteArray" class="impl"><a class="src rightside" href="../../../../src/parquet/file/statistics.rs.html#78">source</a><a href="#impl-Make [...]
\ No newline at end of file
diff --git a/parquet/file/statistics/struct.ValueStatistics.html b/parquet/file/statistics/struct.ValueStatistics.html
index 96f1a627e7..ca4fcbc762 100644
--- a/parquet/file/statistics/struct.ValueStatistics.html
+++ b/parquet/file/statistics/struct.ValueStatistics.html
@@ -49,7 +49,7 @@ which have a type-defined sort order.</p>
 <p>However, not all readers have been updated. For backwards compatibility, this method
 returns <code>true</code> if the statistics within this have a signed sort order, that is
 compatible with being stored in the deprecated <code>min</code> and <code>max</code> fields</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-ValueStatistics%3CT%3E" class="impl"><a class="src rightside" href="../../../src/parquet/file/statistics.rs.html#421">source</a><a href="#impl-Clone-for-ValueStatistics%3CT%3E" class="anchor"> [...]
+</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-ValueStatistics%3CT%3E" class="impl"><a class="src rightside" href="../../../src/parquet/file/statistics.rs.html#421">source</a><a href="#impl-Clone-for-ValueStatistics%3CT%3E" class="anchor"> [...]
 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#239">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-ValueStatistics%3CT%3E" class="impl"><a class="src rightside" href="../../../src/parquet/file/statistics.rs.html#421">source</a><a href="#impl-Eq-for-ValueStatistics%3CT%3E" class="anchor">§</a><h3 class="code-header">impl&lt;T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a>&gt; <a class="trait" hre [...]
     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>,</span></h3></section><section id="impl-Send-for-ValueStatistics%3CT%3E" class="impl"><a href="#impl-Send-for-ValueStatistics%3CT%3E" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Se [...]
diff --git a/parquet/format/enum.LogicalType.html b/parquet/format/enum.LogicalType.html
index 1b503ff0af..d2873376ca 100644
--- a/parquet/format/enum.LogicalType.html
+++ b/parquet/format/enum.LogicalType.html
@@ -12,7 +12,7 @@
     JSON(<a class="struct" href="struct.JsonType.html" title="struct parquet::format::JsonType">JsonType</a>),
     BSON(<a class="struct" href="struct.BsonType.html" title="struct parquet::format::BsonType">BsonType</a>),
     UUID(<a class="struct" href="struct.UUIDType.html" title="struct parquet::format::UUIDType">UUIDType</a>),
-</details>}</code></pre><h2 id="variants" class="variants small-section-header">Variants<a href="#variants" class="anchor">§</a></h2><div class="variants"><section id="variant.STRING" class="variant"><a href="#variant.STRING" class="anchor">§</a><h3 class="code-header">STRING(<a class="struct" href="struct.StringType.html" title="struct parquet::format::StringType">StringType</a>)</h3></section><section id="variant.MAP" class="variant"><a href="#variant.MAP" class="anchor">§</a><h3 class [...]
+</details>}</code></pre><h2 id="variants" class="variants small-section-header">Variants<a href="#variants" class="anchor">§</a></h2><div class="variants"><section id="variant.STRING" class="variant"><a href="#variant.STRING" class="anchor">§</a><h3 class="code-header">STRING(<a class="struct" href="struct.StringType.html" title="struct parquet::format::StringType">StringType</a>)</h3></section><section id="variant.MAP" class="variant"><a href="#variant.MAP" class="anchor">§</a><h3 class [...]
     H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="trait core::hash::Hasher">Hasher</a>,
     Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</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 [...]
diff --git a/parquet/format/struct.BoundaryOrder.html b/parquet/format/struct.BoundaryOrder.html
index 934cf5d609..6fa9410ad4 100644
--- a/parquet/format/struct.BoundaryOrder.html
+++ b/parquet/format/struct.BoundaryOrder.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="Enum to annotate whether lists of min/max elements inside ColumnIndex are ordered and if so, in which direction."><title>BoundaryOrder in parquet::format - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac52 [...]
 are ordered and if so, in which direction.</p>
-</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="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.i32.html">i32</a></code></span><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="impleme [...]
+</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="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.i32.html">i32</a></code></span><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="impleme [...]
     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'>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 [...]
diff --git a/parquet/format/struct.CompressionCodec.html b/parquet/format/struct.CompressionCodec.html
index 86dcba01c2..5818abeee5 100644
--- a/parquet/format/struct.CompressionCodec.html
+++ b/parquet/format/struct.CompressionCodec.html
@@ -3,7 +3,7 @@
 Codec support may vary between readers based on the format version and
 libraries available at runtime.</p>
 <p>See Compression.md for a detailed specification of these algorithms.</p>
-</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="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.i32.html">i32</a></code></span><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="impleme [...]
+</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="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.i32.html">i32</a></code></span><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="impleme [...]
     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'>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 [...]
diff --git a/parquet/format/struct.ConvertedType.html b/parquet/format/struct.ConvertedType.html
index 3f29cf2136..aa0fdac9a1 100644
--- a/parquet/format/struct.ConvertedType.html
+++ b/parquet/format/struct.ConvertedType.html
@@ -54,7 +54,7 @@ the second identifies the number of days associated with the duration
 and the third identifies the number of milliseconds associated with
 the provided duration.  This duration of time is independent of any
 particular timezone or date.</p>
-</div></details><section id="associatedconstant.ENUM_VALUES" class="associatedconstant"><a class="src rightside" href="../../src/parquet/format.rs.html#199-222">source</a><h4 class="code-header">pub const <a href="#associatedconstant.ENUM_VALUES" class="constant">ENUM_VALUES</a>: &amp;'static <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[Self]</a> = _</h4></section></div></details></div><h2 id="trait-implementations" class="small-section-header"> [...]
+</div></details><section id="associatedconstant.ENUM_VALUES" class="associatedconstant"><a class="src rightside" href="../../src/parquet/format.rs.html#199-222">source</a><h4 class="code-header">pub const <a href="#associatedconstant.ENUM_VALUES" class="constant">ENUM_VALUES</a>: &amp;'static <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[Self]</a> = _</h4></section></div></details></div><h2 id="trait-implementations" class="small-section-header"> [...]
     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'>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 [...]
diff --git a/parquet/format/struct.Encoding.html b/parquet/format/struct.Encoding.html
index e44574e684..66bf42f47d 100644
--- a/parquet/format/struct.Encoding.html
+++ b/parquet/format/struct.Encoding.html
@@ -30,7 +30,7 @@ The individual bytes of an FP value are scattered to the corresponding stream an
 the streams are concatenated.
 This itself does not reduce the size of the data but can lead to better compression
 afterwards.</p>
-</div></details><section id="associatedconstant.ENUM_VALUES" class="associatedconstant"><a class="src rightside" href="../../src/parquet/format.rs.html#387-397">source</a><h4 class="code-header">pub const <a href="#associatedconstant.ENUM_VALUES" class="constant">ENUM_VALUES</a>: &amp;'static <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[Self]</a> = _</h4></section></div></details></div><h2 id="trait-implementations" class="small-section-header"> [...]
+</div></details><section id="associatedconstant.ENUM_VALUES" class="associatedconstant"><a class="src rightside" href="../../src/parquet/format.rs.html#387-397">source</a><h4 class="code-header">pub const <a href="#associatedconstant.ENUM_VALUES" class="constant">ENUM_VALUES</a>: &amp;'static <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[Self]</a> = _</h4></section></div></details></div><h2 id="trait-implementations" class="small-section-header"> [...]
     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'>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 [...]
diff --git a/parquet/format/struct.FieldRepetitionType.html b/parquet/format/struct.FieldRepetitionType.html
index 2a234514d6..c77ffc631c 100644
--- a/parquet/format/struct.FieldRepetitionType.html
+++ b/parquet/format/struct.FieldRepetitionType.html
@@ -2,7 +2,7 @@
 </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="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.i32.html">i32</a></code></span><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="impleme [...]
 </div></details><details class="toggle" open><summary><section id="associatedconstant.OPTIONAL" class="associatedconstant"><a class="src rightside" href="../../src/parquet/format.rs.html#292">source</a><h4 class="code-header">pub const <a href="#associatedconstant.OPTIONAL" class="constant">OPTIONAL</a>: <a class="struct" href="struct.FieldRepetitionType.html" title="struct parquet::format::FieldRepetitionType">FieldRepetitionType</a> = _</h4></section></summary><div class="docblock"><p> [...]
 </div></details><details class="toggle" open><summary><section id="associatedconstant.REPEATED" class="associatedconstant"><a class="src rightside" href="../../src/parquet/format.rs.html#294">source</a><h4 class="code-header">pub const <a href="#associatedconstant.REPEATED" class="constant">REPEATED</a>: <a class="struct" href="struct.FieldRepetitionType.html" title="struct parquet::format::FieldRepetitionType">FieldRepetitionType</a> = _</h4></section></summary><div class="docblock"><p> [...]
-</div></details><section id="associatedconstant.ENUM_VALUES" class="associatedconstant"><a class="src rightside" href="../../src/parquet/format.rs.html#295-299">source</a><h4 class="code-header">pub const <a href="#associatedconstant.ENUM_VALUES" class="constant">ENUM_VALUES</a>: &amp;'static <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[Self]</a> = _</h4></section></div></details></div><h2 id="trait-implementations" class="small-section-header"> [...]
+</div></details><section id="associatedconstant.ENUM_VALUES" class="associatedconstant"><a class="src rightside" href="../../src/parquet/format.rs.html#295-299">source</a><h4 class="code-header">pub const <a href="#associatedconstant.ENUM_VALUES" class="constant">ENUM_VALUES</a>: &amp;'static <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[Self]</a> = _</h4></section></div></details></div><h2 id="trait-implementations" class="small-section-header"> [...]
     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'>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 [...]
diff --git a/parquet/format/struct.PageType.html b/parquet/format/struct.PageType.html
index e452cc66af..e35358b52e 100644
--- a/parquet/format/struct.PageType.html
+++ b/parquet/format/struct.PageType.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 `PageType` struct in crate `parquet`."><title>PageType in parquet::format - 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= [...]
+<!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 `PageType` struct in crate `parquet`."><title>PageType in parquet::format - 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= [...]
     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'>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 [...]
diff --git a/parquet/format/struct.Type.html b/parquet/format/struct.Type.html
index 4058524173..ffc5a3967a 100644
--- a/parquet/format/struct.Type.html
+++ b/parquet/format/struct.Type.html
@@ -2,7 +2,7 @@
 with the encodings to control the on disk storage format.
 For example INT16 is not included as a type since a good encoding of INT32
 would handle this.</p>
-</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="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.i32.html">i32</a></code></span><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="impleme [...]
+</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="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.i32.html">i32</a></code></span><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="impleme [...]
     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'>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 [...]
diff --git a/parquet/record/api/enum.Field.html b/parquet/record/api/enum.Field.html
index afcc8d951a..569a4487aa 100644
--- a/parquet/record/api/enum.Field.html
+++ b/parquet/record/api/enum.Field.html
@@ -53,7 +53,7 @@ Unix epoch, 1 January 1970.</p>
     value: <a class="struct" href="../../data_type/struct.ByteArray.html" title="struct parquet::data_type::ByteArray">ByteArray</a>
 ) -&gt; <a class="type" href="../../errors/type.Result.html" title="type parquet::errors::Result">Result</a>&lt;Self&gt;</h4></section></summary><div class="docblock"><p>Converts Parquet BYTE_ARRAY type with converted type into either UTF8 string or
 array of bytes.</p>
-</div></details><section id="method.to_json_value" class="method"><a class="src rightside" href="../../../src/parquet/record/api.rs.html#678-723">source</a><h4 class="code-header">pub fn <a href="#method.to_json_value" class="fn">to_json_value</a>(&amp;self) -&gt; <a class="enum" href="https://docs.rs/serde_json/1.0.107/serde_json/value/enum.Value.html" title="enum serde_json::value::Value">Value</a></h4></section></div></details></div><h2 id="trait-implementations" class="small-section- [...]
+</div></details><section id="method.to_json_value" class="method"><a class="src rightside" href="../../../src/parquet/record/api.rs.html#678-723">source</a><h4 class="code-header">pub fn <a href="#method.to_json_value" class="fn">to_json_value</a>(&amp;self) -&gt; <a class="enum" href="https://docs.rs/serde_json/1.0.107/serde_json/value/enum.Value.html" title="enum serde_json::value::Value">Value</a></h4></section></div></details></div><h2 id="trait-implementations" class="small-section- [...]
 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#239">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-StructuralPartialEq-for-Field" class="impl"><a class="src rightside" href="../../../src/parquet/record/api.rs.html#490">source</a><a href="#impl-StructuralPartialEq-for-Field" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">St [...]
     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 [...]
diff --git a/parquet/record/api/struct.Row.html b/parquet/record/api/struct.Row.html
index cc83688a65..46a12d3038 100644
--- a/parquet/record/api/struct.Row.html
+++ b/parquet/record/api/struct.Row.html
@@ -14,9 +14,9 @@
 <span class="kw">for </span>(idx, (name, field)) <span class="kw">in </span>row.get_column_iter().enumerate() {
     <span class="macro">println!</span>(<span class="string">&quot;column index: {}, column name: {}, column value: {}&quot;</span>, idx, name, field);
 }</code></pre></div>
-</div></details><section id="method.to_json_value" class="method"><a class="src rightside" href="../../../src/parquet/record/api.rs.html#83-90">source</a><h4 class="code-header">pub fn <a href="#method.to_json_value" class="fn">to_json_value</a>(&amp;self) -&gt; <a class="enum" href="https://docs.rs/serde_json/1.0.107/serde_json/value/enum.Value.html" title="enum serde_json::value::Value">Value</a></h4></section></div></details></div><h2 id="trait-implementations" class="small-section-he [...]
+</div></details><section id="method.to_json_value" class="method"><a class="src rightside" href="../../../src/parquet/record/api.rs.html#83-90">source</a><h4 class="code-header">pub fn <a href="#method.to_json_value" class="fn">to_json_value</a>(&amp;self) -&gt; <a class="enum" href="https://docs.rs/serde_json/1.0.107/serde_json/value/enum.Value.html" title="enum serde_json::value::Value">Value</a></h4></section></div></details></div><h2 id="trait-implementations" class="small-section-he [...]
 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#239">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-RowAccessor-for-Row" class="impl"><a class="src rightside" href="../../../src/parquet/record/api.rs.html#199-237">source</a><a href="#impl-RowAccessor-for-Row" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.RowAccessor.html" title="trait parquet::record::api::RowAccessor">RowAccessor</a [...]
+sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-RowAccessor-for-Row" class="impl"><a class="src rightside" href="../../../src/parquet/record/api.rs.html#199-237">source</a><a href="#impl-RowAccessor-for-Row" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.RowAccessor.html" title="trait parquet::record::api::RowAccessor">RowAccessor</a [...]
 </div></details></div></details><section id="impl-StructuralPartialEq-for-Row" class="impl"><a class="src rightside" href="../../../src/parquet/record/api.rs.html#46">source</a><a href="#impl-StructuralPartialEq-for-Row" class="anchor">§</a><h3 class="code-header">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="struct.Row.html" titl [...]
     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: [...]
diff --git a/parquet/record/enum.Field.html b/parquet/record/enum.Field.html
index 16ac2b92c1..b5b576262e 100644
--- a/parquet/record/enum.Field.html
+++ b/parquet/record/enum.Field.html
@@ -53,7 +53,7 @@ Unix epoch, 1 January 1970.</p>
     value: <a class="struct" href="../data_type/struct.ByteArray.html" title="struct parquet::data_type::ByteArray">ByteArray</a>
 ) -&gt; <a class="type" href="../errors/type.Result.html" title="type parquet::errors::Result">Result</a>&lt;Self&gt;</h4></section></summary><div class="docblock"><p>Converts Parquet BYTE_ARRAY type with converted type into either UTF8 string or
 array of bytes.</p>
-</div></details><section id="method.to_json_value" class="method"><a class="src rightside" href="../../src/parquet/record/api.rs.html#678-723">source</a><h4 class="code-header">pub fn <a href="#method.to_json_value" class="fn">to_json_value</a>(&amp;self) -&gt; <a class="enum" href="https://docs.rs/serde_json/1.0.107/serde_json/value/enum.Value.html" title="enum serde_json::value::Value">Value</a></h4></section></div></details></div><h2 id="trait-implementations" class="small-section-hea [...]
+</div></details><section id="method.to_json_value" class="method"><a class="src rightside" href="../../src/parquet/record/api.rs.html#678-723">source</a><h4 class="code-header">pub fn <a href="#method.to_json_value" class="fn">to_json_value</a>(&amp;self) -&gt; <a class="enum" href="https://docs.rs/serde_json/1.0.107/serde_json/value/enum.Value.html" title="enum serde_json::value::Value">Value</a></h4></section></div></details></div><h2 id="trait-implementations" class="small-section-hea [...]
 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#239">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-StructuralPartialEq-for-Field" class="impl"><a class="src rightside" href="../../src/parquet/record/api.rs.html#490">source</a><a href="#impl-StructuralPartialEq-for-Field" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">Struc [...]
     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 [...]
diff --git a/parquet/record/index.html b/parquet/record/index.html
index 7e2539ec58..eb881ad429 100644
--- a/parquet/record/index.html
+++ b/parquet/record/index.html
@@ -1,4 +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="Contains record-based API for reading Parquet files."><title>parquet::record - 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 hre [...]
+<!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="Contains record-based API for reading Parquet files."><title>parquet::record - 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 hre [...]
 </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="api/index.html" title="mod parquet::record::api">api</a><span title="Restricted Visibility">&nbsp;🔒</span> </div><div class="desc docblock-short">Contains Row enum that is used to represent record in Rust.</div></li><li><div class="item-name"><a class="mod" href="reader/index.html" title="mod parquet::record::reader">reade [...]
-<a href="api/struct.Row.html" title="struct parquet::record::api::Row"><code>Row</code></a>s.</div></li><li><div class="item-name"><a class="mod" href="record_writer/index.html" title="mod parquet::record::record_writer">record_writer</a><span title="Restricted Visibility">&nbsp;🔒</span> </div></li><li><div class="item-name"><a class="mod" href="triplet/index.html" title="mod parquet::record::triplet">triplet</a><span title="Restricted Visibility">&nbsp;🔒</span> </div></li></ul><h2 id="s [...]
-Note that the get_XXX methods do not do bound checking.</div></li><li><div class="item-name"><a class="trait" href="trait.MapAccessor.html" title="trait parquet::record::MapAccessor">MapAccessor</a></div><div class="desc docblock-short">Trait for type-safe access of an index for a <code>Map</code></div></li><li><div class="item-name"><a class="trait" href="trait.RecordWriter.html" title="trait parquet::record::RecordWriter">RecordWriter</a></div></li><li><div class="item-name"><a class=" [...]
\ No newline at end of file
+<a href="api/struct.Row.html" title="struct parquet::record::api::Row"><code>Row</code></a>s.</div></li><li><div class="item-name"><a class="mod" href="record_reader/index.html" title="mod parquet::record::record_reader">record_reader</a><span title="Restricted Visibility">&nbsp;🔒</span> </div></li><li><div class="item-name"><a class="mod" href="record_writer/index.html" title="mod parquet::record::record_writer">record_writer</a><span title="Restricted Visibility">&nbsp;🔒</span> </div>< [...]
+Note that the get_XXX methods do not do bound checking.</div></li><li><div class="item-name"><a class="trait" href="trait.MapAccessor.html" title="trait parquet::record::MapAccessor">MapAccessor</a></div><div class="desc docblock-short">Trait for type-safe access of an index for a <code>Map</code></div></li><li><div class="item-name"><a class="trait" href="trait.RecordReader.html" title="trait parquet::record::RecordReader">RecordReader</a></div><div class="desc docblock-short">read up t [...]
+The type parameter <code>T</code> is used to work around the rust orphan rule
+when implementing on types such as <code>Vec&lt;T&gt;</code>.</div></li><li><div class="item-name"><a class="trait" href="trait.RecordWriter.html" title="trait parquet::record::RecordWriter">RecordWriter</a></div><div class="desc docblock-short"><code>write_to_row_group</code> writes from <code>self</code> into <code>row_group_writer</code>
+<code>schema</code> builds the schema used by <code>row_group_writer</code>
+The type parameter <code>T</code> is used to work around the rust orphan rule
+when implementing on types such as <code>&amp;[T]</code>.</div></li><li><div class="item-name"><a class="trait" href="trait.RowAccessor.html" title="trait parquet::record::RowAccessor">RowAccessor</a></div><div class="desc docblock-short">Trait for type-safe convenient access to fields within a Row.</div></li><li><div class="item-name"><a class="trait" href="trait.RowFormatter.html" title="trait parquet::record::RowFormatter">RowFormatter</a></div><div class="desc docblock-short">Trait f [...]
\ No newline at end of file
diff --git a/parquet/record/record_writer/index.html b/parquet/record/record_reader/index.html
similarity index 81%
copy from parquet/record/record_writer/index.html
copy to parquet/record/record_reader/index.html
index a7b1c0245f..eb78bac1be 100644
--- a/parquet/record/record_writer/index.html
+++ b/parquet/record/record_reader/index.html
@@ -1 +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 `record_writer` mod in crate `parquet`."><title>parquet::record::record_writer - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="fon [...]
\ 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 `record_reader` mod in crate `parquet`."><title>parquet::record::record_reader - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="fon [...]
+The type parameter <code>T</code> is used to work around the rust orphan rule
+when implementing on types such as <code>Vec&lt;T&gt;</code>.</div></li></ul></section></div></main></body></html>
\ No newline at end of file
diff --git a/parquet/record/record_reader/sidebar-items.js b/parquet/record/record_reader/sidebar-items.js
new file mode 100644
index 0000000000..b21ab1066e
--- /dev/null
+++ b/parquet/record/record_reader/sidebar-items.js
@@ -0,0 +1 @@
+window.SIDEBAR_ITEMS = {"trait":["RecordReader"]};
\ No newline at end of file
diff --git a/parquet/record/record_reader/trait.RecordReader.html b/parquet/record/record_reader/trait.RecordReader.html
new file mode 100644
index 0000000000..81bf8780b2
--- /dev/null
+++ b/parquet/record/record_reader/trait.RecordReader.html
@@ -0,0 +1,15 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="read up to `max_records` records from `row_group_reader` into `self` The type parameter `T` is used to work around the rust orphan rule when implementing on types such as `Vec&lt;T&gt;`."><title>RecordReader in parquet::record::record_reader - Rust</title><link rel="preload" as="font" ty [...]
+    // Required method
+    fn <a href="#tymethod.read_from_row_group" class="fn">read_from_row_group</a>(
+        &amp;mut self,
+        row_group_reader: &amp;mut dyn <a class="trait" href="../../file/reader/trait.RowGroupReader.html" title="trait parquet::file::reader::RowGroupReader">RowGroupReader</a>,
+        num_records: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</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="enum" href="../../errors/enum.ParquetError.html" title="enum parquet::errors::ParquetError">ParquetError</a>&gt;;
+}</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>read up to <code>max_records</code> records from <code>row_group_reader</code> into <code>self</code>
+The type parameter <code>T</code> is used to work around the rust orphan rule
+when implementing on types such as <code>Vec&lt;T&gt;</code>.</p>
+</div></details><h2 id="required-methods" class="small-section-header">Required Methods<a href="#required-methods" class="anchor">§</a></h2><div class="methods"><section id="tymethod.read_from_row_group" class="method"><a class="src rightside" href="../../../src/parquet/record/record_reader.rs.html#25-29">source</a><h4 class="code-header">fn <a href="#tymethod.read_from_row_group" class="fn">read_from_row_group</a>(
+    &amp;mut self,
+    row_group_reader: &amp;mut dyn <a class="trait" href="../../file/reader/trait.RowGroupReader.html" title="trait parquet::file::reader::RowGroupReader">RowGroupReader</a>,
+    num_records: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</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="enum" href="../../errors/enum.ParquetError.html" title="enum parquet::errors::ParquetError">ParquetError</a>&gt;</h4></section></div><h2 id="implementors" class="small-section-header">Implementors<a href="#implementors" class="anchor">§</a></h2>< [...]
\ No newline at end of file
diff --git a/parquet/record/record_writer/index.html b/parquet/record/record_writer/index.html
index a7b1c0245f..80fd7e3eee 100644
--- a/parquet/record/record_writer/index.html
+++ b/parquet/record/record_writer/index.html
@@ -1 +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 `record_writer` mod in crate `parquet`."><title>parquet::record::record_writer - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="fon [...]
\ 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 `record_writer` mod in crate `parquet`."><title>parquet::record::record_writer - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="fon [...]
+<code>schema</code> builds the schema used by <code>row_group_writer</code>
+The type parameter <code>T</code> is used to work around the rust orphan rule
+when implementing on types such as <code>&amp;[T]</code>.</div></li></ul></section></div></main></body></html>
\ No newline at end of file
diff --git a/parquet/record/record_writer/trait.RecordWriter.html b/parquet/record/record_writer/trait.RecordWriter.html
index 6695f0635f..d3c07a9fd1 100644
--- a/parquet/record/record_writer/trait.RecordWriter.html
+++ b/parquet/record/record_writer/trait.RecordWriter.html
@@ -1,12 +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 `RecordWriter` trait in crate `parquet`."><title>RecordWriter in parquet::record::record_writer - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel= [...]
+<!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="`write_to_row_group` writes from `self` into `row_group_writer` `schema` builds the schema used by `row_group_writer` The type parameter `T` is used to work around the rust orphan rule when implementing on types such as `&amp;[T]`."><title>RecordWriter in parquet::record::record_writer - [...]
     // Required methods
     fn <a href="#tymethod.write_to_row_group" class="fn">write_to_row_group</a>&lt;W: <a class="trait" href="https://doc.rust-lang.org/nightly/std/io/trait.Write.html" title="trait std::io::Write">Write</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a>&gt;(
         &amp;self,
         row_group_writer: &amp;mut <a class="struct" href="../../file/writer/struct.SerializedRowGroupWriter.html" title="struct parquet::file::writer::SerializedRowGroupWriter">SerializedRowGroupWriter</a>&lt;'_, W&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="enum" href="../../errors/enum.ParquetError.html" title="enum parquet::errors::ParquetError">ParquetError</a>&gt;;
 <span class="item-spacer"></span>    fn <a href="#tymethod.schema" class="fn">schema</a>(&amp;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;<a class="type" href="../../schema/types/type.TypePtr.html" title="type parquet::schema::types::TypePtr">TypePtr</a>, <a class="enum" href="../../errors/enum.ParquetError.html" title="enum parquet::errors::ParquetError">ParquetError</a>&gt;;
-}</code></pre><h2 id="required-methods" class="small-section-header">Required Methods<a href="#required-methods" class="anchor">§</a></h2><div class="methods"><section id="tymethod.write_to_row_group" class="method"><a class="src rightside" href="../../../src/parquet/record/record_writer.rs.html#24-27">source</a><h4 class="code-header">fn <a href="#tymethod.write_to_row_group" class="fn">write_to_row_group</a>&lt;W: <a class="trait" href="https://doc.rust-lang.org/nightly/std/io/trait.Wr [...]
+}</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p><code>write_to_row_group</code> writes from <code>self</code> into <code>row_group_writer</code>
+<code>schema</code> builds the schema used by <code>row_group_writer</code>
+The type parameter <code>T</code> is used to work around the rust orphan rule
+when implementing on types such as <code>&amp;[T]</code>.</p>
+</div></details><h2 id="required-methods" class="small-section-header">Required Methods<a href="#required-methods" class="anchor">§</a></h2><div class="methods"><section id="tymethod.write_to_row_group" class="method"><a class="src rightside" href="../../../src/parquet/record/record_writer.rs.html#28-31">source</a><h4 class="code-header">fn <a href="#tymethod.write_to_row_group" class="fn">write_to_row_group</a>&lt;W: <a class="trait" href="https://doc.rust-lang.org/nightly/std/io/trait. [...]
     &amp;self,
     row_group_writer: &amp;mut <a class="struct" href="../../file/writer/struct.SerializedRowGroupWriter.html" title="struct parquet::file::writer::SerializedRowGroupWriter">SerializedRowGroupWriter</a>&lt;'_, W&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="enum" href="../../errors/enum.ParquetError.html" title="enum parquet::errors::ParquetError">ParquetError</a>&gt;</h4></section><details class="toggle method-toggle" open><summary><section id="tymethod.schema" class="method"><a class="src rightsid [...]
+) -&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="enum" href="../../errors/enum.ParquetError.html" title="enum parquet::errors::ParquetError">ParquetError</a>&gt;</h4></section><details class="toggle method-toggle" open><summary><section id="tymethod.schema" class="method"><a class="src rightsid [...]
 </div></details></div><h2 id="implementors" class="small-section-header">Implementors<a href="#implementors" class="anchor">§</a></h2><div id="implementors-list"></div><script src="../../../trait.impl/parquet/record/record_writer/trait.RecordWriter.js" async></script></section></div></main></body></html>
\ No newline at end of file
diff --git a/parquet/record/sidebar-items.js b/parquet/record/sidebar-items.js
index be6f6f888c..d78160d4df 100644
--- a/parquet/record/sidebar-items.js
+++ b/parquet/record/sidebar-items.js
@@ -1 +1 @@
-window.SIDEBAR_ITEMS = {"enum":["Field"],"mod":["api","reader","record_writer","triplet"],"struct":["List","Map","Row","RowColumnIter"],"trait":["ListAccessor","MapAccessor","RecordWriter","RowAccessor","RowFormatter"]};
\ No newline at end of file
+window.SIDEBAR_ITEMS = {"enum":["Field"],"mod":["api","reader","record_reader","record_writer","triplet"],"struct":["List","Map","Row","RowColumnIter"],"trait":["ListAccessor","MapAccessor","RecordReader","RecordWriter","RowAccessor","RowFormatter"]};
\ No newline at end of file
diff --git a/parquet/record/struct.Row.html b/parquet/record/struct.Row.html
index 011b01c60f..bdc933e13f 100644
--- a/parquet/record/struct.Row.html
+++ b/parquet/record/struct.Row.html
@@ -14,9 +14,9 @@
 <span class="kw">for </span>(idx, (name, field)) <span class="kw">in </span>row.get_column_iter().enumerate() {
     <span class="macro">println!</span>(<span class="string">&quot;column index: {}, column name: {}, column value: {}&quot;</span>, idx, name, field);
 }</code></pre></div>
-</div></details><section id="method.to_json_value" class="method"><a class="src rightside" href="../../src/parquet/record/api.rs.html#83-90">source</a><h4 class="code-header">pub fn <a href="#method.to_json_value" class="fn">to_json_value</a>(&amp;self) -&gt; <a class="enum" href="https://docs.rs/serde_json/1.0.107/serde_json/value/enum.Value.html" title="enum serde_json::value::Value">Value</a></h4></section></div></details></div><h2 id="trait-implementations" class="small-section-heade [...]
+</div></details><section id="method.to_json_value" class="method"><a class="src rightside" href="../../src/parquet/record/api.rs.html#83-90">source</a><h4 class="code-header">pub fn <a href="#method.to_json_value" class="fn">to_json_value</a>(&amp;self) -&gt; <a class="enum" href="https://docs.rs/serde_json/1.0.107/serde_json/value/enum.Value.html" title="enum serde_json::value::Value">Value</a></h4></section></div></details></div><h2 id="trait-implementations" class="small-section-heade [...]
 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#239">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-RowAccessor-for-Row" class="impl"><a class="src rightside" href="../../src/parquet/record/api.rs.html#199-237">source</a><a href="#impl-RowAccessor-for-Row" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="api/trait.RowAccessor.html" title="trait parquet::record::api::RowAccessor">RowAccessor</ [...]
+sufficient, and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-RowAccessor-for-Row" class="impl"><a class="src rightside" href="../../src/parquet/record/api.rs.html#199-237">source</a><a href="#impl-RowAccessor-for-Row" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="api/trait.RowAccessor.html" title="trait parquet::record::api::RowAccessor">RowAccessor</ [...]
 </div></details></div></details><section id="impl-StructuralPartialEq-for-Row" class="impl"><a class="src rightside" href="../../src/parquet/record/api.rs.html#46">source</a><a href="#impl-StructuralPartialEq-for-Row" class="anchor">§</a><h3 class="code-header">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="api/struct.Row.html" tit [...]
     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: [...]
diff --git a/parquet/record/trait.RecordReader.html b/parquet/record/trait.RecordReader.html
new file mode 100644
index 0000000000..9cbc5ad007
--- /dev/null
+++ b/parquet/record/trait.RecordReader.html
@@ -0,0 +1,15 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="read up to `max_records` records from `row_group_reader` into `self` The type parameter `T` is used to work around the rust orphan rule when implementing on types such as `Vec&lt;T&gt;`."><title>RecordReader in parquet::record - Rust</title><link rel="preload" as="font" type="font/woff2" [...]
+    // Required method
+    fn <a href="#tymethod.read_from_row_group" class="fn">read_from_row_group</a>(
+        &amp;mut self,
+        row_group_reader: &amp;mut dyn <a class="trait" href="../file/reader/trait.RowGroupReader.html" title="trait parquet::file::reader::RowGroupReader">RowGroupReader</a>,
+        num_records: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</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="enum" href="../errors/enum.ParquetError.html" title="enum parquet::errors::ParquetError">ParquetError</a>&gt;;
+}</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>read up to <code>max_records</code> records from <code>row_group_reader</code> into <code>self</code>
+The type parameter <code>T</code> is used to work around the rust orphan rule
+when implementing on types such as <code>Vec&lt;T&gt;</code>.</p>
+</div></details><h2 id="required-methods" class="small-section-header">Required Methods<a href="#required-methods" class="anchor">§</a></h2><div class="methods"><section id="tymethod.read_from_row_group" class="method"><a class="src rightside" href="../../src/parquet/record/record_reader.rs.html#25-29">source</a><h4 class="code-header">fn <a href="#tymethod.read_from_row_group" class="fn">read_from_row_group</a>(
+    &amp;mut self,
+    row_group_reader: &amp;mut dyn <a class="trait" href="../file/reader/trait.RowGroupReader.html" title="trait parquet::file::reader::RowGroupReader">RowGroupReader</a>,
+    num_records: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</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="enum" href="../errors/enum.ParquetError.html" title="enum parquet::errors::ParquetError">ParquetError</a>&gt;</h4></section></div><h2 id="implementors" class="small-section-header">Implementors<a href="#implementors" class="anchor">§</a></h2><div [...]
\ No newline at end of file
diff --git a/parquet/record/trait.RecordWriter.html b/parquet/record/trait.RecordWriter.html
index 053775602f..b6fd171e17 100644
--- a/parquet/record/trait.RecordWriter.html
+++ b/parquet/record/trait.RecordWriter.html
@@ -1,12 +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 `RecordWriter` trait in crate `parquet`."><title>RecordWriter in parquet::record - 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="`write_to_row_group` writes from `self` into `row_group_writer` `schema` builds the schema used by `row_group_writer` The type parameter `T` is used to work around the rust orphan rule when implementing on types such as `&amp;[T]`."><title>RecordWriter in parquet::record - Rust</title><l [...]
     // Required methods
     fn <a href="#tymethod.write_to_row_group" class="fn">write_to_row_group</a>&lt;W: <a class="trait" href="https://doc.rust-lang.org/nightly/std/io/trait.Write.html" title="trait std::io::Write">Write</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a>&gt;(
         &amp;self,
         row_group_writer: &amp;mut <a class="struct" href="../file/writer/struct.SerializedRowGroupWriter.html" title="struct parquet::file::writer::SerializedRowGroupWriter">SerializedRowGroupWriter</a>&lt;'_, W&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="enum" href="../errors/enum.ParquetError.html" title="enum parquet::errors::ParquetError">ParquetError</a>&gt;;
 <span class="item-spacer"></span>    fn <a href="#tymethod.schema" class="fn">schema</a>(&amp;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;<a class="type" href="../schema/types/type.TypePtr.html" title="type parquet::schema::types::TypePtr">TypePtr</a>, <a class="enum" href="../errors/enum.ParquetError.html" title="enum parquet::errors::ParquetError">ParquetError</a>&gt;;
-}</code></pre><h2 id="required-methods" class="small-section-header">Required Methods<a href="#required-methods" class="anchor">§</a></h2><div class="methods"><section id="tymethod.write_to_row_group" class="method"><a class="src rightside" href="../../src/parquet/record/record_writer.rs.html#24-27">source</a><h4 class="code-header">fn <a href="#tymethod.write_to_row_group" class="fn">write_to_row_group</a>&lt;W: <a class="trait" href="https://doc.rust-lang.org/nightly/std/io/trait.Write [...]
+}</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p><code>write_to_row_group</code> writes from <code>self</code> into <code>row_group_writer</code>
+<code>schema</code> builds the schema used by <code>row_group_writer</code>
+The type parameter <code>T</code> is used to work around the rust orphan rule
+when implementing on types such as <code>&amp;[T]</code>.</p>
+</div></details><h2 id="required-methods" class="small-section-header">Required Methods<a href="#required-methods" class="anchor">§</a></h2><div class="methods"><section id="tymethod.write_to_row_group" class="method"><a class="src rightside" href="../../src/parquet/record/record_writer.rs.html#28-31">source</a><h4 class="code-header">fn <a href="#tymethod.write_to_row_group" class="fn">write_to_row_group</a>&lt;W: <a class="trait" href="https://doc.rust-lang.org/nightly/std/io/trait.Wri [...]
     &amp;self,
     row_group_writer: &amp;mut <a class="struct" href="../file/writer/struct.SerializedRowGroupWriter.html" title="struct parquet::file::writer::SerializedRowGroupWriter">SerializedRowGroupWriter</a>&lt;'_, W&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="enum" href="../errors/enum.ParquetError.html" title="enum parquet::errors::ParquetError">ParquetError</a>&gt;</h4></section><details class="toggle method-toggle" open><summary><section id="tymethod.schema" class="method"><a class="src rightside"  [...]
+) -&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="enum" href="../errors/enum.ParquetError.html" title="enum parquet::errors::ParquetError">ParquetError</a>&gt;</h4></section><details class="toggle method-toggle" open><summary><section id="tymethod.schema" class="method"><a class="src rightside"  [...]
 </div></details></div><h2 id="implementors" class="small-section-header">Implementors<a href="#implementors" class="anchor">§</a></h2><div id="implementors-list"></div><script src="../../trait.impl/parquet/record/record_writer/trait.RecordWriter.js" async></script></section></div></main></body></html>
\ No newline at end of file
diff --git a/parquet_derive/all.html b/parquet_derive/all.html
index 098e7e3e3a..61e199d081 100644
--- a/parquet_derive/all.html
+++ b/parquet_derive/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/parquet_derive/derive.ParquetRecordWriter.html b/parquet_derive/derive.ParquetRecordReader.html
similarity index 62%
copy from parquet_derive/derive.ParquetRecordWriter.html
copy to parquet_derive/derive.ParquetRecordReader.html
index 83a131dd48..e5028c6855 100644
--- a/parquet_derive/derive.ParquetRecordWriter.html
+++ b/parquet_derive/derive.ParquetRecordReader.html
@@ -1,40 +1,26 @@
-<!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="Derive flat, simple RecordWriter implementations. Works by parsing a struct tagged with `#[derive(ParquetRecordWriter)]` and emitting the correct writing code for each field of the struct. Column writers are generated in the order they are defined."><title>ParquetRecordWriter in parquet_ [...]
-a struct tagged with <code>#[derive(ParquetRecordWriter)]</code> and emitting
-the correct writing code for each field of the struct. Column writers
+<!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="Derive flat, simple RecordReader implementations. Works by parsing a struct tagged with `#[derive(ParquetRecordReader)]` and emitting the correct writing code for each field of the struct. Column readers are generated in the order they are defined."><title>ParquetRecordReader in parquet_ [...]
+a struct tagged with <code>#[derive(ParquetRecordReader)]</code> and emitting
+the correct writing code for each field of the struct. Column readers
 are generated in the order they are defined.</p>
 <p>It is up to the programmer to keep the order of the struct
 fields lined up with the schema.</p>
 <p>Example:</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="kw">use </span>parquet::file::properties::WriterProperties;
-<span class="kw">use </span>parquet::file::writer::SerializedFileWriter;
+<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="kw">use </span>parquet::file::{serialized_reader::SerializedFileReader, reader::FileReader};
+<span class="kw">use </span>parquet_derive::{ParquetRecordReader};
 
-<span class="kw">use </span>std::sync::Arc;
-<span class="attr">#[derive(ParquetRecordWriter)]
-</span><span class="kw">struct </span>ACompleteRecord&lt;<span class="lifetime">&#39;a</span>&gt; {
-  <span class="kw">pub </span>a_bool: bool,
-  <span class="kw">pub </span>a_str: <span class="kw-2">&amp;</span><span class="lifetime">&#39;a </span>str,
+<span class="attr">#[derive(ParquetRecordReader)]
+</span><span class="kw">struct </span>ACompleteRecord {
+    <span class="kw">pub </span>a_bool: bool,
+    <span class="kw">pub </span>a_string: String,
 }
 
-<span class="kw">pub fn </span>write_some_records() {
-  <span class="kw">let </span>samples = <span class="macro">vec!</span>[
-    ACompleteRecord {
-      a_bool: <span class="bool-val">true</span>,
-      a_str: <span class="string">&quot;I&#39;m true&quot;
-    </span>},
-    ACompleteRecord {
-      a_bool: <span class="bool-val">false</span>,
-      a_str: <span class="string">&quot;I&#39;m false&quot;
-    </span>}
-  ];
+<span class="kw">pub fn </span>read_some_records() -&gt; Vec&lt;ACompleteRecord&gt; {
+  <span class="kw">let </span><span class="kw-2">mut </span>samples: Vec&lt;ACompleteRecord&gt; = Vec::new();
 
- <span class="kw">let </span>schema = samples.as_slice().schema();
-
- <span class="kw">let </span><span class="kw-2">mut </span>writer = SerializedFileWriter::new(file, schema, Default::default()).unwrap();
-
- <span class="kw">let </span><span class="kw-2">mut </span>row_group = writer.next_row_group().unwrap();
- samples.as_slice().write_to_row_group(<span class="kw-2">&amp;mut </span>row_group).unwrap();
- writer.close_row_group(row_group).unwrap();
- writer.close().unwrap();
+  <span class="kw">let </span>reader = SerializedFileReader::new(file).unwrap();
+  <span class="kw">let </span><span class="kw-2">mut </span>row_group = reader.get_row_group(<span class="number">0</span>).unwrap();
+  samples.read_from_row_group(<span class="kw-2">&amp;mut *</span>row_group, <span class="number">1</span>).unwrap();
+  samples
 }</code></pre></div>
 </div></details></section></div></main></body></html>
\ No newline at end of file
diff --git a/parquet_derive/derive.ParquetRecordWriter.html b/parquet_derive/derive.ParquetRecordWriter.html
index 83a131dd48..ae02605fab 100644
--- a/parquet_derive/derive.ParquetRecordWriter.html
+++ b/parquet_derive/derive.ParquetRecordWriter.html
@@ -10,6 +10,7 @@ fields lined up with the schema.</p>
 <span class="kw">use </span>parquet::file::writer::SerializedFileWriter;
 
 <span class="kw">use </span>std::sync::Arc;
+
 <span class="attr">#[derive(ParquetRecordWriter)]
 </span><span class="kw">struct </span>ACompleteRecord&lt;<span class="lifetime">&#39;a</span>&gt; {
   <span class="kw">pub </span>a_bool: bool,
diff --git a/parquet_derive/index.html b/parquet_derive/index.html
index e78beef085..825d6fe801 100644
--- a/parquet_derive/index.html
+++ b/parquet_derive/index.html
@@ -1,5 +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 `parquet_derive` crate."><title>parquet_derive - 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= [...]
-            <li><a id="all-types" href="all.html">All Items</a></li></ul><section><ul class="block"><li><a href="#modules">Modules</a></li><li><a href="#derives">Derive Macros</a></li></ul></section></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" t [...]
+            <li><a id="all-types" href="all.html">All Items</a></li></ul><section><ul class="block"><li><a href="#modules">Modules</a></li><li><a href="#derives">Derive Macros</a></li></ul></section></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" t [...]
+a struct tagged with <code>#[derive(ParquetRecordReader)]</code> and emitting
+the correct writing code for each field of the struct. Column readers
+are generated in the order they are defined.</div></li><li><div class="item-name"><a class="derive" href="derive.ParquetRecordWriter.html" title="derive parquet_derive::ParquetRecordWriter">ParquetRecordWriter</a></div><div class="desc docblock-short">Derive flat, simple RecordWriter implementations. Works by parsing
 a struct tagged with <code>#[derive(ParquetRecordWriter)]</code> and emitting
 the correct writing code for each field of the struct. Column writers
 are generated in the order they are defined.</div></li></ul></section></div></main></body></html>
\ No newline at end of file
diff --git a/parquet_derive/parquet_field/enum.Type.html b/parquet_derive/parquet_field/enum.Type.html
index ecc9882ebd..1d46b86e10 100644
--- a/parquet_derive/parquet_field/enum.Type.html
+++ b/parquet_derive/parquet_field/enum.Type.html
@@ -1,26 +1,28 @@
-<!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 `Type` enum in crate `parquet_derive`."><title>Type in parquet_derive::parquet_field - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as=" [...]
+<!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 `Type` enum in crate `parquet_derive`."><title>Type in parquet_derive::parquet_field - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as=" [...]
     Array(<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="enum" href="enum.Type.html" title="enum parquet_derive::parquet_field::Type">Type</a>&gt;),
     Option(<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="enum" href="enum.Type.html" title="enum parquet_derive::parquet_field::Type">Type</a>&gt;),
     Slice(<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="enum" href="enum.Type.html" title="enum parquet_derive::parquet_field::Type">Type</a>&gt;),
     Vec(<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="enum" href="enum.Type.html" title="enum parquet_derive::parquet_field::Type">Type</a>&gt;),
     TypePath(<a class="enum" href="https://docs.rs/syn/2.0.38/syn/ty/enum.Type.html" title="enum syn::ty::Type">Type</a>),
     Reference(<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://docs.rs/syn/2.0.38/syn/lifetime/struct.Lifetime.html" title="struct syn::lifetime::Lifetime">Lifetime</a>&gt;, <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="enum" href="enum.Type.html" title="enum parquet_derive::parq [...]
-}</code></pre><h2 id="variants" class="variants small-section-header">Variants<a href="#variants" class="anchor">§</a></h2><div class="variants"><section id="variant.Array" class="variant"><a href="#variant.Array" class="anchor">§</a><h3 class="code-header">Array(<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="enum" href="enum.Type.html" title="enum parquet_derive::parquet_field::Type">Type</a>&g [...]
+}</code></pre><h2 id="variants" class="variants small-section-header">Variants<a href="#variants" class="anchor">§</a></h2><div class="variants"><section id="variant.Array" class="variant"><a href="#variant.Array" class="anchor">§</a><h3 class="code-header">Array(<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="enum" href="enum.Type.html" title="enum parquet_derive::parquet_field::Type">Type</a>&g [...]
 parquet-rs column writer</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.leaf_type_recursive" class="method"><a class="src rightside" href="../../src/parquet_derive/parquet_field.rs.html#408-410">source</a><h4 class="code-header">fn <a href="#method.leaf_type_recursive" class="fn">leaf_type_recursive</a>(&amp;self) -&gt; &amp;<a class="enum" href="enum.Type.html" title="enum parquet_derive::parquet_field::Type">Type</a></h4></section></summary><div class="docblock"><p>Help [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.column_reader" class="method"><a class="src rightside" href="../../src/parquet_derive/parquet_field.rs.html#513-532">source</a><h4 class="code-header">fn <a href="#method.column_reader" class="fn">column_reader</a>(&amp;self) -&gt; <a class="struct" href="https://docs.rs/syn/2.0.38/syn/ty/struct.TypePath.html" title="struct syn::ty::TypePath">TypePath</a></h4></section></summary><div class="docblock"> [...]
+parquet-rs column reader</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.leaf_type_recursive" class="method"><a class="src rightside" href="../../src/parquet_derive/parquet_field.rs.html#543-545">source</a><h4 class="code-header">fn <a href="#method.leaf_type_recursive" class="fn">leaf_type_recursive</a>(&amp;self) -&gt; &amp;<a class="enum" href="enum.Type.html" title="enum parquet_derive::parquet_field::Type">Type</a></h4></section></summary><div class="docblock"><p>Help [...]
 <p>Ex:
 <code>Option&lt;&amp;String&gt;</code> =&gt; Type::TypePath(String)
 <code>&amp;Option&lt;i32&gt;</code> =&gt; Type::TypePath(i32)
 <code>Vec&lt;Vec&lt;u8&gt;&gt;</code> =&gt; Type::Vec(u8)</p>
 <p>Useful in determining the physical type of a field and the
 definition levels.</p>
-</div></details><section id="method.leaf_type_recursive_helper" class="method"><a class="src rightside" href="../../src/parquet_derive/parquet_field.rs.html#412-423">source</a><h4 class="code-header">fn <a href="#method.leaf_type_recursive_helper" class="fn">leaf_type_recursive_helper</a>&lt;'a&gt;(
+</div></details><section id="method.leaf_type_recursive_helper" class="method"><a class="src rightside" href="../../src/parquet_derive/parquet_field.rs.html#547-558">source</a><h4 class="code-header">fn <a href="#method.leaf_type_recursive_helper" class="fn">leaf_type_recursive_helper</a>&lt;'a&gt;(
     ty: &amp;'a <a class="enum" href="enum.Type.html" title="enum parquet_derive::parquet_field::Type">Type</a>,
     parent_ty: <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="enum" href="enum.Type.html" title="enum parquet_derive::parquet_field::Type">Type</a>&gt;
-) -&gt; &amp;'a <a class="enum" href="enum.Type.html" title="enum parquet_derive::parquet_field::Type">Type</a></h4></section><details class="toggle method-toggle" open><summary><section id="method.inner_type" class="method"><a class="src rightside" href="../../src/parquet_derive/parquet_field.rs.html#428-442">source</a><h4 class="code-header">fn <a href="#method.inner_type" class="fn">inner_type</a>(&amp;self) -&gt; &amp;<a class="enum" href="https://docs.rs/syn/2.0.38/syn/ty/enum.Type. [...]
+) -&gt; &amp;'a <a class="enum" href="enum.Type.html" title="enum parquet_derive::parquet_field::Type">Type</a></h4></section><details class="toggle method-toggle" open><summary><section id="method.inner_type" class="method"><a class="src rightside" href="../../src/parquet_derive/parquet_field.rs.html#563-577">source</a><h4 class="code-header">fn <a href="#method.inner_type" class="fn">inner_type</a>(&amp;self) -&gt; &amp;<a class="enum" href="https://docs.rs/syn/2.0.38/syn/ty/enum.Type. [...]
 type information, useful for determining the physical type
 and normalizing the type paths.</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.last_part" class="method"><a class="src rightside" href="../../src/parquet_derive/parquet_field.rs.html#456-466">source</a><h4 class="code-header">fn <a href="#method.last_part" class="fn">last_part</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></h4></section></summary><div class="docblock" [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.last_part" class="method"><a class="src rightside" href="../../src/parquet_derive/parquet_field.rs.html#591-601">source</a><h4 class="code-header">fn <a href="#method.last_part" class="fn">last_part</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></h4></section></summary><div class="docblock" [...]
 most identifiable part</p>
 <p>Ex:
 std::string::String =&gt; String
@@ -30,17 +32,17 @@ chrono::NaiveDateTime =&gt; NaiveDateTime</p>
 rename is in play. Please note procedural macros always
 run before type resolution so this is a risk the user
 takes on when renaming imports.</p>
-</div></details><details class="toggle method-toggle" open><summary><section id="method.physical_type" class="method"><a class="src rightside" href="../../src/parquet_derive/parquet_field.rs.html#475-516">source</a><h4 class="code-header">fn <a href="#method.physical_type" class="fn">physical_type</a>(&amp;self) -&gt; Type</h4></section></summary><div class="docblock"><p>Converts rust types to parquet physical types.</p>
+</div></details><details class="toggle method-toggle" open><summary><section id="method.physical_type" class="method"><a class="src rightside" href="../../src/parquet_derive/parquet_field.rs.html#610-651">source</a><h4 class="code-header">fn <a href="#method.physical_type" class="fn">physical_type</a>(&amp;self) -&gt; Type</h4></section></summary><div class="docblock"><p>Converts rust types to parquet physical types.</p>
 <p>Ex:
 [u8; 10] =&gt; FIXED_LEN_BYTE_ARRAY
 <code>Vec&lt;u8&gt;</code>  =&gt; BYTE_ARRAY
 String =&gt; BYTE_ARRAY
 i32 =&gt; INT32</p>
-</div></details><section id="method.logical_type" class="method"><a class="src rightside" href="../../src/parquet_derive/parquet_field.rs.html#518-586">source</a><h4 class="code-header">fn <a href="#method.logical_type" class="fn">logical_type</a>(&amp;self) -&gt; <a class="struct" href="https://docs.rs/proc-macro2/1.0.69/proc_macro2/struct.TokenStream.html" title="struct proc_macro2::TokenStream">TokenStream</a></h4></section><section id="method.converted_type" class="method"><a class=" [...]
+</div></details><section id="method.physical_type_as_rust" class="method"><a class="src rightside" href="../../src/parquet_derive/parquet_field.rs.html#653-668">source</a><h4 class="code-header">fn <a href="#method.physical_type_as_rust" class="fn">physical_type_as_rust</a>(&amp;self) -&gt; <a class="struct" href="https://docs.rs/proc-macro2/1.0.69/proc_macro2/struct.TokenStream.html" title="struct proc_macro2::TokenStream">TokenStream</a></h4></section><section id="method.logical_type"  [...]
 parquet_derive::Field</p>
-</div></details><section id="method.from_type" class="method"><a class="src rightside" href="../../src/parquet_derive/parquet_field.rs.html#611-623">source</a><h4 class="code-header">fn <a href="#method.from_type" class="fn">from_type</a>(f: &amp;<a class="struct" href="https://docs.rs/syn/2.0.38/syn/data/struct.Field.html" title="struct syn::data::Field">Field</a>, ty: &amp;<a class="enum" href="https://docs.rs/syn/2.0.38/syn/ty/enum.Type.html" title="enum syn::ty::Type">Type</a>) -&gt; [...]
+</div></details><section id="method.from_type" class="method"><a class="src rightside" href="../../src/parquet_derive/parquet_field.rs.html#763-775">source</a><h4 class="code-header">fn <a href="#method.from_type" class="fn">from_type</a>(f: &amp;<a class="struct" href="https://docs.rs/syn/2.0.38/syn/data/struct.Field.html" title="struct syn::data::Field">Field</a>, ty: &amp;<a class="enum" href="https://docs.rs/syn/2.0.38/syn/ty/enum.Type.html" title="enum syn::ty::Type">Type</a>) -&gt; [...]
 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#239">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-StructuralPartialEq-for-Type" class="impl"><a class="src rightside" href="../../src/parquet_derive/parquet_field.rs.html#365">source</a><a href="#impl-StructuralPartialEq-for-Type" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialE [...]
+sufficient, and should not be overridden without very good reason.</div></details></div></details><section id="impl-StructuralPartialEq-for-Type" class="impl"><a class="src rightside" href="../../src/parquet_derive/parquet_field.rs.html#477">source</a><a href="#impl-StructuralPartialEq-for-Type" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialE [...]
     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/parquet_derive/parquet_field/index.html b/parquet_derive/parquet_field/index.html
index 0855121274..aa1bc34280 100644
--- a/parquet_derive/parquet_field/index.html
+++ b/parquet_derive/parquet_field/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="API documentation for the Rust `parquet_field` mod in crate `parquet_derive`."><title>parquet_derive::parquet_field - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as=" [...]
+<!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 `parquet_field` mod in crate `parquet_derive`."><title>parquet_derive::parquet_field - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as=" [...]
 at compile time. These libraries will
 be written to parquet as their preferred
 physical type.</div></li><li><div class="item-name"><a class="enum" href="enum.Type.html" title="enum parquet_derive::parquet_field::Type">Type</a><span title="Restricted Visibility">&nbsp;🔒</span> </div></li></ul></section></div></main></body></html>
\ No newline at end of file
diff --git a/parquet_derive/parquet_field/struct.Field.html b/parquet_derive/parquet_field/struct.Field.html
index 7256bd6761..6223c7d7cd 100644
--- a/parquet_derive/parquet_field/struct.Field.html
+++ b/parquet_derive/parquet_field/struct.Field.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="API documentation for the Rust `Field` struct in crate `parquet_derive`."><title>Field in parquet_derive::parquet_field - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload"  [...]
+<!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 `Field` struct in crate `parquet_derive`."><title>Field in parquet_derive::parquet_field - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload"  [...]
     ident: <a class="struct" href="https://docs.rs/proc-macro2/1.0.69/proc_macro2/struct.Ident.html" title="struct proc_macro2::Ident">Ident</a>,
     ty: <a class="enum" href="enum.Type.html" title="enum parquet_derive::parquet_field::Type">Type</a>,
     is_a_byte_buf: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,
     third_party_type: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="enum" href="enum.ThirdPartyType.html" title="enum parquet_derive::parquet_field::ThirdPartyType">ThirdPartyType</a>&gt;,
-}</code></pre><h2 id="fields" class="fields small-section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.ident" class="structfield small-section-header"><a href="#structfield.ident" class="anchor field">§</a><code>ident: <a class="struct" href="https://docs.rs/proc-macro2/1.0.69/proc_macro2/struct.Ident.html" title="struct proc_macro2::Ident">Ident</a></code></span><span id="structfield.ty" class="structfield small-section-header"><a href="#structfield.ty" [...]
+}</code></pre><h2 id="fields" class="fields small-section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.ident" class="structfield small-section-header"><a href="#structfield.ident" class="anchor field">§</a><code>ident: <a class="struct" href="https://docs.rs/proc-macro2/1.0.69/proc_macro2/struct.Ident.html" title="struct proc_macro2::Ident">Ident</a></code></span><span id="structfield.ty" class="structfield small-section-header"><a href="#structfield.ty" [...]
 column writer snippet. Should match exactly what you
 would write by hand.</p>
 <p>Can only generate writers for basic structs, for example:</p>
@@ -18,7 +18,22 @@ nested_record: Record
 }</p>
 <p>because this parsing logic is not sophisticated enough for definition
 levels beyond 2.</p>
-</div></details><section id="method.parquet_type" class="method"><a class="src rightside" href="../../src/parquet_derive/parquet_field.rs.html#222-275">source</a><h4 class="code-header">pub fn <a href="#method.parquet_type" class="fn">parquet_type</a>(&amp;self) -&gt; <a class="struct" href="https://docs.rs/proc-macro2/1.0.69/proc_macro2/struct.TokenStream.html" title="struct proc_macro2::TokenStream">TokenStream</a></h4></section><section id="method.option_into_vals" class="method"><a c [...]
+</div></details><details class="toggle method-toggle" open><summary><section id="method.reader_snippet" class="method"><a class="src rightside" href="../../src/parquet_derive/parquet_field.rs.html#243-286">source</a><h4 class="code-header">pub fn <a href="#method.reader_snippet" class="fn">reader_snippet</a>(&amp;self) -&gt; <a class="struct" href="https://docs.rs/proc-macro2/1.0.69/proc_macro2/struct.TokenStream.html" title="struct proc_macro2::TokenStream">TokenStream</a></h4></section [...]
+column reader snippet. Should match exactly what you
+would write by hand.</p>
+<p>Can only generate writers for basic structs, for example:</p>
+<p>struct Record {
+a_bool: bool
+}</p>
+<p>but not</p>
+<p>struct UnsupportedNestedRecord {
+a_property: bool,
+nested_record: Record
+}</p>
+<p>because this parsing logic is not sophisticated enough for definition
+levels beyond 2.</p>
+<p><code>Option</code> types and references not supported</p>
+</div></details><section id="method.parquet_type" class="method"><a class="src rightside" href="../../src/parquet_derive/parquet_field.rs.html#288-341">source</a><h4 class="code-header">pub fn <a href="#method.parquet_type" class="fn">parquet_type</a>(&amp;self) -&gt; <a class="struct" href="https://docs.rs/proc-macro2/1.0.69/proc_macro2/struct.TokenStream.html" title="struct proc_macro2::TokenStream">TokenStream</a></h4></section><section id="method.option_into_vals" class="method"><a c [...]
 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#239">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-StructuralPartialEq-for-Field" class="impl"><a class="src rightside" href="../../src/parquet_derive/parquet_field.rs.html#18">source</a><a href="#impl-StructuralPartialEq-for-Field" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartial [...]
     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 [...]
diff --git a/parquet_derive/sidebar-items.js b/parquet_derive/sidebar-items.js
index 4895ac915b..a617c2a746 100644
--- a/parquet_derive/sidebar-items.js
+++ b/parquet_derive/sidebar-items.js
@@ -1 +1 @@
-window.SIDEBAR_ITEMS = {"derive":["ParquetRecordWriter"],"mod":["parquet_field"]};
\ No newline at end of file
+window.SIDEBAR_ITEMS = {"derive":["ParquetRecordReader","ParquetRecordWriter"],"mod":["parquet_field"]};
\ No newline at end of file
diff --git a/parquet_derive_test/all.html b/parquet_derive_test/all.html
index f777efdd8a..62c3fae781 100644
--- a/parquet_derive_test/all.html
+++ b/parquet_derive_test/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/parquet_derive_test/index.html b/parquet_derive_test/index.html
index a5d20ce73d..a2ed73c163 100644
--- a/parquet_derive_test/index.html
+++ b/parquet_derive_test/index.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="API documentation for the Rust `parquet_derive_test` crate."><title>parquet_derive_test - 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 [...]
-            <li><a id="all-types" href="all.html">All Items</a></li></ul><section><ul class="block"><li><a href="#structs">Structs</a></li></ul></section></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="hel [...]
\ No newline at end of file
+            <li><a id="all-types" href="all.html">All Items</a></li></ul><section><ul class="block"><li><a href="#structs">Structs</a></li></ul></section></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="hel [...]
\ No newline at end of file
diff --git a/parquet_derive_test/sidebar-items.js b/parquet_derive_test/sidebar-items.js
index 4a498fe9f5..d2fc66e066 100644
--- a/parquet_derive_test/sidebar-items.js
+++ b/parquet_derive_test/sidebar-items.js
@@ -1 +1 @@
-window.SIDEBAR_ITEMS = {"struct":["ACompleteRecord"]};
\ No newline at end of file
+window.SIDEBAR_ITEMS = {"struct":["ACompleteRecord","APartiallyCompleteRecord"]};
\ No newline at end of file
diff --git a/parquet_derive_test/struct.APartiallyCompleteRecord.html b/parquet_derive_test/struct.APartiallyCompleteRecord.html
new file mode 100644
index 0000000000..b2752a701c
--- /dev/null
+++ b/parquet_derive_test/struct.APartiallyCompleteRecord.html
@@ -0,0 +1,34 @@
+<!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 `APartiallyCompleteRecord` struct in crate `parquet_derive_test`."><title>APartiallyCompleteRecord in parquet_derive_test - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Regular-46f98efaafac5295.t [...]
+    pub bool: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,
+    pub string: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>,
+    pub i16: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.i16.html">i16</a>,
+    pub i32: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.i32.html">i32</a>,
+    pub u64: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>,
+    pub isize: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.isize.html">isize</a>,
+    pub float: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.f32.html">f32</a>,
+    pub double: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.f64.html">f64</a>,
+    pub now: <a class="struct" href="https://docs.rs/chrono/latest/chrono/naive/datetime/struct.NaiveDateTime.html" title="struct chrono::naive::datetime::NaiveDateTime">NaiveDateTime</a>,
+    pub date: <a class="struct" href="https://docs.rs/chrono/latest/chrono/naive/date/struct.NaiveDate.html" title="struct chrono::naive::date::NaiveDate">NaiveDate</a>,
+    pub byte_vec: <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></pre><h2 id="fields" class="fields small-section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.bool" class="structfield small-section-header"><a href="#structfield.bool" class="anchor field">§</a><code>bool: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></code></span><span id="structfield.string" class="structfield small-section-header"><a href="#structfield.string" class="anchor field">§</a><code>s [...]
+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#239">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-RecordReader%3CAPartiallyCompleteRecord%3E-for-Vec%3CAPartiallyCompleteRecord%3E" class="impl"><a class="src rightside" href="../src/parquet_derive_test/lib.rs.html#52">source</a><a href="#impl-RecordReader%3CAPartiallyCompleteRecord%3E-for-Vec%3CAPartiallyCompleteRecord%3E" class="anchor">§</a><h3 class="code-header [...]
+    &amp;mut self,
+    row_group_reader: &amp;mut dyn <a class="trait" href="../parquet/file/reader/trait.RowGroupReader.html" title="trait parquet::file::reader::RowGroupReader">RowGroupReader</a>,
+    num_records: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</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="enum" href="../parquet/errors/enum.ParquetError.html" title="enum parquet::errors::ParquetError">ParquetError</a>&gt;</h4></section></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-RecordWriter%3CAPartia [...]
+    &amp;self,
+    row_group_writer: &amp;mut <a class="struct" href="../parquet/file/writer/struct.SerializedRowGroupWriter.html" title="struct parquet::file::writer::SerializedRowGroupWriter">SerializedRowGroupWriter</a>&lt;'_, W&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="enum" href="../parquet/errors/enum.ParquetError.html" title="enum parquet::errors::ParquetError">ParquetError</a>&gt;</h4></section><details class="toggle method-toggle" open><summary><section id="method.schema" class="method trait-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 [...]
+    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-T" class="impl"><a href="#impl-FromCast%3CT%3E-for-T" 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">fn < [...]
+    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#756">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-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#803-805">source</a><a href="#impl-TryFrom%3CU%3E-for-T" 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">TryFrom</a>&lt;U [...]
+    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" 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.TryFrom.html#associatedtype.Error" class [...]
+    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-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.TryInto.html#associatedtype [...]
+    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/search-index.js b/search-index.js
index 1e31ad221f..cce7b2d5d0 100644
--- a/search-index.js
+++ b/search-index.js
@@ -24,10 +24,10 @@ var searchIndex = JSON.parse('{\
 "flight_test_integration_client":{"doc":"","t":"DNNGNNGELLLLLLLLLLLLLLLLLLLLLLMLLLLFMMMLLLLLLLLLLLLL","n":["Args","AuthBasicProto","Err","Error","Middleware","Ok","Result","Scenario","augment_args","augment_args_for_update","borrow","borrow","borrow_mut","borrow_mut","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","host","into","into","into_request","into_re [...]
 "flight_test_integration_server":{"doc":"","t":"DNNGNNGELLLLLLLLLLLLLLLLLLLLLLLLLLFMMLLLLLLLLLLLLL","n":["Args","AuthBasicProto","Err","Error","Middleware","Ok","Result","Scenario","augment_args","augment_args_for_update","borrow","borrow","borrow_mut","borrow_mut","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","into","into","into_request","into_request","m [...]
 "gen":{"doc":"","t":"FF","n":["main","prost_config"],"q":[[0,"gen"],[2,"core::error"],[3,"alloc::boxed"],[4,"core::result"],[5,"prost_build"]],"d":["",""],"i":[0,0],"f":[[[],[[4,[1,[3,[2]]]]]],[[],5]],"c":[],"p":[[15,"tuple"],[8,"Error",2],[3,"Box",3],[4,"Result",4],[3,"Config",5]],"b":[]},\
-"parquet":{"doc":"This crate contains the official Native Rust …","t":"AAAAAAOAAAAARCCDRCDLAFAAALLLLALLLLLLAMLLLLLLLLLLMMFFFALLLLLLLLLIDDDDDGDDDIDDFMMMMLLLLLLLLLLLLLLLLLLLLLLLLLKLMLKFMMMMAMMLLLLLLLLLLLLLLLMMLLLLLLLLMMLLLLMMMMMLLLLLLLLLLKLMMMLLMKMMMMMMMMMMLLLMMMMAMMMMFMMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLIDDLLLLLLKLMLLLLLLLLMKLMLLLLLLDDFLLLLLLLLLLLLLLLLLLLLLLLLLLLLFLLLLLLLMLLMLLMLLLLLLLLLLDDDDEDDDDNNGMLLMLLLLLLLLLLLLLLLLLLMMALLLLLLLLLMLLLLLMFMMLLLLLLLLLLLLLLLLLLLLLLLLLLFFLFFFLFFFLMLLLLLL [...]
+"parquet":{"doc":"This crate contains the official Native Rust …","t":"AAAAAAOAAAAARCCDRCDLAFAAALLLLALLLLLLAMLLLLLLLLLLMMFFFALLLLLLLLLIDDDDDGDDDIDDFMMMMLLLLLLLLLLLLLLLLLLLLLLLLLKLMLKFMMMMAMMLLLLLLLLLLLLLLLMMLLLLLLLLMMLLLLMMMMMLLLLLLLLLLKLMMMLLMKMMMMMMMMMMLLLMMMMAMMMMFMMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLIDDLLLLLLKLMLLLLLLLLMKLMLLLLLLDDFLLLLLLLLLLLLLLLLLLLLLLLLLLLLFLLLLLLLMLLMLLMLLLLLLLLLLDDDDEDDDDNNGMLLMLLLLLLLLLLLLLLLLLLMMALLLLLLLLLMLLLLLMFMMLLLLLLLLLLLLLLLLLLLLLLLLLLFFLFFFLFFFLMLLLLLL [...]
 "parquet_concat":{"doc":"Binary that concatenates the column data of one or more …","t":"DLLLLLLLLLLLLLMLFMLLLLLL","n":["Args","augment_args","augment_args_for_update","borrow","borrow_mut","cast","command","command_for_update","fmt","from","from_arg_matches","from_arg_matches_mut","from_cast","group_id","input","into","main","output","run","try_from","try_into","type_id","update_from_arg_matches","update_from_arg_matches_mut"],"q":[[0,"parquet_concat"],[24,"clap_builder::builder::comman [...]
-"parquet_derive":{"doc":"","t":"YANNNDNNNEENNNLLLLLLLLLLLLLLLLLLLLLLLLLMLLLLMLLLLLLLLLMLLLLLLMLLLL","n":["ParquetRecordWriter","parquet_field","Array","ChronoNaiveDate","ChronoNaiveDateTime","Field","Option","Reference","Slice","ThirdPartyType","Type","TypePath","Uuid","Vec","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","column_writer","converted_type","copied_direct_vals","eq","eq","eq","fmt","fmt","fmt","from","from","from","from","from","from_type","from_type_array [...]
-"parquet_derive_test":{"doc":"","t":"DMMMMLLMMMMMMLMMLLMMLMMMMMMMMMMMLLLM","n":["ACompleteRecord","a_bool","a_borrowed_string","a_str","a_string","borrow","borrow_mut","borrowed_byte_vec","borrowed_maybe_a_str","borrowed_maybe_a_string","borrowed_maybe_borrowed_byte_vec","borrowed_maybe_byte_vec","byte_vec","cast","double","float","from","from_cast","i16","i32","into","isize","maybe_a_str","maybe_a_string","maybe_byte_vec","maybe_double","maybe_float","maybe_i16","maybe_u32","maybe_u8"," [...]
+"parquet_derive":{"doc":"","t":"YYANNNDNNNEENNNLLLLLLLLLLLLLLLLLLLLLLLLLLLMLLLLMLLLLLLLLLLLMLLLLLLMLLLL","n":["ParquetRecordReader","ParquetRecordWriter","parquet_field","Array","ChronoNaiveDate","ChronoNaiveDateTime","Field","Option","Reference","Slice","ThirdPartyType","Type","TypePath","Uuid","Vec","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","column_reader","column_writer","converted_type","copied_direct_fields","copied_direct_vals","eq","eq","eq","fmt","fmt","fm [...]
+"parquet_derive_test":{"doc":"","t":"DDMMMMMLLLLMMMMMMMLLMMMLMMLLLLLMMMMLLMMMMMMMMMMMMMMLLLLLLMM","n":["ACompleteRecord","APartiallyCompleteRecord","a_bool","a_borrowed_string","a_str","a_string","bool","borrow","borrow","borrow_mut","borrow_mut","borrowed_byte_vec","borrowed_maybe_a_str","borrowed_maybe_a_string","borrowed_maybe_borrowed_byte_vec","borrowed_maybe_byte_vec","byte_vec","byte_vec","cast","cast","date","double","double","eq","float","float","fmt","from","from","from_cast"," [...]
 "parquet_fromcsv":{"doc":"Binary file to converts csv to Parquet file","t":"DNNNNNENNNEENNFLLMLLLLLLLLLLLLLLLLLLFFFFMMMMLLMLLLLLLLLLLLLLLLLLLLLLLLLMMMMLLLLFMMMMMMLLLLLLLLLLLLLLLLLLLLLLLMF","n":["Args","ArrowError","CR","CommandLineParseError","Crlf","Csv","CsvDialect","IoError","LF","ParquetError","ParquetFromCsvError","RecordTerminator","Tsv","WithContext","arrow_schema_from_string","augment_args","augment_args_for_update","batch_size","borrow","borrow","borrow","borrow","borrow_mut","b [...]
 "parquet_index":{"doc":"Binary that prints the [page index] of a parquet file","t":"DLLLLLMLLFMLLLLLLLFFLLLLLL","n":["Args","augment_args","augment_args_for_update","borrow","borrow_mut","cast","column","command","command_for_update","compute_row_counts","file","fmt","from","from_arg_matches","from_arg_matches_mut","from_cast","group_id","into","main","print_index","run","try_from","try_into","type_id","update_from_arg_matches","update_from_arg_matches_mut"],"q":[[0,"parquet_index"],[26, [...]
 "parquet_layout":{"doc":"Binary that prints the physical layout of a parquet file","t":"DDDDDLLLLLLLLLLLLLLLLLMLLMFMFFMMLLLLLLLLLLLLLLLLLLMMMMLLLLLFMMMMMFMMLLLLLLLLLLLLLLLLLLLLMLL","n":["Args","ColumnChunk","Page","ParquetFile","RowGroup","augment_args","augment_args_for_update","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","cast","cast","cast","cast","cast","columns","command","command_for_update","compressed_bytes","compre [...]
diff --git a/settings.html b/settings.html
index efd44df03c..65a402b815 100644
--- a/settings.html
+++ b/settings.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="Settings of Rustdoc"><title>Settings</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/FiraSans-Regular-018c141bf0843ffd [...]
\ 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="Settings of Rustdoc"><title>Settings</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/FiraSans-Regular-018c141bf0843ffd [...]
\ No newline at end of file
diff --git a/src-files.js b/src-files.js
index 958f45ab71..42dcb4374d 100644
--- a/src-files.js
+++ b/src-files.js
@@ -24,7 +24,7 @@ var srcIndex = JSON.parse('{\
 "flight_test_integration_client":["",[],["flight-test-integration-client.rs"]],\
 "flight_test_integration_server":["",[],["flight-test-integration-server.rs"]],\
 "gen":["",[],["main.rs"]],\
-"parquet":["",[["arrow",[["array_reader",[],["builder.rs","byte_array.rs","byte_array_dictionary.rs","empty_array.rs","fixed_len_byte_array.rs","fixed_size_list_array.rs","list_array.rs","map_array.rs","mod.rs","null_array.rs","primitive_array.rs","struct_array.rs"]],["arrow_reader",[],["filter.rs","mod.rs","selection.rs"]],["arrow_writer",[],["byte_array.rs","levels.rs","mod.rs"]],["async_reader",[],["metadata.rs","mod.rs","store.rs"]],["async_writer",[],["mod.rs"]],["buffer",[],["bit_u [...]
+"parquet":["",[["arrow",[["array_reader",[],["builder.rs","byte_array.rs","byte_array_dictionary.rs","empty_array.rs","fixed_len_byte_array.rs","fixed_size_list_array.rs","list_array.rs","map_array.rs","mod.rs","null_array.rs","primitive_array.rs","struct_array.rs"]],["arrow_reader",[],["filter.rs","mod.rs","selection.rs"]],["arrow_writer",[],["byte_array.rs","levels.rs","mod.rs"]],["async_reader",[],["metadata.rs","mod.rs","store.rs"]],["async_writer",[],["mod.rs"]],["buffer",[],["bit_u [...]
 "parquet_concat":["",[],["parquet-concat.rs"]],\
 "parquet_derive":["",[],["lib.rs","parquet_field.rs"]],\
 "parquet_derive_test":["",[],["lib.rs"]],\
diff --git a/src/parquet/record/mod.rs.html b/src/parquet/record/mod.rs.html
index d455abc51b..7f6d3c8248 100644
--- a/src/parquet/record/mod.rs.html
+++ b/src/parquet/record/mod.rs.html
@@ -28,6 +28,8 @@
 <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>
 </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
@@ -49,6 +51,7 @@
 
 </span><span class="kw">mod </span>api;
 <span class="kw">pub mod </span>reader;
+<span class="kw">mod </span>record_reader;
 <span class="kw">mod </span>record_writer;
 <span class="kw">mod </span>triplet;
 
@@ -56,6 +59,7 @@
     api::{
         Field, List, ListAccessor, Map, MapAccessor, Row, RowAccessor, RowColumnIter, RowFormatter,
     },
+    record_reader::RecordReader,
     record_writer::RecordWriter,
 };
 </code></pre></div></section></main></body></html>
\ No newline at end of file
diff --git a/src/parquet/record/record_writer.rs.html b/src/parquet/record/record_reader.rs.html
similarity index 82%
copy from src/parquet/record/record_writer.rs.html
copy to src/parquet/record/record_reader.rs.html
index 11cfb6da96..893216b036 100644
--- a/src/parquet/record/record_writer.rs.html
+++ b/src/parquet/record/record_reader.rs.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="Source of the Rust file `parquet/src/record/record_writer.rs`."><title>record_writer.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" [...]
+<!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 `parquet/src/record/record_reader.rs`."><title>record_reader.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" [...]
 <a href="#2" id="2">2</a>
 <a href="#3" id="3">3</a>
 <a href="#4" id="4">4</a>
@@ -28,7 +28,6 @@
 <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>
 </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
@@ -46,18 +45,17 @@
 // specific language governing permissions and limitations
 // under the License.
 
-</span><span class="kw">use </span><span class="kw">crate</span>::schema::types::TypePtr;
+</span><span class="kw">use </span><span class="kw">super</span>::<span class="kw">super</span>::errors::ParquetError;
+<span class="kw">use </span><span class="kw">super</span>::<span class="kw">super</span>::file::reader::RowGroupReader;
 
-<span class="kw">use </span><span class="kw">super</span>::<span class="kw">super</span>::errors::ParquetError;
-<span class="kw">use </span><span class="kw">super</span>::<span class="kw">super</span>::file::writer::SerializedRowGroupWriter;
-
-<span class="kw">pub trait </span>RecordWriter&lt;T&gt; {
-    <span class="kw">fn </span>write_to_row_group&lt;W: std::io::Write + Send&gt;(
-        <span class="kw-2">&amp;</span><span class="self">self</span>,
-        row_group_writer: <span class="kw-2">&amp;mut </span>SerializedRowGroupWriter&lt;W&gt;,
+<span class="doccomment">/// read up to `max_records` records from `row_group_reader` into `self`
+/// The type parameter `T` is used to work around the rust orphan rule
+/// when implementing on types such as `Vec&lt;T&gt;`.
+</span><span class="kw">pub trait </span>RecordReader&lt;T&gt; {
+    <span class="kw">fn </span>read_from_row_group(
+        <span class="kw-2">&amp;mut </span><span class="self">self</span>,
+        row_group_reader: <span class="kw-2">&amp;mut </span><span class="kw">dyn </span>RowGroupReader,
+        num_records: usize,
     ) -&gt; <span class="prelude-ty">Result</span>&lt;(), ParquetError&gt;;
-
-    <span class="doccomment">/// Generated schema
-    </span><span class="kw">fn </span>schema(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; <span class="prelude-ty">Result</span>&lt;TypePtr, ParquetError&gt;;
 }
 </code></pre></div></section></main></body></html>
\ No newline at end of file
diff --git a/src/parquet/record/record_writer.rs.html b/src/parquet/record/record_writer.rs.html
index 11cfb6da96..105f9f5cfc 100644
--- a/src/parquet/record/record_writer.rs.html
+++ b/src/parquet/record/record_writer.rs.html
@@ -29,6 +29,10 @@
 <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>
 </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
@@ -51,7 +55,11 @@
 <span class="kw">use </span><span class="kw">super</span>::<span class="kw">super</span>::errors::ParquetError;
 <span class="kw">use </span><span class="kw">super</span>::<span class="kw">super</span>::file::writer::SerializedRowGroupWriter;
 
-<span class="kw">pub trait </span>RecordWriter&lt;T&gt; {
+<span class="doccomment">/// `write_to_row_group` writes from `self` into `row_group_writer`
+/// `schema` builds the schema used by `row_group_writer`
+/// The type parameter `T` is used to work around the rust orphan rule
+/// when implementing on types such as `&amp;[T]`.
+</span><span class="kw">pub trait </span>RecordWriter&lt;T&gt; {
     <span class="kw">fn </span>write_to_row_group&lt;W: std::io::Write + Send&gt;(
         <span class="kw-2">&amp;</span><span class="self">self</span>,
         row_group_writer: <span class="kw-2">&amp;mut </span>SerializedRowGroupWriter&lt;W&gt;,
diff --git a/src/parquet_derive/lib.rs.html b/src/parquet_derive/lib.rs.html
index 11c6fc5718..9c6be110ef 100644
--- a/src/parquet_derive/lib.rs.html
+++ b/src/parquet_derive/lib.rs.html
@@ -137,6 +137,92 @@
 <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>
 </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
@@ -183,8 +269,8 @@
 /// use parquet::file::writer::SerializedFileWriter;
 ///
 /// use std::sync::Arc;
-</span><span class="comment">//
-</span><span class="doccomment">/// #[derive(ParquetRecordWriter)]
+///
+/// #[derive(ParquetRecordWriter)]
 /// struct ACompleteRecord&lt;&#39;a&gt; {
 ///   pub a_bool: bool,
 ///   pub a_str: &amp;&#39;a str,
@@ -276,4 +362,90 @@
     }
   }).into()
 }
+
+<span class="doccomment">/// Derive flat, simple RecordReader implementations. Works by parsing
+/// a struct tagged with `#[derive(ParquetRecordReader)]` and emitting
+/// the correct writing code for each field of the struct. Column readers
+/// are generated in the order they are defined.
+///
+/// It is up to the programmer to keep the order of the struct
+/// fields lined up with the schema.
+///
+/// Example:
+///
+/// ```ignore
+/// use parquet::file::{serialized_reader::SerializedFileReader, reader::FileReader};
+/// use parquet_derive::{ParquetRecordReader};
+///
+/// #[derive(ParquetRecordReader)]
+/// struct ACompleteRecord {
+///     pub a_bool: bool,
+///     pub a_string: String,
+/// }
+///
+/// pub fn read_some_records() -&gt; Vec&lt;ACompleteRecord&gt; {
+///   let mut samples: Vec&lt;ACompleteRecord&gt; = Vec::new();
+///
+///   let reader = SerializedFileReader::new(file).unwrap();
+///   let mut row_group = reader.get_row_group(0).unwrap();
+///   samples.read_from_row_group(&amp;mut *row_group, 1).unwrap();
+///   samples
+/// }
+/// ```
+///
+</span><span class="attr">#[proc_macro_derive(ParquetRecordReader)]
+</span><span class="kw">pub fn </span>parquet_record_reader(input: proc_macro::TokenStream) -&gt; proc_macro::TokenStream {
+    <span class="kw">let </span>input: DeriveInput = <span class="macro">parse_macro_input!</span>(input <span class="kw">as </span>DeriveInput);
+    <span class="kw">let </span>fields = <span class="kw">match </span>input.data {
+        Data::Struct(DataStruct { fields, .. }) =&gt; fields,
+        Data::Enum(<span class="kw">_</span>) =&gt; <span class="macro">unimplemented!</span>(<span class="string">&quot;Enum currently is not supported&quot;</span>),
+        Data::Union(<span class="kw">_</span>) =&gt; <span class="macro">unimplemented!</span>(<span class="string">&quot;Union currently is not supported&quot;</span>),
+    };
+
+    <span class="kw">let </span>field_infos: Vec&lt;<span class="kw">_</span>&gt; = fields.iter().map(parquet_field::Field::from).collect();
+    <span class="kw">let </span>field_names: Vec&lt;<span class="kw">_</span>&gt; = fields.iter().map(|f| f.ident.clone()).collect();
+    <span class="kw">let </span>reader_snippets: Vec&lt;proc_macro2::TokenStream&gt; =
+        field_infos.iter().map(|x| x.reader_snippet()).collect();
+    <span class="kw">let </span>i: Vec&lt;<span class="kw">_</span>&gt; = (<span class="number">0</span>..reader_snippets.len()).collect();
+
+    <span class="kw">let </span>derived_for = input.ident;
+    <span class="kw">let </span>generics = input.generics;
+
+    (<span class="macro">quote! </span>{
+
+    <span class="kw">impl </span>#generics ::parquet::record::RecordReader&lt;#derived_for #generics&gt; <span class="kw">for </span>Vec&lt;#derived_for #generics&gt; {
+      <span class="kw">fn </span>read_from_row_group(
+        <span class="kw-2">&amp;mut </span><span class="self">self</span>,
+        row_group_reader: <span class="kw-2">&amp;mut </span><span class="kw">dyn </span>::parquet::file::reader::RowGroupReader,
+        num_records: usize,
+      ) -&gt; <span class="prelude-ty">Result</span>&lt;(), ::parquet::errors::ParquetError&gt; {
+        <span class="kw">use </span>::parquet::column::reader::ColumnReader;
+
+        <span class="kw">let </span><span class="kw-2">mut </span>row_group_reader = row_group_reader;
+
+        <span class="kw">for _ in </span><span class="number">0</span>..num_records {
+          <span class="self">self</span>.push(#derived_for {
+            #(
+              #field_names: Default::default()
+            ),*
+          })
+        }
+
+        <span class="kw">let </span>records = <span class="self">self</span>; <span class="comment">// Used by all the reader snippets to be more clear
+
+        </span>#(
+          {
+              <span class="kw">if let </span><span class="prelude-val">Ok</span>(<span class="kw-2">mut </span>column_reader) = row_group_reader.get_column_reader(#i) {
+                  #reader_snippets
+              } <span class="kw">else </span>{
+                  <span class="kw">return </span><span class="prelude-val">Err</span>(::parquet::errors::ParquetError::General(<span class="string">&quot;Failed to get next column&quot;</span>.into()))
+              }
+          }
+        );*
+
+        <span class="prelude-val">Ok</span>(())
+      }
+    }
+  }).into()
+}
 </code></pre></div></section></main></body></html>
\ No newline at end of file
diff --git a/src/parquet_derive/parquet_field.rs.html b/src/parquet_derive/parquet_field.rs.html
index 168fb8f9b7..965ace6335 100644
--- a/src/parquet_derive/parquet_field.rs.html
+++ b/src/parquet_derive/parquet_field.rs.html
@@ -1142,6 +1142,302 @@
 <a href="#1142" id="1142">1142</a>
 <a href="#1143" id="1143">1143</a>
 <a href="#1144" id="1144">1144</a>
+<a href="#1145" id="1145">1145</a>
+<a href="#1146" id="1146">1146</a>
+<a href="#1147" id="1147">1147</a>
+<a href="#1148" id="1148">1148</a>
+<a href="#1149" id="1149">1149</a>
+<a href="#1150" id="1150">1150</a>
+<a href="#1151" id="1151">1151</a>
+<a href="#1152" id="1152">1152</a>
+<a href="#1153" id="1153">1153</a>
+<a href="#1154" id="1154">1154</a>
+<a href="#1155" id="1155">1155</a>
+<a href="#1156" id="1156">1156</a>
+<a href="#1157" id="1157">1157</a>
+<a href="#1158" id="1158">1158</a>
+<a href="#1159" id="1159">1159</a>
+<a href="#1160" id="1160">1160</a>
+<a href="#1161" id="1161">1161</a>
+<a href="#1162" id="1162">1162</a>
+<a href="#1163" id="1163">1163</a>
+<a href="#1164" id="1164">1164</a>
+<a href="#1165" id="1165">1165</a>
+<a href="#1166" id="1166">1166</a>
+<a href="#1167" id="1167">1167</a>
+<a href="#1168" id="1168">1168</a>
+<a href="#1169" id="1169">1169</a>
+<a href="#1170" id="1170">1170</a>
+<a href="#1171" id="1171">1171</a>
+<a href="#1172" id="1172">1172</a>
+<a href="#1173" id="1173">1173</a>
+<a href="#1174" id="1174">1174</a>
+<a href="#1175" id="1175">1175</a>
+<a href="#1176" id="1176">1176</a>
+<a href="#1177" id="1177">1177</a>
+<a href="#1178" id="1178">1178</a>
+<a href="#1179" id="1179">1179</a>
+<a href="#1180" id="1180">1180</a>
+<a href="#1181" id="1181">1181</a>
+<a href="#1182" id="1182">1182</a>
+<a href="#1183" id="1183">1183</a>
+<a href="#1184" id="1184">1184</a>
+<a href="#1185" id="1185">1185</a>
+<a href="#1186" id="1186">1186</a>
+<a href="#1187" id="1187">1187</a>
+<a href="#1188" id="1188">1188</a>
+<a href="#1189" id="1189">1189</a>
+<a href="#1190" id="1190">1190</a>
+<a href="#1191" id="1191">1191</a>
+<a href="#1192" id="1192">1192</a>
+<a href="#1193" id="1193">1193</a>
+<a href="#1194" id="1194">1194</a>
+<a href="#1195" id="1195">1195</a>
+<a href="#1196" id="1196">1196</a>
+<a href="#1197" id="1197">1197</a>
+<a href="#1198" id="1198">1198</a>
+<a href="#1199" id="1199">1199</a>
+<a href="#1200" id="1200">1200</a>
+<a href="#1201" id="1201">1201</a>
+<a href="#1202" id="1202">1202</a>
+<a href="#1203" id="1203">1203</a>
+<a href="#1204" id="1204">1204</a>
+<a href="#1205" id="1205">1205</a>
+<a href="#1206" id="1206">1206</a>
+<a href="#1207" id="1207">1207</a>
+<a href="#1208" id="1208">1208</a>
+<a href="#1209" id="1209">1209</a>
+<a href="#1210" id="1210">1210</a>
+<a href="#1211" id="1211">1211</a>
+<a href="#1212" id="1212">1212</a>
+<a href="#1213" id="1213">1213</a>
+<a href="#1214" id="1214">1214</a>
+<a href="#1215" id="1215">1215</a>
+<a href="#1216" id="1216">1216</a>
+<a href="#1217" id="1217">1217</a>
+<a href="#1218" id="1218">1218</a>
+<a href="#1219" id="1219">1219</a>
+<a href="#1220" id="1220">1220</a>
+<a href="#1221" id="1221">1221</a>
+<a href="#1222" id="1222">1222</a>
+<a href="#1223" id="1223">1223</a>
+<a href="#1224" id="1224">1224</a>
+<a href="#1225" id="1225">1225</a>
+<a href="#1226" id="1226">1226</a>
+<a href="#1227" id="1227">1227</a>
+<a href="#1228" id="1228">1228</a>
+<a href="#1229" id="1229">1229</a>
+<a href="#1230" id="1230">1230</a>
+<a href="#1231" id="1231">1231</a>
+<a href="#1232" id="1232">1232</a>
+<a href="#1233" id="1233">1233</a>
+<a href="#1234" id="1234">1234</a>
+<a href="#1235" id="1235">1235</a>
+<a href="#1236" id="1236">1236</a>
+<a href="#1237" id="1237">1237</a>
+<a href="#1238" id="1238">1238</a>
+<a href="#1239" id="1239">1239</a>
+<a href="#1240" id="1240">1240</a>
+<a href="#1241" id="1241">1241</a>
+<a href="#1242" id="1242">1242</a>
+<a href="#1243" id="1243">1243</a>
+<a href="#1244" id="1244">1244</a>
+<a href="#1245" id="1245">1245</a>
+<a href="#1246" id="1246">1246</a>
+<a href="#1247" id="1247">1247</a>
+<a href="#1248" id="1248">1248</a>
+<a href="#1249" id="1249">1249</a>
+<a href="#1250" id="1250">1250</a>
+<a href="#1251" id="1251">1251</a>
+<a href="#1252" id="1252">1252</a>
+<a href="#1253" id="1253">1253</a>
+<a href="#1254" id="1254">1254</a>
+<a href="#1255" id="1255">1255</a>
+<a href="#1256" id="1256">1256</a>
+<a href="#1257" id="1257">1257</a>
+<a href="#1258" id="1258">1258</a>
+<a href="#1259" id="1259">1259</a>
+<a href="#1260" id="1260">1260</a>
+<a href="#1261" id="1261">1261</a>
+<a href="#1262" id="1262">1262</a>
+<a href="#1263" id="1263">1263</a>
+<a href="#1264" id="1264">1264</a>
+<a href="#1265" id="1265">1265</a>
+<a href="#1266" id="1266">1266</a>
+<a href="#1267" id="1267">1267</a>
+<a href="#1268" id="1268">1268</a>
+<a href="#1269" id="1269">1269</a>
+<a href="#1270" id="1270">1270</a>
+<a href="#1271" id="1271">1271</a>
+<a href="#1272" id="1272">1272</a>
+<a href="#1273" id="1273">1273</a>
+<a href="#1274" id="1274">1274</a>
+<a href="#1275" id="1275">1275</a>
+<a href="#1276" id="1276">1276</a>
+<a href="#1277" id="1277">1277</a>
+<a href="#1278" id="1278">1278</a>
+<a href="#1279" id="1279">1279</a>
+<a href="#1280" id="1280">1280</a>
+<a href="#1281" id="1281">1281</a>
+<a href="#1282" id="1282">1282</a>
+<a href="#1283" id="1283">1283</a>
+<a href="#1284" id="1284">1284</a>
+<a href="#1285" id="1285">1285</a>
+<a href="#1286" id="1286">1286</a>
+<a href="#1287" id="1287">1287</a>
+<a href="#1288" id="1288">1288</a>
+<a href="#1289" id="1289">1289</a>
+<a href="#1290" id="1290">1290</a>
+<a href="#1291" id="1291">1291</a>
+<a href="#1292" id="1292">1292</a>
+<a href="#1293" id="1293">1293</a>
+<a href="#1294" id="1294">1294</a>
+<a href="#1295" id="1295">1295</a>
+<a href="#1296" id="1296">1296</a>
+<a href="#1297" id="1297">1297</a>
+<a href="#1298" id="1298">1298</a>
+<a href="#1299" id="1299">1299</a>
+<a href="#1300" id="1300">1300</a>
+<a href="#1301" id="1301">1301</a>
+<a href="#1302" id="1302">1302</a>
+<a href="#1303" id="1303">1303</a>
+<a href="#1304" id="1304">1304</a>
+<a href="#1305" id="1305">1305</a>
+<a href="#1306" id="1306">1306</a>
+<a href="#1307" id="1307">1307</a>
+<a href="#1308" id="1308">1308</a>
+<a href="#1309" id="1309">1309</a>
+<a href="#1310" id="1310">1310</a>
+<a href="#1311" id="1311">1311</a>
+<a href="#1312" id="1312">1312</a>
+<a href="#1313" id="1313">1313</a>
+<a href="#1314" id="1314">1314</a>
+<a href="#1315" id="1315">1315</a>
+<a href="#1316" id="1316">1316</a>
+<a href="#1317" id="1317">1317</a>
+<a href="#1318" id="1318">1318</a>
+<a href="#1319" id="1319">1319</a>
+<a href="#1320" id="1320">1320</a>
+<a href="#1321" id="1321">1321</a>
+<a href="#1322" id="1322">1322</a>
+<a href="#1323" id="1323">1323</a>
+<a href="#1324" id="1324">1324</a>
+<a href="#1325" id="1325">1325</a>
+<a href="#1326" id="1326">1326</a>
+<a href="#1327" id="1327">1327</a>
+<a href="#1328" id="1328">1328</a>
+<a href="#1329" id="1329">1329</a>
+<a href="#1330" id="1330">1330</a>
+<a href="#1331" id="1331">1331</a>
+<a href="#1332" id="1332">1332</a>
+<a href="#1333" id="1333">1333</a>
+<a href="#1334" id="1334">1334</a>
+<a href="#1335" id="1335">1335</a>
+<a href="#1336" id="1336">1336</a>
+<a href="#1337" id="1337">1337</a>
+<a href="#1338" id="1338">1338</a>
+<a href="#1339" id="1339">1339</a>
+<a href="#1340" id="1340">1340</a>
+<a href="#1341" id="1341">1341</a>
+<a href="#1342" id="1342">1342</a>
+<a href="#1343" id="1343">1343</a>
+<a href="#1344" id="1344">1344</a>
+<a href="#1345" id="1345">1345</a>
+<a href="#1346" id="1346">1346</a>
+<a href="#1347" id="1347">1347</a>
+<a href="#1348" id="1348">1348</a>
+<a href="#1349" id="1349">1349</a>
+<a href="#1350" id="1350">1350</a>
+<a href="#1351" id="1351">1351</a>
+<a href="#1352" id="1352">1352</a>
+<a href="#1353" id="1353">1353</a>
+<a href="#1354" id="1354">1354</a>
+<a href="#1355" id="1355">1355</a>
+<a href="#1356" id="1356">1356</a>
+<a href="#1357" id="1357">1357</a>
+<a href="#1358" id="1358">1358</a>
+<a href="#1359" id="1359">1359</a>
+<a href="#1360" id="1360">1360</a>
+<a href="#1361" id="1361">1361</a>
+<a href="#1362" id="1362">1362</a>
+<a href="#1363" id="1363">1363</a>
+<a href="#1364" id="1364">1364</a>
+<a href="#1365" id="1365">1365</a>
+<a href="#1366" id="1366">1366</a>
+<a href="#1367" id="1367">1367</a>
+<a href="#1368" id="1368">1368</a>
+<a href="#1369" id="1369">1369</a>
+<a href="#1370" id="1370">1370</a>
+<a href="#1371" id="1371">1371</a>
+<a href="#1372" id="1372">1372</a>
+<a href="#1373" id="1373">1373</a>
+<a href="#1374" id="1374">1374</a>
+<a href="#1375" id="1375">1375</a>
+<a href="#1376" id="1376">1376</a>
+<a href="#1377" id="1377">1377</a>
+<a href="#1378" id="1378">1378</a>
+<a href="#1379" id="1379">1379</a>
+<a href="#1380" id="1380">1380</a>
+<a href="#1381" id="1381">1381</a>
+<a href="#1382" id="1382">1382</a>
+<a href="#1383" id="1383">1383</a>
+<a href="#1384" id="1384">1384</a>
+<a href="#1385" id="1385">1385</a>
+<a href="#1386" id="1386">1386</a>
+<a href="#1387" id="1387">1387</a>
+<a href="#1388" id="1388">1388</a>
+<a href="#1389" id="1389">1389</a>
+<a href="#1390" id="1390">1390</a>
+<a href="#1391" id="1391">1391</a>
+<a href="#1392" id="1392">1392</a>
+<a href="#1393" id="1393">1393</a>
+<a href="#1394" id="1394">1394</a>
+<a href="#1395" id="1395">1395</a>
+<a href="#1396" id="1396">1396</a>
+<a href="#1397" id="1397">1397</a>
+<a href="#1398" id="1398">1398</a>
+<a href="#1399" id="1399">1399</a>
+<a href="#1400" id="1400">1400</a>
+<a href="#1401" id="1401">1401</a>
+<a href="#1402" id="1402">1402</a>
+<a href="#1403" id="1403">1403</a>
+<a href="#1404" id="1404">1404</a>
+<a href="#1405" id="1405">1405</a>
+<a href="#1406" id="1406">1406</a>
+<a href="#1407" id="1407">1407</a>
+<a href="#1408" id="1408">1408</a>
+<a href="#1409" id="1409">1409</a>
+<a href="#1410" id="1410">1410</a>
+<a href="#1411" id="1411">1411</a>
+<a href="#1412" id="1412">1412</a>
+<a href="#1413" id="1413">1413</a>
+<a href="#1414" id="1414">1414</a>
+<a href="#1415" id="1415">1415</a>
+<a href="#1416" id="1416">1416</a>
+<a href="#1417" id="1417">1417</a>
+<a href="#1418" id="1418">1418</a>
+<a href="#1419" id="1419">1419</a>
+<a href="#1420" id="1420">1420</a>
+<a href="#1421" id="1421">1421</a>
+<a href="#1422" id="1422">1422</a>
+<a href="#1423" id="1423">1423</a>
+<a href="#1424" id="1424">1424</a>
+<a href="#1425" id="1425">1425</a>
+<a href="#1426" id="1426">1426</a>
+<a href="#1427" id="1427">1427</a>
+<a href="#1428" id="1428">1428</a>
+<a href="#1429" id="1429">1429</a>
+<a href="#1430" id="1430">1430</a>
+<a href="#1431" id="1431">1431</a>
+<a href="#1432" id="1432">1432</a>
+<a href="#1433" id="1433">1433</a>
+<a href="#1434" id="1434">1434</a>
+<a href="#1435" id="1435">1435</a>
+<a href="#1436" id="1436">1436</a>
+<a href="#1437" id="1437">1437</a>
+<a href="#1438" id="1438">1438</a>
+<a href="#1439" id="1439">1439</a>
+<a href="#1440" id="1440">1440</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
@@ -1363,6 +1659,72 @@
         }
     }
 
+    <span class="doccomment">/// Takes the parsed field of the struct and emits a valid
+    /// column reader snippet. Should match exactly what you
+    /// would write by hand.
+    ///
+    /// Can only generate writers for basic structs, for example:
+    ///
+    /// struct Record {
+    ///   a_bool: bool
+    /// }
+    ///
+    /// but not
+    ///
+    /// struct UnsupportedNestedRecord {
+    ///   a_property: bool,
+    ///   nested_record: Record
+    /// }
+    ///
+    /// because this parsing logic is not sophisticated enough for definition
+    /// levels beyond 2.
+    ///
+    /// `Option` types and references not supported
+    </span><span class="kw">pub fn </span>reader_snippet(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; proc_macro2::TokenStream {
+        <span class="kw">let </span>ident = <span class="kw-2">&amp;</span><span class="self">self</span>.ident;
+        <span class="kw">let </span>column_reader = <span class="self">self</span>.ty.column_reader();
+        <span class="kw">let </span>parquet_type = <span class="self">self</span>.ty.physical_type_as_rust();
+
+        <span class="comment">// generate the code to read the column into a vector `vals`
+        </span><span class="kw">let </span>write_batch_expr = <span class="macro">quote! </span>{
+            <span class="kw">let </span><span class="kw-2">mut </span>vals_vec = Vec::new();
+            vals_vec.resize(num_records, Default::default());
+            <span class="kw">let </span><span class="kw-2">mut </span>vals: <span class="kw-2">&amp;mut </span>[#parquet_type] = vals_vec.as_mut_slice();
+            <span class="kw">if let </span>#column_reader(<span class="kw-2">mut </span>typed) = column_reader {
+                typed.read_records(num_records, <span class="prelude-val">None</span>, <span class="prelude-val">None</span>, vals)<span class="question-mark">?</span>;
+            } <span class="kw">else </span>{
+                <span class="macro">panic!</span>(<span class="string">&quot;Schema and struct disagree on type for {}&quot;</span>, <span class="macro">stringify!</span>{#ident});
+            }
+        };
+
+        <span class="comment">// generate the code to convert each element of `vals` to the correct type and then write
+        // it to its field in the corresponding struct
+        </span><span class="kw">let </span>vals_writer = <span class="kw">match </span><span class="kw-2">&amp;</span><span class="self">self</span>.ty {
+            Type::TypePath(<span class="kw">_</span>) =&gt; <span class="self">self</span>.copied_direct_fields(),
+            Type::Reference(<span class="kw">_</span>, <span class="kw-2">ref </span>first_type) =&gt; <span class="kw">match </span><span class="kw-2">**</span>first_type {
+                Type::TypePath(<span class="kw">_</span>) =&gt; <span class="self">self</span>.copied_direct_fields(),
+                Type::Slice(<span class="kw-2">ref </span>second_type) =&gt; <span class="kw">match </span><span class="kw-2">**</span>second_type {
+                    Type::TypePath(<span class="kw">_</span>) =&gt; <span class="self">self</span>.copied_direct_fields(),
+                    <span class="kw-2">ref </span>f =&gt; <span class="macro">unimplemented!</span>(<span class="string">&quot;Unsupported: {:#?}&quot;</span>, f),
+                },
+                <span class="kw-2">ref </span>f =&gt; <span class="macro">unimplemented!</span>(<span class="string">&quot;Unsupported: {:#?}&quot;</span>, f),
+            },
+            Type::Vec(<span class="kw-2">ref </span>first_type) =&gt; <span class="kw">match </span><span class="kw-2">**</span>first_type {
+                Type::TypePath(<span class="kw">_</span>) =&gt; <span class="self">self</span>.copied_direct_fields(),
+                <span class="kw-2">ref </span>f =&gt; <span class="macro">unimplemented!</span>(<span class="string">&quot;Unsupported: {:#?}&quot;</span>, f),
+            },
+            f =&gt; <span class="macro">unimplemented!</span>(<span class="string">&quot;Unsupported: {:#?}&quot;</span>, f),
+        };
+
+        <span class="macro">quote! </span>{
+            {
+                #write_batch_expr
+
+                #vals_writer
+            }
+        }
+    }
+
     <span class="kw">pub fn </span>parquet_type(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; proc_macro2::TokenStream {
         <span class="comment">// TODO: Support group types
         // TODO: Add length if dealing with fixedlenbinary
@@ -1463,27 +1825,31 @@
         }
     }
 
-    <span class="kw">fn </span>copied_direct_vals(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; proc_macro2::TokenStream {
+    <span class="comment">// generates code to read `field_name` from each record into a vector `vals`
+    </span><span class="kw">fn </span>copied_direct_vals(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; proc_macro2::TokenStream {
         <span class="kw">let </span>field_name = <span class="kw-2">&amp;</span><span class="self">self</span>.ident;
-        <span class="kw">let </span>is_a_byte_buf = <span class="self">self</span>.is_a_byte_buf;
-        <span class="kw">let </span>is_a_timestamp = <span class="self">self</span>.third_party_type == <span class="prelude-val">Some</span>(ThirdPartyType::ChronoNaiveDateTime);
-        <span class="kw">let </span>is_a_date = <span class="self">self</span>.third_party_type == <span class="prelude-val">Some</span>(ThirdPartyType::ChronoNaiveDate);
-        <span class="kw">let </span>is_a_uuid = <span class="self">self</span>.third_party_type == <span class="prelude-val">Some</span>(ThirdPartyType::Uuid);
 
-        <span class="kw">let </span>access = <span class="kw">if </span>is_a_timestamp {
-            <span class="macro">quote! </span>{ rec.#field_name.timestamp_millis() }
-        } <span class="kw">else if </span>is_a_date {
-            <span class="macro">quote! </span>{ rec.#field_name.signed_duration_since(::chrono::NaiveDate::from_ymd(<span class="number">1970</span>, <span class="number">1</span>, <span class="number">1</span>)).num_days() <span class="kw">as </span>i32 }
-        } <span class="kw">else if </span>is_a_uuid {
-            <span class="macro">quote! </span>{ (<span class="kw-2">&amp;</span>rec.#field_name.to_string()[..]).into() }
-        } <span class="kw">else if </span>is_a_byte_buf {
-            <span class="macro">quote! </span>{ (<span class="kw-2">&amp;</span>rec.#field_name[..]).into() }
-        } <span class="kw">else </span>{
-            <span class="comment">// Type might need converting to a physical type
-            </span><span class="kw">match </span><span class="self">self</span>.ty.physical_type() {
-                parquet::basic::Type::INT32 =&gt; <span class="macro">quote! </span>{ rec.#field_name <span class="kw">as </span>i32 },
-                parquet::basic::Type::INT64 =&gt; <span class="macro">quote! </span>{ rec.#field_name <span class="kw">as </span>i64 },
-                <span class="kw">_ </span>=&gt; <span class="macro">quote! </span>{ rec.#field_name },
+        <span class="kw">let </span>access = <span class="kw">match </span><span class="self">self</span>.third_party_type {
+            <span class="prelude-val">Some</span>(ThirdPartyType::ChronoNaiveDateTime) =&gt; {
+                <span class="macro">quote! </span>{ rec.#field_name.timestamp_millis() }
+            }
+            <span class="prelude-val">Some</span>(ThirdPartyType::ChronoNaiveDate) =&gt; {
+                <span class="macro">quote! </span>{ rec.#field_name.signed_duration_since(::chrono::NaiveDate::from_ymd(<span class="number">1970</span>, <span class="number">1</span>, <span class="number">1</span>)).num_days() <span class="kw">as </span>i32 }
+            }
+            <span class="prelude-val">Some</span>(ThirdPartyType::Uuid) =&gt; {
+                <span class="macro">quote! </span>{ (<span class="kw-2">&amp;</span>rec.#field_name.to_string()[..]).into() }
+            }
+            <span class="kw">_ </span>=&gt; {
+                <span class="kw">if </span><span class="self">self</span>.is_a_byte_buf {
+                    <span class="macro">quote! </span>{ (<span class="kw-2">&amp;</span>rec.#field_name[..]).into() }
+                } <span class="kw">else </span>{
+                    <span class="comment">// Type might need converting to a physical type
+                    </span><span class="kw">match </span><span class="self">self</span>.ty.physical_type() {
+                        parquet::basic::Type::INT32 =&gt; <span class="macro">quote! </span>{ rec.#field_name <span class="kw">as </span>i32 },
+                        parquet::basic::Type::INT64 =&gt; <span class="macro">quote! </span>{ rec.#field_name <span class="kw">as </span>i64 },
+                        <span class="kw">_ </span>=&gt; <span class="macro">quote! </span>{ rec.#field_name },
+                    }
+                }
             }
         };
 
@@ -1492,6 +1858,48 @@
         }
     }
 
+    <span class="comment">// generates code to read a vector `records` into `field_name` for each record
+    </span><span class="kw">fn </span>copied_direct_fields(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; proc_macro2::TokenStream {
+        <span class="kw">let </span>field_name = <span class="kw-2">&amp;</span><span class="self">self</span>.ident;
+
+        <span class="kw">let </span>value = <span class="kw">match </span><span class="self">self</span>.third_party_type {
+            <span class="prelude-val">Some</span>(ThirdPartyType::ChronoNaiveDateTime) =&gt; {
+                <span class="macro">quote! </span>{ ::chrono::naive::NaiveDateTime::from_timestamp_millis(vals[i]).unwrap() }
+            }
+            <span class="prelude-val">Some</span>(ThirdPartyType::ChronoNaiveDate) =&gt; {
+                <span class="macro">quote! </span>{
+                    ::chrono::naive::NaiveDate::from_num_days_from_ce_opt(vals[i]
+                + ((::chrono::naive::NaiveDate::from_ymd_opt(<span class="number">1970</span>, <span class="number">1</span>, <span class="number">1</span>).unwrap()
+                        .signed_duration_since(
+                            ::chrono::naive::NaiveDate::from_ymd_opt(<span class="number">0</span>, <span class="number">12</span>, <span class="number">31</span>).unwrap()
+                        )
+                   ).num_days()) <span class="kw">as </span>i32).unwrap()
+                }
+            }
+            <span class="prelude-val">Some</span>(ThirdPartyType::Uuid) =&gt; {
+                <span class="macro">quote! </span>{ ::uuid::Uuid::parse_str(vals[i].data().convert()).unwrap() }
+            }
+            <span class="kw">_ </span>=&gt; <span class="kw">match </span><span class="kw-2">&amp;</span><span class="self">self</span>.ty {
+                Type::TypePath(<span class="kw">_</span>) =&gt; <span class="kw">match </span><span class="self">self</span>.ty.last_part().as_str() {
+                    <span class="string">&quot;String&quot; </span>=&gt; <span class="macro">quote! </span>{ String::from(std::str::from_utf8(vals[i].data())
+                    .expect(<span class="string">&quot;invalid UTF-8 sequence&quot;</span>)) },
+                    t =&gt; {
+                        <span class="kw">let </span>s: proc_macro2::TokenStream = t.parse().unwrap();
+                        <span class="macro">quote! </span>{ vals[i] <span class="kw">as </span>#s }
+                    }
+                },
+                Type::Vec(<span class="kw">_</span>) =&gt; <span class="macro">quote! </span>{ vals[i].data().to_vec() },
+                f =&gt; <span class="macro">unimplemented!</span>(<span class="string">&quot;Unsupported: {:#?}&quot;</span>, f),
+            },
+        };
+
+        <span class="macro">quote! </span>{
+            <span class="kw">for </span>(i, r) <span class="kw">in </span><span class="kw-2">&amp;mut </span>records[..num_records].iter_mut().enumerate() {
+                r.#field_name = #value;
+            }
+        }
+    }
+
     <span class="kw">fn </span>optional_definition_levels(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; proc_macro2::TokenStream {
         <span class="kw">let </span>field_name = <span class="kw-2">&amp;</span><span class="self">self</span>.ident;
 
@@ -1540,6 +1948,29 @@
         }
     }
 
+    <span class="doccomment">/// Takes a rust type and returns the appropriate
+    /// parquet-rs column reader
+    </span><span class="kw">fn </span>column_reader(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; syn::TypePath {
+        <span class="kw">use </span>parquet::basic::Type <span class="kw">as </span>BasicType;
+
+        <span class="kw">match </span><span class="self">self</span>.physical_type() {
+            BasicType::BOOLEAN =&gt; {
+                <span class="macro">syn::parse_quote!</span>(ColumnReader::BoolColumnReader)
+            }
+            BasicType::INT32 =&gt; <span class="macro">syn::parse_quote!</span>(ColumnReader::Int32ColumnReader),
+            BasicType::INT64 =&gt; <span class="macro">syn::parse_quote!</span>(ColumnReader::Int64ColumnReader),
+            BasicType::INT96 =&gt; <span class="macro">syn::parse_quote!</span>(ColumnReader::Int96ColumnReader),
+            BasicType::FLOAT =&gt; <span class="macro">syn::parse_quote!</span>(ColumnReader::FloatColumnReader),
+            BasicType::DOUBLE =&gt; <span class="macro">syn::parse_quote!</span>(ColumnReader::DoubleColumnReader),
+            BasicType::BYTE_ARRAY =&gt; {
+                <span class="macro">syn::parse_quote!</span>(ColumnReader::ByteArrayColumnReader)
+            }
+            BasicType::FIXED_LEN_BYTE_ARRAY =&gt; {
+                <span class="macro">syn::parse_quote!</span>(ColumnReader::FixedLenByteArrayColumnReader)
+            }
+        }
+    }
+
     <span class="doccomment">/// Helper to simplify a nested field definition to its leaf type
     ///
     /// Ex:
@@ -1659,6 +2090,23 @@
         }
     }
 
+    <span class="kw">fn </span>physical_type_as_rust(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; proc_macro2::TokenStream {
+        <span class="kw">use </span>parquet::basic::Type <span class="kw">as </span>BasicType;
+
+        <span class="kw">match </span><span class="self">self</span>.physical_type() {
+            BasicType::BOOLEAN =&gt; <span class="macro">quote! </span>{ bool },
+            BasicType::INT32 =&gt; <span class="macro">quote! </span>{ i32 },
+            BasicType::INT64 =&gt; <span class="macro">quote! </span>{ i64 },
+            BasicType::INT96 =&gt; <span class="macro">unimplemented!</span>(<span class="string">&quot;96-bit int currently is not supported&quot;</span>),
+            BasicType::FLOAT =&gt; <span class="macro">quote! </span>{ f32 },
+            BasicType::DOUBLE =&gt; <span class="macro">quote! </span>{ f64 },
+            BasicType::BYTE_ARRAY =&gt; <span class="macro">quote! </span>{ ::parquet::data_type::ByteArray },
+            BasicType::FIXED_LEN_BYTE_ARRAY =&gt; {
+                <span class="macro">quote! </span>{ ::parquet::data_type::FixedLenByteArray }
+            }
+        }
+    }
+
     <span class="kw">fn </span>logical_type(<span class="kw-2">&amp;</span><span class="self">self</span>) -&gt; proc_macro2::TokenStream {
         <span class="kw">let </span>last_part = <span class="self">self</span>.last_part();
         <span class="kw">let </span>leaf_type = <span class="self">self</span>.leaf_type_recursive();
@@ -1857,6 +2305,39 @@
         )
     }
 
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>test_generating_a_simple_reader_snippet() {
+        <span class="kw">let </span>snippet: proc_macro2::TokenStream = <span class="macro">quote! </span>{
+          <span class="kw">struct </span>ABoringStruct {
+            counter: usize,
+          }
+        };
+
+        <span class="kw">let </span>fields = extract_fields(snippet);
+        <span class="kw">let </span>counter = Field::from(<span class="kw-2">&amp;</span>fields[<span class="number">0</span>]);
+
+        <span class="kw">let </span>snippet = counter.reader_snippet().to_string();
+        <span class="macro">assert_eq!</span>(
+            snippet,
+            (<span class="macro">quote! </span>{
+                 {
+                     <span class="kw">let </span><span class="kw-2">mut </span>vals_vec = Vec::new();
+                     vals_vec.resize(num_records, Default::default());
+                     <span class="kw">let </span><span class="kw-2">mut </span>vals: <span class="kw-2">&amp;mut</span>[i64] = vals_vec.as_mut_slice();
+                     <span class="kw">if let </span>ColumnReader::Int64ColumnReader(<span class="kw-2">mut </span>typed) = column_reader {
+                         typed.read_records(num_records, <span class="prelude-val">None</span>, <span class="prelude-val">None</span>, vals)<span class="question-mark">?</span>;
+                     } <span class="kw">else </span>{
+                         <span class="macro">panic!</span>(<span class="string">&quot;Schema and struct disagree on type for {}&quot;</span>, <span class="macro">stringify!</span>{ counter });
+                     }
+                     <span class="kw">for </span>(i, r) <span class="kw">in </span><span class="kw-2">&amp;mut </span>records[..num_records].iter_mut().enumerate() {
+                         r.counter = vals[i] <span class="kw">as </span>usize;
+                     }
+                 }
+            })
+            .to_string()
+        )
+    }
+
     <span class="attr">#[test]
     </span><span class="kw">fn </span>test_optional_to_writer_snippet() {
         <span class="kw">let </span>struct_def: proc_macro2::TokenStream = <span class="macro">quote! </span>{
@@ -1966,6 +2447,32 @@
         );
     }
 
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>test_converting_to_column_reader_type() {
+        <span class="kw">let </span>snippet: proc_macro2::TokenStream = <span class="macro">quote! </span>{
+          <span class="kw">struct </span>ABasicStruct {
+            yes_no: bool,
+            name: String,
+          }
+        };
+
+        <span class="kw">let </span>fields = extract_fields(snippet);
+        <span class="kw">let </span>processed: Vec&lt;<span class="kw">_</span>&gt; = fields.iter().map(Field::from).collect();
+
+        <span class="kw">let </span>column_readers: Vec&lt;<span class="kw">_</span>&gt; = processed
+            .iter()
+            .map(|field| field.ty.column_reader())
+            .collect();
+
+        <span class="macro">assert_eq!</span>(
+            column_readers,
+            <span class="macro">vec!</span>[
+                <span class="macro">syn::parse_quote!</span>(ColumnReader::BoolColumnReader),
+                <span class="macro">syn::parse_quote!</span>(ColumnReader::ByteArrayColumnReader)
+            ]
+        );
+    }
+
     <span class="attr">#[test]
     </span><span class="kw">fn </span>convert_basic_struct() {
         <span class="kw">let </span>snippet: proc_macro2::TokenStream = <span class="macro">quote! </span>{
@@ -2139,7 +2646,7 @@
     }
 
     <span class="attr">#[test]
-    </span><span class="kw">fn </span>test_chrono_timestamp_millis() {
+    </span><span class="kw">fn </span>test_chrono_timestamp_millis_write() {
         <span class="kw">let </span>snippet: proc_macro2::TokenStream = <span class="macro">quote! </span>{
           <span class="kw">struct </span>ATimestampStruct {
             henceforth: chrono::NaiveDateTime,
@@ -2182,7 +2689,34 @@
     }
 
     <span class="attr">#[test]
-    </span><span class="kw">fn </span>test_chrono_date() {
+    </span><span class="kw">fn </span>test_chrono_timestamp_millis_read() {
+        <span class="kw">let </span>snippet: proc_macro2::TokenStream = <span class="macro">quote! </span>{
+          <span class="kw">struct </span>ATimestampStruct {
+            henceforth: chrono::NaiveDateTime,
+          }
+        };
+
+        <span class="kw">let </span>fields = extract_fields(snippet);
+        <span class="kw">let </span>when = Field::from(<span class="kw-2">&amp;</span>fields[<span class="number">0</span>]);
+        <span class="macro">assert_eq!</span>(when.reader_snippet().to_string(),(<span class="macro">quote!</span>{
+            {
+                <span class="kw">let </span><span class="kw-2">mut </span>vals_vec = Vec::new();
+                vals_vec.resize(num_records, Default::default());
+                <span class="kw">let </span><span class="kw-2">mut </span>vals: <span class="kw-2">&amp;mut</span>[i64] = vals_vec.as_mut_slice();
+                <span class="kw">if let </span>ColumnReader::Int64ColumnReader(<span class="kw-2">mut </span>typed) = column_reader {
+                    typed.read_records(num_records, <span class="prelude-val">None</span>, <span class="prelude-val">None</span>, vals)<span class="question-mark">?</span>;
+                } <span class="kw">else </span>{
+                    <span class="macro">panic!</span>(<span class="string">&quot;Schema and struct disagree on type for {}&quot;</span>, <span class="macro">stringify!</span>{ henceforth });
+                }
+                <span class="kw">for </span>(i, r) <span class="kw">in </span><span class="kw-2">&amp;mut </span>records[..num_records].iter_mut().enumerate() {
+                    r.henceforth = ::chrono::naive::NaiveDateTime::from_timestamp_millis(vals[i]).unwrap();
+                }
+            }
+        }).to_string());
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>test_chrono_date_write() {
         <span class="kw">let </span>snippet: proc_macro2::TokenStream = <span class="macro">quote! </span>{
           <span class="kw">struct </span>ATimestampStruct {
             henceforth: chrono::NaiveDate,
@@ -2225,7 +2759,38 @@
     }
 
     <span class="attr">#[test]
-    </span><span class="kw">fn </span>test_uuid() {
+    </span><span class="kw">fn </span>test_chrono_date_read() {
+        <span class="kw">let </span>snippet: proc_macro2::TokenStream = <span class="macro">quote! </span>{
+          <span class="kw">struct </span>ATimestampStruct {
+            henceforth: chrono::NaiveDate,
+          }
+        };
+
+        <span class="kw">let </span>fields = extract_fields(snippet);
+        <span class="kw">let </span>when = Field::from(<span class="kw-2">&amp;</span>fields[<span class="number">0</span>]);
+        <span class="macro">assert_eq!</span>(when.reader_snippet().to_string(),(<span class="macro">quote!</span>{
+            {
+                <span class="kw">let </span><span class="kw-2">mut </span>vals_vec = Vec::new();
+                vals_vec.resize(num_records, Default::default());
+                <span class="kw">let </span><span class="kw-2">mut </span>vals: <span class="kw-2">&amp;mut </span>[i32] = vals_vec.as_mut_slice();
+                <span class="kw">if let </span>ColumnReader::Int32ColumnReader(<span class="kw-2">mut </span>typed) = column_reader {
+                    typed.read_records(num_records, <span class="prelude-val">None</span>, <span class="prelude-val">None</span>, vals)<span class="question-mark">?</span>;
+                } <span class="kw">else </span>{
+                    <span class="macro">panic!</span>(<span class="string">&quot;Schema and struct disagree on type for {}&quot;</span>, <span class="macro">stringify!</span>{ henceforth });
+                }
+                <span class="kw">for </span>(i, r) <span class="kw">in </span><span class="kw-2">&amp;mut </span>records[..num_records].iter_mut().enumerate() {
+                    r.henceforth = ::chrono::naive::NaiveDate::from_num_days_from_ce_opt(vals[i]
+                        + ((::chrono::naive::NaiveDate::from_ymd_opt(<span class="number">1970</span>, <span class="number">1</span>, <span class="number">1</span>).unwrap()
+                        .signed_duration_since(
+                            ::chrono::naive::NaiveDate::from_ymd_opt(<span class="number">0</span>, <span class="number">12</span>, <span class="number">31</span>).unwrap()
+                        )).num_days()) <span class="kw">as </span>i32).unwrap();
+                }
+            }
+        }).to_string());
+    }
+
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>test_uuid_write() {
         <span class="kw">let </span>snippet: proc_macro2::TokenStream = <span class="macro">quote! </span>{
           <span class="kw">struct </span>AUuidStruct {
             unique_id: uuid::Uuid,
@@ -2267,6 +2832,33 @@
         }).to_string());
     }
 
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>test_uuid_read() {
+        <span class="kw">let </span>snippet: proc_macro2::TokenStream = <span class="macro">quote! </span>{
+          <span class="kw">struct </span>AUuidStruct {
+            unique_id: uuid::Uuid,
+          }
+        };
+
+        <span class="kw">let </span>fields = extract_fields(snippet);
+        <span class="kw">let </span>when = Field::from(<span class="kw-2">&amp;</span>fields[<span class="number">0</span>]);
+        <span class="macro">assert_eq!</span>(when.reader_snippet().to_string(),(<span class="macro">quote!</span>{
+            {
+                <span class="kw">let </span><span class="kw-2">mut </span>vals_vec = Vec::new();
+                vals_vec.resize(num_records, Default::default());
+                <span class="kw">let </span><span class="kw-2">mut </span>vals: <span class="kw-2">&amp;mut </span>[::parquet::data_type::ByteArray] = vals_vec.as_mut_slice();
+                <span class="kw">if let </span>ColumnReader::ByteArrayColumnReader(<span class="kw-2">mut </span>typed) = column_reader {
+                    typed.read_records(num_records, <span class="prelude-val">None</span>, <span class="prelude-val">None</span>, vals)<span class="question-mark">?</span>;
+                } <span class="kw">else </span>{
+                    <span class="macro">panic!</span>(<span class="string">&quot;Schema and struct disagree on type for {}&quot;</span>, <span class="macro">stringify!</span>{ unique_id });
+                }
+                <span class="kw">for </span>(i, r) <span class="kw">in </span><span class="kw-2">&amp;mut </span>records[..num_records].iter_mut().enumerate() {
+                    r.unique_id = ::uuid::Uuid::parse_str(vals[i].data().convert()).unwrap();
+                }
+            }
+        }).to_string());
+    }
+
     <span class="attr">#[test]
     </span><span class="kw">fn </span>test_converted_type() {
         <span class="kw">let </span>snippet: proc_macro2::TokenStream = <span class="macro">quote! </span>{
diff --git a/src/parquet_derive_test/lib.rs.html b/src/parquet_derive_test/lib.rs.html
index 820058a742..7ce1426c36 100644
--- a/src/parquet_derive_test/lib.rs.html
+++ b/src/parquet_derive_test/lib.rs.html
@@ -171,6 +171,72 @@
 <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>
 </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
@@ -190,7 +256,7 @@
 
 </span><span class="attr">#![allow(clippy::approx_constant)]
 
-</span><span class="kw">use </span>parquet_derive::ParquetRecordWriter;
+</span><span class="kw">use </span>parquet_derive::{ParquetRecordReader, ParquetRecordWriter};
 
 <span class="attr">#[derive(ParquetRecordWriter)]
 </span><span class="kw">struct </span>ACompleteRecord&lt;<span class="lifetime">&#39;a</span>&gt; {
@@ -222,6 +288,21 @@
     <span class="kw">pub </span>borrowed_maybe_borrowed_byte_vec: <span class="kw-2">&amp;</span><span class="lifetime">&#39;a </span><span class="prelude-ty">Option</span>&lt;<span class="kw-2">&amp;</span><span class="lifetime">&#39;a </span>[u8]&gt;,
 }
 
+<span class="attr">#[derive(PartialEq, ParquetRecordWriter, ParquetRecordReader, Debug)]
+</span><span class="kw">struct </span>APartiallyCompleteRecord {
+    <span class="kw">pub </span>bool: bool,
+    <span class="kw">pub </span>string: String,
+    <span class="kw">pub </span>i16: i16,
+    <span class="kw">pub </span>i32: i32,
+    <span class="kw">pub </span>u64: u64,
+    <span class="kw">pub </span>isize: isize,
+    <span class="kw">pub </span>float: f32,
+    <span class="kw">pub </span>double: f64,
+    <span class="kw">pub </span>now: chrono::NaiveDateTime,
+    <span class="kw">pub </span>date: chrono::NaiveDate,
+    <span class="kw">pub </span>byte_vec: Vec&lt;u8&gt;,
+}
+
 <span class="attr">#[cfg(test)]
 </span><span class="kw">mod </span>tests {
     <span class="kw">use super</span>::<span class="kw-2">*</span>;
@@ -229,7 +310,8 @@
     <span class="kw">use </span>std::{env, fs, io::Write, sync::Arc};
 
     <span class="kw">use </span>parquet::{
-        file::writer::SerializedFileWriter, record::RecordWriter,
+        file::writer::SerializedFileWriter,
+        record::{RecordReader, RecordWriter},
         schema::parser::parse_message_type,
     };
 
@@ -320,6 +402,56 @@
         writer.close().unwrap();
     }
 
+    <span class="attr">#[test]
+    </span><span class="kw">fn </span>test_parquet_derive_read_write_combined() {
+        <span class="kw">let </span>file = get_temp_file(<span class="string">&quot;test_parquet_derive_combined&quot;</span>, <span class="kw-2">&amp;</span>[]);
+
+        <span class="kw">let </span><span class="kw-2">mut </span>drs: Vec&lt;APartiallyCompleteRecord&gt; = <span class="macro">vec!</span>[APartiallyCompleteRecord {
+            bool: <span class="bool-val">true</span>,
+            string: <span class="string">&quot;a string&quot;</span>.into(),
+            i16: -<span class="number">45</span>,
+            i32: <span class="number">456</span>,
+            u64: <span class="number">4563424</span>,
+            isize: -<span class="number">365</span>,
+            float: <span class="number">3.5</span>,
+            double: std::f64::NAN,
+            now: chrono::Utc::now().naive_local(),
+            date: chrono::naive::NaiveDate::from_ymd_opt(<span class="number">2015</span>, <span class="number">3</span>, <span class="number">14</span>).unwrap(),
+            byte_vec: <span class="macro">vec!</span>[<span class="number">0x65</span>, <span class="number">0x66</span>, <span class="number">0x67</span>],
+        }];
+
+        <span class="kw">let </span><span class="kw-2">mut </span>out: Vec&lt;APartiallyCompleteRecord&gt; = Vec::new();
+
+        <span class="kw">use </span>parquet::file::{reader::FileReader, serialized_reader::SerializedFileReader};
+
+        <span class="kw">let </span>generated_schema = drs.as_slice().schema().unwrap();
+
+        <span class="kw">let </span>props = Default::default();
+        <span class="kw">let </span><span class="kw-2">mut </span>writer =
+            SerializedFileWriter::new(file.try_clone().unwrap(), generated_schema, props).unwrap();
+
+        <span class="kw">let </span><span class="kw-2">mut </span>row_group = writer.next_row_group().unwrap();
+        drs.as_slice().write_to_row_group(<span class="kw-2">&amp;mut </span>row_group).unwrap();
+        row_group.close().unwrap();
+        writer.close().unwrap();
+
+        <span class="kw">let </span>reader = SerializedFileReader::new(file).unwrap();
+
+        <span class="kw">let </span><span class="kw-2">mut </span>row_group = reader.get_row_group(<span class="number">0</span>).unwrap();
+        out.read_from_row_group(<span class="kw-2">&amp;mut *</span>row_group, <span class="number">1</span>).unwrap();
+
+        <span class="comment">// correct for rounding error when writing milliseconds
+        </span>drs[<span class="number">0</span>].now =
+            chrono::naive::NaiveDateTime::from_timestamp_millis(drs[<span class="number">0</span>].now.timestamp_millis())
+                .unwrap();
+
+        <span class="macro">assert!</span>(out[<span class="number">0</span>].double.is_nan()); <span class="comment">// these three lines are necessary because NAN != NAN
+        </span>out[<span class="number">0</span>].double = <span class="number">0.</span>;
+        drs[<span class="number">0</span>].double = <span class="number">0.</span>;
+
+        <span class="macro">assert_eq!</span>(drs[<span class="number">0</span>], out[<span class="number">0</span>]);
+    }
+
     <span class="doccomment">/// Returns file handle for a temp file in &#39;target&#39; directory with a provided content
     </span><span class="kw">pub fn </span>get_temp_file(file_name: <span class="kw-2">&amp;</span>str, content: <span class="kw-2">&amp;</span>[u8]) -&gt; fs::File {
         <span class="comment">// build tmp path to a file in &quot;target/debug/testdata&quot;
diff --git a/trait.impl/arrow_flight/gen/flight_service_server/trait.FlightService.js b/trait.impl/arrow_flight/gen/flight_service_server/trait.FlightService.js
index cd78556f4a..42168eb4e7 100644
--- a/trait.impl/arrow_flight/gen/flight_service_server/trait.FlightService.js
+++ b/trait.impl/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/middleware/struct.MiddlewareScenarioImpl.html\" title=\"struct arrow_integration_testing::flight_server_scenarios::middleware::MiddlewareScenarioImpl\">MiddlewareScenarioImpl</a>"],["impl FlightService for <a class=\"struct\" href=\"arrow_integration_testing/flight_server_scenarios/integration_test/struct.FlightServiceImpl.html\" title=\"struct arrow_integrat [...]
+"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/middleware/struct.MiddlewareScenarioImpl.html\" title=\"struct arrow_integration_testing::flight_server_scenarios::middleware::MiddlewareScenarioImpl\">MiddlewareScenarioImpl</a>"],["impl <a cl [...]
 };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/trait.impl/core/clone/trait.Clone.js b/trait.impl/core/clone/trait.Clone.js
index d6f47df282..cd1095a679 100644
--- a/trait.impl/core/clone/trait.Clone.js
+++ b/trait.impl/core/clone/trait.Clone.js
@@ -19,7 +19,7 @@
 "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_test_integration_client":[["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=\"flight_test_integration_client/enum.Scenario.html\" title=\"enum flight_test_integration_client::Scenario\">Scenario</a>"]],
 "flight_test_integration_server":[["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=\"flight_test_integration_server/enum.Scenario.html\" title=\"enum flight_test_integration_server::Scenario\">Scenario</a>"]],
-"parquet":[["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=\"parquet/format/struct.PageEncodingStats.html\" title=\"struct parquet::format::PageEncodingStats\">PageEncodingStats</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=\"parquet/data [...]
+"parquet":[["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=\"parquet/format/struct.RowGroup.html\" title=\"struct parquet::format::RowGroup\">RowGroup</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=\"parquet/basic/struct.GzipLevel.html\" t [...]
 "parquet_fromcsv":[["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=\"parquet_fromcsv/enum.CsvDialect.html\" title=\"enum parquet_fromcsv::CsvDialect\">CsvDialect</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=\"parquet_fromcsv/enum.RecordTermi [...]
 "parquet_rewrite":[["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=\"parquet_rewrite/enum.EnabledStatisticsArgs.html\" title=\"enum parquet_rewrite::EnabledStatisticsArgs\">EnabledStatisticsArgs</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=\ [...]
 };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/trait.impl/core/cmp/trait.Eq.js b/trait.impl/core/cmp/trait.Eq.js
index 32c633ec9f..b59ec7b4ec 100644
--- a/trait.impl/core/cmp/trait.Eq.js
+++ b/trait.impl/core/cmp/trait.Eq.js
@@ -9,6 +9,6 @@
 "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/struct.OwnedRow.html\" title=\"struct arrow_row::OwnedRow\">OwnedRow</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_row/struct.SortField.html\" title=\"struct arrow_row::SortField\">So [...]
 "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=\"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/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"struct\" href=\"arrow_schema/fields/struct.Fields.html\" title=\"str [...]
-"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/format/struct.BsonType.html\" title=\"struct parquet::format::BsonType\">BsonType</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.Type.html\" title=\"struct parquet::format: [...]
+"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/format/struct.UUIDType.html\" title=\"struct parquet::format::UUIDType\">UUIDType</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.EncryptionWithFooterKey.html\" title=\"stru [...]
 "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.EnabledStatisticsArgs.html\" title=\"enum parquet_rewrite::EnabledStatisticsArgs\">EnabledStatisticsArgs</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.Comp [...]
 };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/trait.impl/core/cmp/trait.Ord.js b/trait.impl/core/cmp/trait.Ord.js
index a3398e4ded..4ec1714f7e 100644
--- a/trait.impl/core/cmp/trait.Ord.js
+++ b/trait.impl/core/cmp/trait.Ord.js
@@ -4,6 +4,6 @@
 "arrow_ipc":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html\" title=\"trait core::cmp::Ord\">Ord</a> for <a class=\"struct\" href=\"arrow_ipc/gen/Schema/struct.Type.html\" title=\"struct arrow_ipc::gen::Schema::Type\">Type</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html\" title=\"trait core::cmp::Ord\">Ord</a> for <a class=\"struct\" href=\"arrow_ipc/gen/Schema/struct.Precision.html\" title=\"str [...]
 "arrow_row":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html\" title=\"trait core::cmp::Ord\">Ord</a> for <a class=\"struct\" href=\"arrow_row/struct.OwnedRow.html\" title=\"struct arrow_row::OwnedRow\">OwnedRow</a>"],["impl&lt;'a&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html\" title=\"trait core::cmp::Ord\">Ord</a> for <a class=\"struct\" href=\"arrow_row/struct.Row.html\" title=\"struct arrow_row::Row\ [...]
 "arrow_schema":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html\" title=\"trait core::cmp::Ord\">Ord</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/cmp/trait.Ord.html\" title=\"trait core::cmp::Ord\">Ord</a> for <a class=\"struct\" href=\"arrow_schema/fields/struct.Fields.html\" title=\"s [...]
-"parquet":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html\" title=\"trait core::cmp::Ord\">Ord</a> for <a class=\"struct\" href=\"parquet/format/struct.AesGcmCtrV1.html\" title=\"struct parquet::format::AesGcmCtrV1\">AesGcmCtrV1</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html\" title=\"trait core::cmp::Ord\">Ord</a> for <a class=\"enum\" href=\"parquet/format/enum.EncryptionAlgorithm.html\" title [...]
+"parquet":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html\" title=\"trait core::cmp::Ord\">Ord</a> for <a class=\"struct\" href=\"parquet/format/struct.Statistics.html\" title=\"struct parquet::format::Statistics\">Statistics</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html\" title=\"trait core::cmp::Ord\">Ord</a> for <a class=\"struct\" href=\"parquet/format/struct.EnumType.html\" title=\"struct  [...]
 "parquet_rewrite":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html\" title=\"trait core::cmp::Ord\">Ord</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/cmp/trait.Ord.html\" title=\"trait core::cmp::Ord\">Ord</a> for <a class=\"enum\" href=\"parquet_rewrite/enu [...]
 };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/trait.impl/core/cmp/trait.PartialEq.js b/trait.impl/core/cmp/trait.PartialEq.js
index 9e6bba11da..a13eb3faff 100644
--- a/trait.impl/core/cmp/trait.PartialEq.js
+++ b/trait.impl/core/cmp/trait.PartialEq.js
@@ -9,8 +9,9 @@
 "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/struct.OwnedRow.html\" title=\"struct arrow_row::OwnedRow\">OwnedRow</a>&gt; for <a class=\"struct\" href=\"arrow_row/struct.OwnedRow.html\" title=\"struct arrow_row::OwnedRow\">OwnedRow</a>"],["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/schema/struct.Schema.html\" title=\"struct arrow_schema::schema::Schema\">Schema</a>&gt; 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/nigh [...]
-"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=\"struct\" href=\"parquet/format/struct.JsonType.html\" title=\"struct parquet::format::JsonType\">JsonType</a>&gt; for <a class=\"struct\" href=\"parquet/format/struct.JsonType.html\" title=\"struct parquet::format::JsonType\">JsonType</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/ [...]
+"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=\"struct\" href=\"parquet/format/struct.SchemaElement.html\" title=\"struct parquet::format::SchemaElement\">SchemaElement</a>&gt; for <a class=\"struct\" href=\"parquet/format/struct.SchemaElement.html\" title=\"struct parquet::format::SchemaElement\">SchemaElement</a>"],["impl <a class=\"trait\" href=\"https://doc.r [...]
 "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 [...]
+"parquet_derive_test":[["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=\"parquet_derive_test/struct.APartiallyCompleteRecord.html\" title=\"struct parquet_derive_test::APartiallyCompleteRecord\">APartiallyCompleteRecord</a>&gt; for <a class=\"struct\" href=\"parquet_derive_test/struct.APartiallyCompleteRecord.html\" title=\"struct parquet_derive_test::APartial [...]
 "parquet_fromcsv":[["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_fromcsv/enum.CsvDialect.html\" title=\"enum parquet_fromcsv::CsvDialect\">CsvDialect</a>&gt; for <a class=\"enum\" href=\"parquet_fromcsv/enum.CsvDialect.html\" title=\"enum parquet_fromcsv::CsvDialect\">CsvDialect</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly [...]
 "parquet_rewrite":[["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_rewrite/enum.CompressionArgs.html\" title=\"enum parquet_rewrite::CompressionArgs\">CompressionArgs</a>&gt; for <a class=\"enum\" href=\"parquet_rewrite/enum.CompressionArgs.html\" title=\"enum parquet_rewrite::CompressionArgs\">CompressionArgs</a>"],["impl <a class=\"trait\" href=\"htt [...]
 };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/trait.impl/core/cmp/trait.PartialOrd.js b/trait.impl/core/cmp/trait.PartialOrd.js
index 348d528775..5b744e2b85 100644
--- a/trait.impl/core/cmp/trait.PartialOrd.js
+++ b/trait.impl/core/cmp/trait.PartialOrd.js
@@ -4,6 +4,6 @@
 "arrow_ipc":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html\" title=\"trait core::cmp::PartialOrd\">PartialOrd</a>&lt;<a class=\"struct\" href=\"arrow_ipc/gen/Schema/struct.TimeUnit.html\" title=\"struct arrow_ipc::gen::Schema::TimeUnit\">TimeUnit</a>&gt; for <a class=\"struct\" href=\"arrow_ipc/gen/Schema/struct.TimeUnit.html\" title=\"struct arrow_ipc::gen::Schema::TimeUnit\">TimeUnit</a>"],["impl <a class=\"trait\" href=\"https://doc. [...]
 "arrow_row":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html\" title=\"trait core::cmp::PartialOrd\">PartialOrd</a>&lt;<a class=\"struct\" href=\"arrow_row/struct.OwnedRow.html\" title=\"struct arrow_row::OwnedRow\">OwnedRow</a>&gt; for <a class=\"struct\" href=\"arrow_row/struct.OwnedRow.html\" title=\"struct arrow_row::OwnedRow\">OwnedRow</a>"],["impl&lt;'a&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.P [...]
 "arrow_schema":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html\" title=\"trait core::cmp::PartialOrd\">PartialOrd</a>&lt;<a class=\"struct\" href=\"arrow_schema/struct.SortOptions.html\" title=\"struct arrow_schema::SortOptions\">SortOptions</a>&gt; 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/n [...]
-"parquet":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html\" title=\"trait core::cmp::PartialOrd\">PartialOrd</a>&lt;<a class=\"struct\" href=\"parquet/format/struct.DataPageHeader.html\" title=\"struct parquet::format::DataPageHeader\">DataPageHeader</a>&gt; for <a class=\"struct\" href=\"parquet/format/struct.DataPageHeader.html\" title=\"struct parquet::format::DataPageHeader\">DataPageHeader</a>"],["impl <a class=\"trait\" href=\"http [...]
+"parquet":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html\" title=\"trait core::cmp::PartialOrd\">PartialOrd</a>&lt;<a class=\"struct\" href=\"parquet/format/struct.TypeDefinedOrder.html\" title=\"struct parquet::format::TypeDefinedOrder\">TypeDefinedOrder</a>&gt; for <a class=\"struct\" href=\"parquet/format/struct.TypeDefinedOrder.html\" title=\"struct parquet::format::TypeDefinedOrder\">TypeDefinedOrder</a>"],["impl <a class=\"trait\" [...]
 "parquet_rewrite":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html\" title=\"trait core::cmp::PartialOrd\">PartialOrd</a>&lt;<a class=\"enum\" href=\"parquet_rewrite/enum.CompressionArgs.html\" title=\"enum parquet_rewrite::CompressionArgs\">CompressionArgs</a>&gt; for <a class=\"enum\" href=\"parquet_rewrite/enum.CompressionArgs.html\" title=\"enum parquet_rewrite::CompressionArgs\">CompressionArgs</a>"],["impl <a class=\"trait\" href=\" [...]
 };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/trait.impl/core/convert/trait.AsRef.js b/trait.impl/core/convert/trait.AsRef.js
index a4125e11b2..af145c26a6 100644
--- a/trait.impl/core/convert/trait.AsRef.js
+++ b/trait.impl/core/convert/trait.AsRef.js
@@ -2,5 +2,5 @@
 "arrow":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.AsRef.html\" title=\"trait core::convert::AsRef\">AsRef</a>&lt;PyAny&gt; for <a class=\"struct\" href=\"arrow/pyarrow/struct.ArrowException.html\" title=\"struct arrow::pyarrow::ArrowException\">ArrowException</a>"]],
 "arrow_buffer":[["impl&lt;T: <a class=\"trait\" href=\"arrow_buffer/native/trait.ArrowNativeType.html\" title=\"trait arrow_buffer::native::ArrowNativeType\">ArrowNativeType</a>&gt; <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.slice.html\">[T]</a>&gt; for <a class=\"struct\" href=\"arrow_buffer/buffer/offset/struct. [...]
 "arrow_row":[["impl&lt;'a&gt; <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; 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/convert/trait.AsRef.html\" title=\"t [...]
-"parquet":[["impl <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=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/string/struct.String.html\" title=\"struct alloc::string::String\">String</a>]&gt; for <a class=\"struct\" href=\"parquet/schema/types/struct.ColumnPath.html\" title=\"struct parquet::schema::types::ColumnPath\">ColumnPath</a>"],["impl <a class=\"trait\" href=\"ht [...]
+"parquet":[["impl <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; for <a class=\"struct\" href=\"parquet/data_type/struct.FixedLenByteArray.html\" title=\"struct parquet::data_type::FixedLenByteArray\">FixedLenByteArray</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core [...]
 };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/trait.impl/core/convert/trait.From.js b/trait.impl/core/convert/trait.From.js
index e22212a15c..80448515cf 100644
--- a/trait.impl/core/convert/trait.From.js
+++ b/trait.impl/core/convert/trait.From.js
@@ -8,7 +8,7 @@
 "arrow_integration_test":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a>&lt;&amp;<a class=\"struct\" href=\"arrow_schema/field/struct.Field.html\" title=\"struct arrow_schema::field::Field\">Field</a>&gt; for <a class=\"struct\" href=\"arrow_integration_test/struct.ArrowJsonField.html\" title=\"struct arrow_integration_test::ArrowJsonField\">ArrowJsonField</a>"],["impl <a class=\"trait\" href= [...]
 "arrow_ipc":[["impl&lt;'a&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a>&lt;<a class=\"struct\" href=\"arrow_ipc/gen/Schema/struct.Field.html\" title=\"struct arrow_ipc::gen::Schema::Field\">Field</a>&lt;'a&gt;&gt; for <a class=\"struct\" href=\"arrow_schema/field/struct.Field.html\" title=\"struct arrow_schema::field::Field\">Field</a>"]],
 "arrow_schema":[["impl&lt;const N: <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.usize.html\">usize</a>&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a>&lt;[<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/field/struct.Field.html\" title=\"str [...]
-"parquet":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a>&lt;&amp;<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.i32.html\">i32</a>&gt; for <a class=\"struct\" href=\"parquet/format/struct.CompressionCodec.html\" title=\"struct parquet::format::CompressionCodec\">CompressionCodec</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/conver [...]
+"parquet":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a>&lt;&amp;<a class=\"struct\" href=\"parquet/format/struct.FieldRepetitionType.html\" title=\"struct parquet::format::FieldRepetitionType\">FieldRepetitionType</a>&gt; for <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.i32.html\">i32</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/co [...]
 "parquet_fromcsv":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a>&lt;<a class=\"enum\" href=\"parquet/errors/enum.ParquetError.html\" title=\"enum parquet::errors::ParquetError\">ParquetError</a>&gt; for <a class=\"enum\" href=\"parquet_fromcsv/enum.ParquetFromCsvError.html\" title=\"enum parquet_fromcsv::ParquetFromCsvError\">ParquetFromCsvError</a>"],["impl <a class=\"trait\" href=\"https:// [...]
 "parquet_rewrite":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a>&lt;<a class=\"enum\" href=\"parquet_rewrite/enum.EnabledStatisticsArgs.html\" title=\"enum parquet_rewrite::EnabledStatisticsArgs\">EnabledStatisticsArgs</a>&gt; for <a class=\"enum\" href=\"parquet/file/properties/enum.EnabledStatistics.html\" title=\"enum parquet::file::properties::EnabledStatistics\">EnabledStatistics</a>"],[ [...]
 };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/trait.impl/core/convert/trait.TryFrom.js b/trait.impl/core/convert/trait.TryFrom.js
index 903527a9e9..2a4daa0b74 100644
--- a/trait.impl/core/convert/trait.TryFrom.js
+++ b/trait.impl/core/convert/trait.TryFrom.js
@@ -3,5 +3,5 @@
 "arrow_flight":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html\" title=\"trait core::convert::TryFrom\">TryFrom</a>&lt;<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.i32.html\">i32</a>&gt; for <a class=\"enum\" href=\"arrow_flight/sql/gen/enum.SqlSupportedTransaction.html\" title=\"enum arrow_flight::sql::gen::SqlSupportedTransaction\">SqlSupportedTransaction</a>"],["impl <a class=\"trait\" href=\"https:// [...]
 "arrow_ipc":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html\" title=\"trait core::convert::TryFrom\">TryFrom</a>&lt;<a class=\"struct\" href=\"arrow_ipc/gen/Message/struct.CompressionType.html\" title=\"struct arrow_ipc::gen::Message::CompressionType\">CompressionType</a>&gt; for <a class=\"enum\" href=\"arrow_ipc/compression/enum.CompressionCodec.html\" title=\"enum arrow_ipc::compression::CompressionCodec\">CompressionCodec</a>"]],
 "arrow_schema":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html\" title=\"trait core::convert::TryFrom\">TryFrom</a>&lt;&amp;<a class=\"struct\" href=\"arrow_schema/ffi/struct.FFI_ArrowSchema.html\" title=\"struct arrow_schema::ffi::FFI_ArrowSchema\">FFI_ArrowSchema</a>&gt; for <a class=\"struct\" href=\"arrow_schema/field/struct.Field.html\" title=\"struct arrow_schema::field::Field\">Field</a>"],["impl <a class=\"trait\" href=\"https:/ [...]
-"parquet":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html\" title=\"trait core::convert::TryFrom\">TryFrom</a>&lt;<a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/std/fs/struct.File.html\" title=\"struct std::fs::File\">File</a>&gt; for <a class=\"struct\" href=\"parquet/file/serialized_reader/struct.SerializedFileReader.html\" title=\"struct parquet::file::serialized_reader::SerializedFileReader\">SerializedFileReader</a>&l [...]
+"parquet":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html\" title=\"trait core::convert::TryFrom\">TryFrom</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=\"parquet/format/struct.ConvertedType.html\" title=\"struct parquet::format::ConvertedType\">ConvertedType</a>&gt;&gt; for <a class=\"enum\" href=\"parquet/basic [...]
 };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/trait.impl/core/default/trait.Default.js b/trait.impl/core/default/trait.Default.js
index 877d924805..7533eb9ef3 100644
--- a/trait.impl/core/default/trait.Default.js
+++ b/trait.impl/core/default/trait.Default.js
@@ -11,5 +11,5 @@
 "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/reader/boolean_array/struct.BooleanArrayDecoder.html\" title=\"struct arrow_json::reader::boolean_array::BooleanArrayDecoder\">BooleanArrayDecoder</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/default/trait.Default.html\" title=\"trait core::default::D [...]
 "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/schema/struct.SchemaBuilder.html\" title=\"struct arrow_schema::schema::SchemaBuilder\">SchemaBuilder</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=\"struc [...]
 "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/format/struct.JsonType.html\" title=\"struct parquet::format::JsonType\">JsonType</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=\"parquet/format/stru [...]
+"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/arrow/arrow_writer/byte_array/struct.ByteArrayStorage.html\" title=\"struct parquet::arrow::arrow_writer::byte_array::ByteArrayStorage\">ByteArrayStorage</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/default/trait.Default.html\" title=\"trait core::default:: [...]
 };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/trait.impl/core/fmt/trait.Debug.js b/trait.impl/core/fmt/trait.Debug.js
index e3cb095fd0..c2c75a465c 100644
--- a/trait.impl/core/fmt/trait.Debug.js
+++ b/trait.impl/core/fmt/trait.Debug.js
@@ -22,9 +22,10 @@
 "flight_sql_client":[["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=\"flight_sql_client/enum.Command.html\" title=\"enum flight_sql_client::Command\">Command</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=\"flight_sql_client/struct.Args.html\" titl [...]
 "flight_test_integration_client":[["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=\"flight_test_integration_client/struct.Args.html\" title=\"struct flight_test_integration_client::Args\">Args</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=\"flight_ [...]
 "flight_test_integration_server":[["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=\"flight_test_integration_server/enum.Scenario.html\" title=\"enum flight_test_integration_server::Scenario\">Scenario</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=\ [...]
-"parquet":[["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=\"parquet/format/struct.MapType.html\" title=\"struct parquet::format::MapType\">MapType</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=\"parquet/basic/struct.BrotliLevel.html\" title=\"st [...]
+"parquet":[["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=\"parquet/format/struct.EncryptionWithColumnKey.html\" title=\"struct parquet::format::EncryptionWithColumnKey\">EncryptionWithColumnKey</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=\"pa [...]
 "parquet_concat":[["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=\"parquet_concat/struct.Args.html\" title=\"struct parquet_concat::Args\">Args</a>"]],
 "parquet_derive":[["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=\"parquet_derive/parquet_field/enum.Type.html\" title=\"enum parquet_derive::parquet_field::Type\">Type</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=\"parquet_derive/parquet_field/s [...]
+"parquet_derive_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=\"struct\" href=\"parquet_derive_test/struct.APartiallyCompleteRecord.html\" title=\"struct parquet_derive_test::APartiallyCompleteRecord\">APartiallyCompleteRecord</a>"]],
 "parquet_fromcsv":[["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=\"parquet_fromcsv/enum.CsvDialect.html\" title=\"enum parquet_fromcsv::CsvDialect\">CsvDialect</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=\"parquet_fromcsv/struct.Args.html\" tit [...]
 "parquet_index":[["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=\"parquet_index/struct.Args.html\" title=\"struct parquet_index::Args\">Args</a>"]],
 "parquet_layout":[["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=\"parquet_layout/struct.RowGroup.html\" title=\"struct parquet_layout::RowGroup\">RowGroup</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=\"parquet_layout/struct.Args.html\" title=\ [...]
diff --git a/trait.impl/core/fmt/trait.Display.js b/trait.impl/core/fmt/trait.Display.js
index 1a9b31dff7..e751dc89c5 100644
--- a/trait.impl/core/fmt/trait.Display.js
+++ b/trait.impl/core/fmt/trait.Display.js
@@ -9,6 +9,6 @@
 "arrow_ord":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html\" title=\"trait core::fmt::Display\">Display</a> for <a class=\"enum\" href=\"arrow_ord/cmp/enum.Op.html\" title=\"enum arrow_ord::cmp::Op\">Op</a>"]],
 "arrow_schema":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html\" title=\"trait core::fmt::Display\">Display</a> for <a class=\"enum\" href=\"arrow_schema/error/enum.ArrowError.html\" title=\"enum arrow_schema::error::ArrowError\">ArrowError</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html\" title=\"trait core::fmt::Display\">Display</a> for <a class=\"enum\" href=\"arrow_schema/datatype/en [...]
 "arrow_string":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html\" title=\"trait core::fmt::Display\">Display</a> for <a class=\"enum\" href=\"arrow_string/like/enum.Op.html\" title=\"enum arrow_string::like::Op\">Op</a>"]],
-"parquet":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html\" title=\"trait core::fmt::Display\">Display</a> for <a class=\"struct\" href=\"parquet/data_type/struct.ByteArray.html\" title=\"struct parquet::data_type::ByteArray\">ByteArray</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html\" title=\"trait core::fmt::Display\">Display</a> for <a class=\"enum\" href=\"parquet/basic/enum.Compressi [...]
+"parquet":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html\" title=\"trait core::fmt::Display\">Display</a> for <a class=\"enum\" href=\"parquet/record/reader/enum.Reader.html\" title=\"enum parquet::record::reader::Reader\">Reader</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html\" title=\"trait core::fmt::Display\">Display</a> for <a class=\"enum\" href=\"parquet/file/statistics/enum.Stati [...]
 "parquet_fromcsv":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html\" title=\"trait core::fmt::Display\">Display</a> for <a class=\"enum\" href=\"parquet_fromcsv/enum.ParquetFromCsvError.html\" title=\"enum parquet_fromcsv::ParquetFromCsvError\">ParquetFromCsvError</a>"]]
 };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/trait.impl/core/hash/trait.Hash.js b/trait.impl/core/hash/trait.Hash.js
index 953d9339c1..f49c127916 100644
--- a/trait.impl/core/hash/trait.Hash.js
+++ b/trait.impl/core/hash/trait.Hash.js
@@ -6,5 +6,5 @@
 "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/Message/struct.BodyCompressionMethod.html\" title=\"struct arrow_ipc::gen::Message::BodyCompressionMethod\">BodyCompressionMethod</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\"  [...]
 "arrow_row":[["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_row::OwnedRow\">OwnedRow</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_row/struct.Row.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/struct.SortOptions.html\" title=\"struct arrow_schema::SortOptions\">SortOptions</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.DataType.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.Statistics.html\" title=\"struct parquet::format::Statistics\">Statistics</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/format/struct.TypeDefinedOrder.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=\"enum\" href=\"parquet/format/enum.EncryptionAlgorithm.html\" title=\"enum parquet::format::EncryptionAlgorithm\">EncryptionAlgorithm</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=\"parquet/format/enum.Time [...]
 };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/trait.impl/core/iter/traits/iterator/trait.Iterator.js b/trait.impl/core/iter/traits/iterator/trait.Iterator.js
index 3c05bb7454..93c7e4163c 100644
--- a/trait.impl/core/iter/traits/iterator/trait.Iterator.js
+++ b/trait.impl/core/iter/traits/iterator/trait.Iterator.js
@@ -7,5 +7,5 @@
 "arrow_json":[["impl&lt;R: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/std/io/trait.BufRead.html\" title=\"trait std::io::BufRead\">BufRead</a>&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html\" title=\"trait core::iter::traits::iterator::Iterator\">Iterator</a> for <a class=\"struct\" href=\"arrow_json/reader/struct.Reader.html\" title=\"struct arrow_json::reader::Reader\">Reader</a>&lt;R&gt;"],["impl&lt;R: <a  [...]
 "arrow_row":[["impl&lt;'a&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html\" title=\"trait core::iter::traits::iterator::Iterator\">Iterator</a> for <a class=\"struct\" href=\"arrow_row/struct.RowsIter.html\" title=\"struct arrow_row::RowsIter\">RowsIter</a>&lt;'a&gt;"]],
 "arrow_select":[["impl&lt;'a&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html\" title=\"trait core::iter::traits::iterator::Iterator\">Iterator</a> for <a class=\"struct\" href=\"arrow_select/filter/struct.SlicesIterator.html\" title=\"struct arrow_select::filter::SlicesIterator\">SlicesIterator</a>&lt;'a&gt;"],["impl&lt;'a&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator. [...]
-"parquet":[["impl&lt;'a&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html\" title=\"trait core::iter::traits::iterator::Iterator\">Iterator</a> for <a class=\"struct\" href=\"parquet/record/api/struct.RowColumnIter.html\" title=\"struct parquet::record::api::RowColumnIter\">RowColumnIter</a>&lt;'a&gt;"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html\" title=\"trai [...]
+"parquet":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html\" title=\"trait core::iter::traits::iterator::Iterator\">Iterator</a> for <a class=\"struct\" href=\"parquet/record/reader/struct.ReaderIter.html\" title=\"struct parquet::record::reader::ReaderIter\">ReaderIter</a>"],["impl&lt;'a&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html\" title=\"trait core::iter: [...]
 };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/trait.impl/core/marker/trait.Copy.js b/trait.impl/core/marker/trait.Copy.js
index 61f5828171..a8f12628e7 100644
--- a/trait.impl/core/marker/trait.Copy.js
+++ b/trait.impl/core/marker/trait.Copy.js
@@ -11,7 +11,7 @@
 "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;"]],
 "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=\"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/marker/trait.Copy.html\" title=\"trait core::marker::Copy\">Copy</a> for <a class=\"struct\" href=\"arrow_schema/struct.SortO [...]
-"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/format/struct.CompressionCodec.html\" title=\"struct parquet::format::CompressionCodec\">CompressionCodec</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/basic/enum. [...]
+"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=\"enum\" href=\"parquet/file/properties/enum.WriterVersion.html\" title=\"enum parquet::file::properties::WriterVersion\">WriterVersion</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/basic/e [...]
 "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/ [...]
 "parquet_rewrite":[["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_rewrite/enum.CompressionArgs.html\" title=\"enum parquet_rewrite::CompressionArgs\">CompressionArgs</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_rewrite/enu [...]
 };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/trait.impl/core/marker/trait.Freeze.js b/trait.impl/core/marker/trait.Freeze.js
index eb0f68996e..7c32274626 100644
--- a/trait.impl/core/marker/trait.Freeze.js
+++ b/trait.impl/core/marker/trait.Freeze.js
@@ -25,7 +25,7 @@
 "parquet":[["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=\"parquet/errors/enum.ParquetError.html\" title=\"enum parquet::errors::ParquetError\">ParquetError</a>",1,["parquet::errors::ParquetError"]],["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=\"str [...]
 "parquet_concat":[["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=\"parquet_concat/struct.Args.html\" title=\"struct parquet_concat::Args\">Args</a>",1,["parquet_concat::Args"]]],
 "parquet_derive":[["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=\"parquet_derive/parquet_field/struct.Field.html\" title=\"struct parquet_derive::parquet_field::Field\">Field</a>",1,["parquet_derive::parquet_field::Field"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Fr [...]
-"parquet_derive_test":[["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=\"struct\" href=\"parquet_derive_test/struct.ACompleteRecord.html\" title=\"struct parquet_derive_test::ACompleteRecord\">ACompleteRecord</a>&lt;'a&gt;",1,["parquet_derive_test::ACompleteRecord"]]],
+"parquet_derive_test":[["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=\"struct\" href=\"parquet_derive_test/struct.ACompleteRecord.html\" title=\"struct parquet_derive_test::ACompleteRecord\">ACompleteRecord</a>&lt;'a&gt;",1,["parquet_derive_test::ACompleteRecord"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" tit [...]
 "parquet_fromcsv":[["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=\"parquet_fromcsv/enum.ParquetFromCsvError.html\" title=\"enum parquet_fromcsv::ParquetFromCsvError\">ParquetFromCsvError</a>",1,["parquet_fromcsv::ParquetFromCsvError"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html\" title=\"trait core::marker::F [...]
 "parquet_index":[["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=\"parquet_index/struct.Args.html\" title=\"struct parquet_index::Args\">Args</a>",1,["parquet_index::Args"]]],
 "parquet_layout":[["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=\"parquet_layout/struct.ParquetFile.html\" title=\"struct parquet_layout::ParquetFile\">ParquetFile</a>",1,["parquet_layout::ParquetFile"]],["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 clas [...]
diff --git a/trait.impl/core/marker/trait.Send.js b/trait.impl/core/marker/trait.Send.js
index 54a6e4be08..c362014c03 100644
--- a/trait.impl/core/marker/trait.Send.js
+++ b/trait.impl/core/marker/trait.Send.js
@@ -25,7 +25,7 @@
 "parquet":[["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=\"parquet/errors/enum.ParquetError.html\" title=\"enum parquet::errors::ParquetError\">ParquetError</a>",1,["parquet::errors::ParquetError"]],["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=\ [...]
 "parquet_concat":[["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=\"parquet_concat/struct.Args.html\" title=\"struct parquet_concat::Args\">Args</a>",1,["parquet_concat::Args"]]],
 "parquet_derive":[["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=\"parquet_derive/parquet_field/struct.Field.html\" title=\"struct parquet_derive::parquet_field::Field\">Field</a>",1,["parquet_derive::parquet_field::Field"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> fo [...]
-"parquet_derive_test":[["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=\"struct\" href=\"parquet_derive_test/struct.ACompleteRecord.html\" title=\"struct parquet_derive_test::ACompleteRecord\">ACompleteRecord</a>&lt;'a&gt;",1,["parquet_derive_test::ACompleteRecord"]]],
+"parquet_derive_test":[["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=\"struct\" href=\"parquet_derive_test/struct.ACompleteRecord.html\" title=\"struct parquet_derive_test::ACompleteRecord\">ACompleteRecord</a>&lt;'a&gt;",1,["parquet_derive_test::ACompleteRecord"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"tra [...]
 "parquet_fromcsv":[["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=\"parquet_fromcsv/enum.ParquetFromCsvError.html\" title=\"enum parquet_fromcsv::ParquetFromCsvError\">ParquetFromCsvError</a>",1,["parquet_fromcsv::ParquetFromCsvError"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Se [...]
 "parquet_index":[["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=\"parquet_index/struct.Args.html\" title=\"struct parquet_index::Args\">Args</a>",1,["parquet_index::Args"]]],
 "parquet_layout":[["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=\"parquet_layout/struct.ParquetFile.html\" title=\"struct parquet_layout::ParquetFile\">ParquetFile</a>",1,["parquet_layout::ParquetFile"]],["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\" [...]
diff --git a/trait.impl/core/marker/trait.StructuralEq.js b/trait.impl/core/marker/trait.StructuralEq.js
index f7aef2bb8c..fbc1e9d201 100644
--- a/trait.impl/core/marker/trait.StructuralEq.js
+++ b/trait.impl/core/marker/trait.StructuralEq.js
@@ -8,6 +8,6 @@
 "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>"]],
 "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.TimeUnit.html\" title=\"enum arrow_schema::datatype::TimeUnit\">TimeUnit</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 clas [...]
-"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.Statistics.html\" title=\"struct parquet::format::Statistics\">Statistics</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=\"str [...]
+"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=\"enum\" href=\"parquet/file/properties/enum.WriterVersion.html\" title=\"enum parquet::file::properties::WriterVersion\">WriterVersion</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html\" title=\"trait core::marker::StructuralEq\">StructuralEq< [...]
 "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.CompressionArgs.html\" title=\"enum parquet_rewrite::CompressionArgs\">CompressionArgs</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralEq.html\" title=\"trait core::marker::StructuralEq\">StructuralEq</a>  [...]
 };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/trait.impl/core/marker/trait.StructuralPartialEq.js b/trait.impl/core/marker/trait.StructuralPartialEq.js
index ed95030405..f65c86d0de 100644
--- a/trait.impl/core/marker/trait.StructuralPartialEq.js
+++ b/trait.impl/core/marker/trait.StructuralPartialEq.js
@@ -9,8 +9,9 @@
 "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/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=\"enum\" href=\"arrow_schema/datatype/enum.TimeUnit.html\" title=\"enum arrow_schema::datatype::TimeUnit\">TimeUnit</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralParti [...]
-"parquet":[["impl&lt;T&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=\"parquet/file/statistics/struct.ValueStatistics.html\" title=\"struct parquet::file::statistics::ValueStatistics\">ValueStatistics</a>&lt;T&gt;"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\ [...]
+"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.FileCryptoMetaData.html\" title=\"struct parquet::format::FileCryptoMetaData\">FileCryptoMetaData</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker [...]
 "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=\"struct\" href=\"parquet_derive/parquet_field/struct.Field.html\" title=\"struct parquet_derive::parquet_field::Field\">Field</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::St [...]
+"parquet_derive_test":[["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_derive_test/struct.APartiallyCompleteRecord.html\" title=\"struct parquet_derive_test::APartiallyCompleteRecord\">APartiallyCompleteRecord</a>"]],
 "parquet_fromcsv":[["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_fromcsv/enum.CsvDialect.html\" title=\"enum parquet_fromcsv::CsvDialect\">CsvDialect</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq [...]
 "parquet_rewrite":[["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_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.StructuralPartialEq.html\" title=\"trait  [...]
 };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/trait.impl/core/marker/trait.Sync.js b/trait.impl/core/marker/trait.Sync.js
index 6d40df3a60..7dea802900 100644
--- a/trait.impl/core/marker/trait.Sync.js
+++ b/trait.impl/core/marker/trait.Sync.js
@@ -25,7 +25,7 @@
 "parquet":[["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=\"parquet/errors/enum.ParquetError.html\" title=\"enum parquet::errors::ParquetError\">ParquetError</a>",1,["parquet::errors::ParquetError"]],["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=\ [...]
 "parquet_concat":[["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=\"parquet_concat/struct.Args.html\" title=\"struct parquet_concat::Args\">Args</a>",1,["parquet_concat::Args"]]],
 "parquet_derive":[["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=\"parquet_derive/parquet_field/struct.Field.html\" title=\"struct parquet_derive::parquet_field::Field\">Field</a>",1,["parquet_derive::parquet_field::Field"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> fo [...]
-"parquet_derive_test":[["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=\"struct\" href=\"parquet_derive_test/struct.ACompleteRecord.html\" title=\"struct parquet_derive_test::ACompleteRecord\">ACompleteRecord</a>&lt;'a&gt;",1,["parquet_derive_test::ACompleteRecord"]]],
+"parquet_derive_test":[["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=\"struct\" href=\"parquet_derive_test/struct.ACompleteRecord.html\" title=\"struct parquet_derive_test::ACompleteRecord\">ACompleteRecord</a>&lt;'a&gt;",1,["parquet_derive_test::ACompleteRecord"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"tra [...]
 "parquet_fromcsv":[["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=\"parquet_fromcsv/enum.ParquetFromCsvError.html\" title=\"enum parquet_fromcsv::ParquetFromCsvError\">ParquetFromCsvError</a>",1,["parquet_fromcsv::ParquetFromCsvError"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sy [...]
 "parquet_index":[["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=\"parquet_index/struct.Args.html\" title=\"struct parquet_index::Args\">Args</a>",1,["parquet_index::Args"]]],
 "parquet_layout":[["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=\"parquet_layout/struct.ParquetFile.html\" title=\"struct parquet_layout::ParquetFile\">ParquetFile</a>",1,["parquet_layout::ParquetFile"]],["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\" [...]
diff --git a/trait.impl/core/marker/trait.Unpin.js b/trait.impl/core/marker/trait.Unpin.js
index f4d01e437f..ac77a7a613 100644
--- a/trait.impl/core/marker/trait.Unpin.js
+++ b/trait.impl/core/marker/trait.Unpin.js
@@ -25,7 +25,7 @@
 "parquet":[["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=\"parquet/errors/enum.ParquetError.html\" title=\"enum parquet::errors::ParquetError\">ParquetError</a>",1,["parquet::errors::ParquetError"]],["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\"  [...]
 "parquet_concat":[["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=\"parquet_concat/struct.Args.html\" title=\"struct parquet_concat::Args\">Args</a>",1,["parquet_concat::Args"]]],
 "parquet_derive":[["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=\"parquet_derive/parquet_field/struct.Field.html\" title=\"struct parquet_derive::parquet_field::Field\">Field</a>",1,["parquet_derive::parquet_field::Field"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</ [...]
-"parquet_derive_test":[["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=\"struct\" href=\"parquet_derive_test/struct.ACompleteRecord.html\" title=\"struct parquet_derive_test::ACompleteRecord\">ACompleteRecord</a>&lt;'a&gt;",1,["parquet_derive_test::ACompleteRecord"]]],
+"parquet_derive_test":[["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=\"struct\" href=\"parquet_derive_test/struct.ACompleteRecord.html\" title=\"struct parquet_derive_test::ACompleteRecord\">ACompleteRecord</a>&lt;'a&gt;",1,["parquet_derive_test::ACompleteRecord"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\ [...]
 "parquet_fromcsv":[["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=\"parquet_fromcsv/enum.ParquetFromCsvError.html\" title=\"enum parquet_fromcsv::ParquetFromCsvError\">ParquetFromCsvError</a>",1,["parquet_fromcsv::ParquetFromCsvError"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin [...]
 "parquet_index":[["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=\"parquet_index/struct.Args.html\" title=\"struct parquet_index::Args\">Args</a>",1,["parquet_index::Args"]]],
 "parquet_layout":[["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=\"parquet_layout/struct.ParquetFile.html\" title=\"struct parquet_layout::ParquetFile\">ParquetFile</a>",1,["parquet_layout::ParquetFile"]],["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=\"st [...]
diff --git a/trait.impl/core/panic/unwind_safe/trait.RefUnwindSafe.js b/trait.impl/core/panic/unwind_safe/trait.RefUnwindSafe.js
index 62798cabb6..b6e1bdf703 100644
--- a/trait.impl/core/panic/unwind_safe/trait.RefUnwindSafe.js
+++ b/trait.impl/core/panic/unwind_safe/trait.RefUnwindSafe.js
@@ -25,7 +25,7 @@
 "parquet":[["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=\"parquet/errors/enum.ParquetError.html\" title=\"enum parquet::errors::ParquetError\">ParquetError</a>",1,["parquet::errors::ParquetError"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html\" tit [...]
 "parquet_concat":[["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=\"parquet_concat/struct.Args.html\" title=\"struct parquet_concat::Args\">Args</a>",1,["parquet_concat::Args"]]],
 "parquet_derive":[["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=\"parquet_derive/parquet_field/struct.Field.html\" title=\"struct parquet_derive::parquet_field::Field\">Field</a>",1,["parquet_derive::parquet_field::Field"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trai [...]
-"parquet_derive_test":[["impl&lt;'a&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=\"parquet_derive_test/struct.ACompleteRecord.html\" title=\"struct parquet_derive_test::ACompleteRecord\">ACompleteRecord</a>&lt;'a&gt;",1,["parquet_derive_test::ACompleteRecord"]]],
+"parquet_derive_test":[["impl&lt;'a&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=\"parquet_derive_test/struct.ACompleteRecord.html\" title=\"struct parquet_derive_test::ACompleteRecord\">ACompleteRecord</a>&lt;'a&gt;",1,["parquet_derive_test::ACompleteRecord"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org [...]
 "parquet_fromcsv":[["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=\"parquet_fromcsv/enum.ParquetFromCsvError.html\" title=\"enum parquet_fromcsv::ParquetFromCsvError\">ParquetFromCsvError</a>",1,["parquet_fromcsv::ParquetFromCsvError"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwin [...]
 "parquet_index":[["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=\"parquet_index/struct.Args.html\" title=\"struct parquet_index::Args\">Args</a>",1,["parquet_index::Args"]]],
 "parquet_layout":[["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=\"parquet_layout/struct.ParquetFile.html\" title=\"struct parquet_layout::ParquetFile\">ParquetFile</a>",1,["parquet_layout::ParquetFile"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html [...]
diff --git a/trait.impl/core/panic/unwind_safe/trait.UnwindSafe.js b/trait.impl/core/panic/unwind_safe/trait.UnwindSafe.js
index 988415ca0c..cc8f0badcc 100644
--- a/trait.impl/core/panic/unwind_safe/trait.UnwindSafe.js
+++ b/trait.impl/core/panic/unwind_safe/trait.UnwindSafe.js
@@ -25,7 +25,7 @@
 "parquet":[["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=\"parquet/errors/enum.ParquetError.html\" title=\"enum parquet::errors::ParquetError\">ParquetError</a>",1,["parquet::errors::ParquetError"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait c [...]
 "parquet_concat":[["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=\"parquet_concat/struct.Args.html\" title=\"struct parquet_concat::Args\">Args</a>",1,["parquet_concat::Args"]]],
 "parquet_derive":[["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=\"parquet_derive/parquet_field/struct.Field.html\" title=\"struct parquet_derive::parquet_field::Field\">Field</a>",1,["parquet_derive::parquet_field::Field"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindS [...]
-"parquet_derive_test":[["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::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"parquet_derive_test/struct.ACompleteRecord.html\" title=\"struct parquet_derive_test::ACompleteRecord\">ACompleteRecord</a>&lt;'a&gt;",1,["parquet_derive_test::ACompleteRecord"]]],
+"parquet_derive_test":[["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::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"parquet_derive_test/struct.ACompleteRecord.html\" title=\"struct parquet_derive_test::ACompleteRecord\">ACompleteRecord</a>&lt;'a&gt;",1,["parquet_derive_test::ACompleteRecord"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/ [...]
 "parquet_fromcsv":[["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=\"parquet_fromcsv/enum.ParquetFromCsvError.html\" title=\"enum parquet_fromcsv::ParquetFromCsvError\">ParquetFromCsvError</a>",1,["parquet_fromcsv::ParquetFromCsvError"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/tr [...]
 "parquet_index":[["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=\"parquet_index/struct.Args.html\" title=\"struct parquet_index::Args\">Args</a>",1,["parquet_index::Args"]]],
 "parquet_layout":[["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=\"parquet_layout/struct.ParquetFile.html\" title=\"struct parquet_layout::ParquetFile\">ParquetFile</a>",1,["parquet_layout::ParquetFile"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"t [...]
diff --git a/trait.impl/core/str/traits/trait.FromStr.js b/trait.impl/core/str/traits/trait.FromStr.js
index f2d11992da..4a9bd8cf7e 100644
--- a/trait.impl/core/str/traits/trait.FromStr.js
+++ b/trait.impl/core/str/traits/trait.FromStr.js
@@ -2,5 +2,5 @@
 "arrow_array":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html\" title=\"trait core::str::traits::FromStr\">FromStr</a> for <a class=\"struct\" href=\"arrow_array/timezone/private/struct.Tz.html\" title=\"struct arrow_array::timezone::private::Tz\">Tz</a>"]],
 "arrow_buffer":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html\" title=\"trait core::str::traits::FromStr\">FromStr</a> for <a class=\"struct\" href=\"arrow_buffer/bigint/struct.i256.html\" title=\"struct arrow_buffer::bigint::i256\">i256</a>"]],
 "arrow_cast":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html\" title=\"trait core::str::traits::FromStr\">FromStr</a> for <a class=\"struct\" href=\"arrow_cast/parse/struct.IntervalAmount.html\" title=\"struct arrow_cast::parse::IntervalAmount\">IntervalAmount</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html\" title=\"trait core::str::traits::FromStr\">FromStr</a> for <a clas [...]
-"parquet":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html\" title=\"trait core::str::traits::FromStr\">FromStr</a> for <a class=\"enum\" href=\"parquet/basic/enum.LogicalType.html\" title=\"enum parquet::basic::LogicalType\">LogicalType</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html\" title=\"trait core::str::traits::FromStr\">FromStr</a> for <a class=\"enum\" href=\"parque [...]
+"parquet":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html\" title=\"trait core::str::traits::FromStr\">FromStr</a> for <a class=\"enum\" href=\"parquet/basic/enum.Compression.html\" title=\"enum parquet::basic::Compression\">Compression</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html\" title=\"trait core::str::traits::FromStr\">FromStr</a> for <a class=\"enum\" href=\"parque [...]
 };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/trait.impl/parquet/record/record_reader/trait.RecordReader.js b/trait.impl/parquet/record/record_reader/trait.RecordReader.js
new file mode 100644
index 0000000000..bb936aed5d
--- /dev/null
+++ b/trait.impl/parquet/record/record_reader/trait.RecordReader.js
@@ -0,0 +1,3 @@
+(function() {var implementors = {
+"parquet_derive_test":[["impl <a class=\"trait\" href=\"parquet/record/record_reader/trait.RecordReader.html\" title=\"trait parquet::record::record_reader::RecordReader\">RecordReader</a>&lt;<a class=\"struct\" href=\"parquet_derive_test/struct.APartiallyCompleteRecord.html\" title=\"struct parquet_derive_test::APartiallyCompleteRecord\">APartiallyCompleteRecord</a>&gt; for <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html\" title=\"struct alloc::vec [...]
+};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/trait.impl/parquet/record/record_writer/trait.RecordWriter.js b/trait.impl/parquet/record/record_writer/trait.RecordWriter.js
index 8c67f2131d..20f9cb3f6d 100644
--- a/trait.impl/parquet/record/record_writer/trait.RecordWriter.js
+++ b/trait.impl/parquet/record/record_writer/trait.RecordWriter.js
@@ -1,3 +1,3 @@
 (function() {var implementors = {
-"parquet_derive_test":[["impl&lt;'a&gt; <a class=\"trait\" href=\"parquet/record/record_writer/trait.RecordWriter.html\" title=\"trait parquet::record::record_writer::RecordWriter\">RecordWriter</a>&lt;<a class=\"struct\" href=\"parquet_derive_test/struct.ACompleteRecord.html\" title=\"struct parquet_derive_test::ACompleteRecord\">ACompleteRecord</a>&lt;'a&gt;&gt; for &amp;[<a class=\"struct\" href=\"parquet_derive_test/struct.ACompleteRecord.html\" title=\"struct parquet_derive_test::AC [...]
+"parquet_derive_test":[["impl <a class=\"trait\" href=\"parquet/record/record_writer/trait.RecordWriter.html\" title=\"trait parquet::record::record_writer::RecordWriter\">RecordWriter</a>&lt;<a class=\"struct\" href=\"parquet_derive_test/struct.APartiallyCompleteRecord.html\" title=\"struct parquet_derive_test::APartiallyCompleteRecord\">APartiallyCompleteRecord</a>&gt; for &amp;[<a class=\"struct\" href=\"parquet_derive_test/struct.APartiallyCompleteRecord.html\" title=\"struct parquet [...]
 };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/trait.impl/std/io/trait.Write.js b/trait.impl/std/io/trait.Write.js
index 7611c9adbd..5a95056297 100644
--- a/trait.impl/std/io/trait.Write.js
+++ b/trait.impl/std/io/trait.Write.js
@@ -1,4 +1,4 @@
 (function() {var implementors = {
 "arrow":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/std/io/trait.Write.html\" title=\"trait std::io::Write\">Write</a> for <a class=\"struct\" href=\"arrow/util/string_writer/struct.StringWriter.html\" title=\"struct arrow::util::string_writer::StringWriter\">StringWriter</a>"]],
-"parquet":[["impl&lt;W: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/std/io/trait.Write.html\" title=\"trait std::io::Write\">Write</a>&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/std/io/trait.Write.html\" title=\"trait std::io::Write\">Write</a> for <a class=\"struct\" href=\"parquet/file/writer/struct.TrackedWrite.html\" title=\"struct parquet::file::writer::TrackedWrite\">TrackedWrite</a>&lt;W&gt;"],["impl <a class=\"trait\" href=\"https://doc.rust-l [...]
+"parquet":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/std/io/trait.Write.html\" title=\"trait std::io::Write\">Write</a> for <a class=\"struct\" href=\"parquet/arrow/async_writer/struct.SharedBuffer.html\" title=\"struct parquet::arrow::async_writer::SharedBuffer\">SharedBuffer</a>"],["impl&lt;W: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/std/io/trait.Write.html\" title=\"trait std::io::Write\">Write</a>&gt; <a class=\"trait\" href=\"https://doc.r [...]
 };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/type.impl/arrow_flight/gen/flight_service_client/struct.FlightServiceClient.js b/type.impl/arrow_flight/gen/flight_service_client/struct.FlightServiceClient.js
index b212a5d8af..884058b6ae 100644
--- a/type.impl/arrow_flight/gen/flight_service_client/struct.FlightServiceClient.js
+++ b/type.impl/arrow_flight/gen/flight_service_client/struct.FlightServiceClient.js
@@ -1,3 +1,3 @@
 (function() {var type_impls = {
-"arrow_integration_testing":[["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-FlightServiceClient%3CChannel%3E\" class=\"impl\"><a href=\"#impl-FlightServiceClient%3CChannel%3E\" class=\"anchor\">§</a><h3 class=\"code-header\">impl FlightServiceClient&lt;<a class=\"struct\" href=\"https://docs.rs/tonic/0.10.2/tonic/transport/channel/struct.Channel.html\" title=\"struct tonic::transport::channel::Channel\">Channel</a>&gt;</h3></section></summary><div class= [...]
+"arrow_integration_testing":[["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-FlightServiceClient%3CChannel%3E\" class=\"impl\"><a class=\"src rightside\" href=\"src/arrow_flight/arrow.flight.protocol.rs.html#309\">source</a><a href=\"#impl-FlightServiceClient%3CChannel%3E\" class=\"anchor\">§</a><h3 class=\"code-header\">impl <a class=\"struct\" href=\"arrow_flight/gen/flight_service_client/struct.FlightServiceClient.html\" title=\"struct arrow_flight::ge [...]
 };if (window.register_type_impls) {window.register_type_impls(type_impls);} else {window.pending_type_impls = type_impls;}})()
\ No newline at end of file
diff --git a/type.impl/parquet/file/statistics/struct.ValueStatistics.js b/type.impl/parquet/file/statistics/struct.ValueStatistics.js
index 0e2e64ba02..bd8d351bb5 100644
--- a/type.impl/parquet/file/statistics/struct.ValueStatistics.js
+++ b/type.impl/parquet/file/statistics/struct.ValueStatistics.js
@@ -1,3 +1,3 @@
 (function() {var type_impls = {
-"parquet":[["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-ValueStatistics%3CT%3E\" class=\"impl\"><a class=\"src rightside\" href=\"src/parquet/file/statistics.rs.html#438-535\">source</a><a href=\"#impl-ValueStatistics%3CT%3E\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;T: <a class=\"trait\" href=\"parquet/data_type/private/trait.ParquetValueType.html\" title=\"trait parquet::data_type::private::ParquetValueType\">ParquetValueType</a>&gt; < [...]
+"parquet":[["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-ValueStatistics%3CT%3E\" class=\"impl\"><a class=\"src rightside\" href=\"src/parquet/file/statistics.rs.html#438-535\">source</a><a href=\"#impl-ValueStatistics%3CT%3E\" class=\"anchor\">§</a><h3 class=\"code-header\">impl&lt;T: <a class=\"trait\" href=\"parquet/data_type/private/trait.ParquetValueType.html\" title=\"trait parquet::data_type::private::ParquetValueType\">ParquetValueType</a>&gt; < [...]
 };if (window.register_type_impls) {window.register_type_impls(type_impls);} else {window.pending_type_impls = type_impls;}})()
\ No newline at end of file
diff --git a/type.impl/parquet/format/struct.KeyValue.js b/type.impl/parquet/format/struct.KeyValue.js
index 520b915426..304d0bee7a 100644
--- a/type.impl/parquet/format/struct.KeyValue.js
+++ b/type.impl/parquet/format/struct.KeyValue.js
@@ -1,3 +1,3 @@
 (function() {var type_impls = {
-"parquet":[["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-KeyValue\" class=\"impl\"><a class=\"src rightside\" href=\"src/parquet/format.rs.html#3061-3068\">source</a><a href=\"#impl-KeyValue\" class=\"anchor\">§</a><h3 class=\"code-header\">impl <a class=\"struct\" href=\"parquet/format/struct.KeyValue.html\" title=\"struct parquet::format::KeyValue\">KeyValue</a></h3></section></summary><div class=\"impl-items\"><section id=\"method.new\" class=\"metho [...]
+"parquet":[["<details class=\"toggle implementors-toggle\" open><summary><section id=\"impl-KeyValue\" class=\"impl\"><a class=\"src rightside\" href=\"src/parquet/format.rs.html#3061-3068\">source</a><a href=\"#impl-KeyValue\" class=\"anchor\">§</a><h3 class=\"code-header\">impl <a class=\"struct\" href=\"parquet/format/struct.KeyValue.html\" title=\"struct parquet::format::KeyValue\">KeyValue</a></h3></section></summary><div class=\"impl-items\"><section id=\"method.new\" class=\"metho [...]
 };if (window.register_type_impls) {window.register_type_impls(type_impls);} else {window.pending_type_impls = type_impls;}})()
\ No newline at end of file