# Table of Contents - [Badges](#badges) - [About Docs.rs](#about-docs-rs) - [arrow 58.1.0 - Docs.rs](#arrow-58-1-0-docs-rs) - [Builds](#builds) - [Metadata](#metadata) - [Download](#download) - [Rustdoc JSON](#rustdoc-json) - [Shorthand URLs](#shorthand-urls) - [Queue - Docs.rs](#queue-docs-rs) - [Int32Array in arrow::array - Rust](#int32array-in-arrow-array-rust) - [ArrayRef in arrow::array - Rust](#arrayref-in-arrow-array-rust) - [cast in arrow::compute - Rust](#cast-in-arrow-compute-rust) - [filter in arrow::compute - Rust](#filter-in-arrow-compute-rust) - [ArrayAccessor in arrow::array - Rust](#arrayaccessor-in-arrow-array-rust) - [arrow_array - Rust](#arrow-array-rust) - [DataType in arrow::datatypes - Rust](#datatype-in-arrow-datatypes-rust) - [AsArray in arrow::array - Rust](#asarray-in-arrow-array-rust) - [Array in arrow::array - Rust](#array-in-arrow-array-rust) - [arrow::compute - Rust](#arrow-compute-rust) - [arrow::array - Rust](#arrow-array-rust) - [List of all items in this crate](#list-of-all-items-in-this-crate) - [sort in arrow::compute - Rust](#sort-in-arrow-compute-rust) - [min in arrow::compute - Rust](#min-in-arrow-compute-rust) - [take in arrow::compute - Rust](#take-in-arrow-compute-rust) - [max in arrow::compute - Rust](#max-in-arrow-compute-rust) - [sum in arrow::compute - Rust](#sum-in-arrow-compute-rust) - [RecordBatch in arrow::array - Rust](#recordbatch-in-arrow-array-rust) - [arrow::util::pretty - Rust](#arrow-util-pretty-rust) - [arrow::array::builder - Rust](#arrow-array-builder-rust) - [Schema in arrow::datatypes - Rust](#schema-in-arrow-datatypes-rust) - [arrow_csv - Rust](#arrow-csv-rust) - [arrow_string - Rust](#arrow-string-rust) - [arrow_row - Rust](#arrow-row-rust) - [arrow_json - Rust](#arrow-json-rust) - [arrow_pyarrow - Rust](#arrow-pyarrow-rust) - [arrow_flight - Rust](#arrow-flight-rust) - [Allocation in arrow::alloc - Rust](#allocation-in-arrow-alloc-rust) - [arrow::alloc - Rust](#arrow-alloc-rust) - [arrow::error - Rust](#arrow-error-rust) - [arrow::ffi - Rust](#arrow-ffi-rust) - [arrow::buffer - Rust](#arrow-buffer-rust) - [arrow_avro - Rust](#arrow-avro-rust) - [arrow::datatypes - Rust](#arrow-datatypes-rust) - [parquet 58.1.0 - Docs.rs](#parquet-58-1-0-docs-rs) - [arrow::record_batch - Rust](#arrow-record-batch-rust) - [Releases - Docs.rs](#releases-docs-rs) - [arrow-ipc 58.1.0 - Docs.rs](#arrow-ipc-58-1-0-docs-rs) - [arrow-data 58.1.0 - Docs.rs](#arrow-data-58-1-0-docs-rs) - [arrow 58.1.0 - Docs.rs](#arrow-58-1-0-docs-rs) - [hashtree_merge - Rust](#hashtree-merge-rust) - [memmap2 0.9.10 - Docs.rs](#memmap2-0-9-10-docs-rs) - [arrow-ord 58.1.0 - Docs.rs](#arrow-ord-58-1-0-docs-rs) - [memmap2 0.9.10 - Docs.rs](#memmap2-0-9-10-docs-rs) - [arrow 58.1.0 - Docs.rs](#arrow-58-1-0-docs-rs) - [arrow 58.1.0 - Docs.rs](#arrow-58-1-0-docs-rs) - [arrow_ord::cmp - Rust](#arrow-ord-cmp-rust) - [arrow_arith::arity - Rust](#arrow-arith-arity-rust) - [List of all items in this crate](#list-of-all-items-in-this-crate) - [List of all items in this crate](#list-of-all-items-in-this-crate) - [arrow_ord::partition - Rust](#arrow-ord-partition-rust) - [a2a_protocol_server - Rust](#a2a-protocol-server-rust) - [btrfs_cli - Rust](#btrfs-cli-rust) - [Buffer in arrow_buffer::buffer - Rust](#buffer-in-arrow-buffer-buffer-rust) - [MutableBuffer in arrow_buffer::buffer - Rust](#mutablebuffer-in-arrow-buffer-buffer-rust) - [arrow_ord::sort - Rust](#arrow-ord-sort-rust) - [SchemaRef in arrow_schema - Rust](#schemaref-in-arrow-schema-rust) - [zip in arrow_select::zip - Rust](#zip-in-arrow-select-zip-rust) - [MemoryPool in arrow_buffer - Rust](#memorypool-in-arrow-buffer-rust) - [arrow_schema::extension - Rust](#arrow-schema-extension-rust) - [List of all items in this crate](#list-of-all-items-in-this-crate) - [List of all items in this crate](#list-of-all-items-in-this-crate) - [ArrayAccessor in arrow::array - Rust](#arrayaccessor-in-arrow-array-rust) - [arrow::temporal_conversions - Rust](#arrow-temporal-conversions-rust) - [java_lang - Rust](#java-lang-rust) - [List of all items in this crate](#list-of-all-items-in-this-crate) - [arrow 53.2.0 - Docs.rs](#arrow-53-2-0-docs-rs) - [jsony - Rust](#jsony-rust) - [List of all items in this crate](#list-of-all-items-in-this-crate) - [List of all items in this crate](#list-of-all-items-in-this-crate) - [jump_start - Rust](#jump-start-rust) - [List of all items in this crate](#list-of-all-items-in-this-crate) - [jazz_chord - Rust](#jazz-chord-rust) - [jiff_sqlx - Rust](#jiff-sqlx-rust) - [arrow-ipc 58.1.0 - Docs.rs](#arrow-ipc-58-1-0-docs-rs) - [List of all items in this crate](#list-of-all-items-in-this-crate) - [arrow-data 58.1.0 - Docs.rs](#arrow-data-58-1-0-docs-rs) - [toml - Rust](#toml-rust) - [arrow_data::ffi - Rust](#arrow-data-ffi-rust) - [StreamReader in arrow_ipc::reader - Rust](#streamreader-in-arrow-ipc-reader-rust) - [hashtree_config - Rust](#hashtree-config-rust) - [apache_avro - Rust](#apache-avro-rust) - [clap - Rust](#clap-rust) - [Mmap in memmap2 - Rust](#mmap-in-memmap2-rust) - [FileReader in arrow_ipc::reader - Rust](#filereader-in-arrow-ipc-reader-rust) - [Docs.rs](#docs-rs) - [arrow 58.1.0 - Docs.rs](#arrow-58-1-0-docs-rs) - [arrow 58.1.0 - Docs.rs](#arrow-58-1-0-docs-rs) - [arrow 58.1.0 - Docs.rs](#arrow-58-1-0-docs-rs) - [arrow-ipc 58.1.0 - Docs.rs](#arrow-ipc-58-1-0-docs-rs) - [arrow-data 58.1.0 - Docs.rs](#arrow-data-58-1-0-docs-rs) - [add in arrow_arith::numeric - Rust](#add-in-arrow-arith-numeric-rust) - [arrow_arith::temporal - Rust](#arrow-arith-temporal-rust) - [arrow-select 58.1.0 - Docs.rs](#arrow-select-58-1-0-docs-rs) - [arrow-ord 58.1.0 - Docs.rs](#arrow-ord-58-1-0-docs-rs) - [arrow_schema::ffi - Rust](#arrow-schema-ffi-rust) - [arrow_select::dictionary - Rust](#arrow-select-dictionary-rust) - [arrow-schema 58.1.0 - Docs.rs](#arrow-schema-58-1-0-docs-rs) - [arrow-cast 58.1.0 - Docs.rs](#arrow-cast-58-1-0-docs-rs) - [arrow 58.1.0 - Docs.rs](#arrow-58-1-0-docs-rs) - [memmap2 - Rust](#memmap2-rust) - [List of all items in this crate](#list-of-all-items-in-this-crate) - [serde 1.0.228 - Docs.rs](#serde-1-0-228-docs-rs) - [arrow 58.1.0 - Docs.rs](#arrow-58-1-0-docs-rs) - [arrow_cast::cast - Rust](#arrow-cast-cast-rust) - [downcast_dictionary_array in arrow - Rust](#downcast-dictionary-array-in-arrow-rust) - [arrow::ffi_stream - Rust](#arrow-ffi-stream-rust) - [lisette - Rust](#lisette-rust) - [bytes - Rust](#bytes-rust) - [btrfs_uapi - Rust](#btrfs-uapi-rust) - [arrow::util - Rust](#arrow-util-rust) - [arrow_data::decimal - Rust](#arrow-data-decimal-rust) - [tempfile - Rust](#tempfile-rust) - [lz4_flex - Rust](#lz4-flex-rust) - [num_bigint - Rust](#num-bigint-rust) - [owning_ref - Rust](#owning-ref-rust) - [csv - Rust](#csv-rust) - [Field in arrow_schema - Rust](#field-in-arrow-schema-rust) - [List of all items in this crate](#list-of-all-items-in-this-crate) - [AsArray in arrow::array - Rust](#asarray-in-arrow-array-rust) - [OffsetBuffer in arrow_buffer::buffer - Rust](#offsetbuffer-in-arrow-buffer-buffer-rust) - [a2a_protocol_client - Rust](#a2a-protocol-client-rust) --- # Badges [Docs.rs](https://docs.rs/) * [docs.rs](https://docs.rs/about/badges#) * [About docs.rs](https://docs.rs/about) * [Badges](https://docs.rs/about/badges) * [Builds](https://docs.rs/about/builds) * [Metadata](https://docs.rs/about/metadata) * [Shorthand URLs](https://docs.rs/about/redirections) * [Download](https://docs.rs/about/download) * [Rustdoc JSON](https://docs.rs/about/rustdoc-json) * [Build queue](https://docs.rs/releases/queue) * [Privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#docs.rs) * [Rust](https://docs.rs/about/badges#) * [Rust website](https://www.rust-lang.org/) * [The Book](https://doc.rust-lang.org/book/) * [Standard Library API Reference](https://doc.rust-lang.org/std/) * [Rust by Example](https://doc.rust-lang.org/rust-by-example/) * [The Cargo Guide](https://doc.rust-lang.org/cargo/guide/) * [Clippy Documentation](https://doc.rust-lang.org/nightly/clippy) Badges ====== Docs.rs no longer has its own badges. Consider using [shields.io](https://shields.io/) instead. --- # About Docs.rs [Docs.rs](https://docs.rs/) * [docs.rs](https://docs.rs/about#) * [About docs.rs](https://docs.rs/about) * [Badges](https://docs.rs/about/badges) * [Builds](https://docs.rs/about/builds) * [Metadata](https://docs.rs/about/metadata) * [Shorthand URLs](https://docs.rs/about/redirections) * [Download](https://docs.rs/about/download) * [Rustdoc JSON](https://docs.rs/about/rustdoc-json) * [Build queue](https://docs.rs/releases/queue) * [Privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#docs.rs) * [Rust](https://docs.rs/about#) * [Rust website](https://www.rust-lang.org/) * [The Book](https://doc.rust-lang.org/book/) * [Standard Library API Reference](https://doc.rust-lang.org/std/) * [Rust by Example](https://doc.rust-lang.org/rust-by-example/) * [The Cargo Guide](https://doc.rust-lang.org/cargo/guide/) * [Clippy Documentation](https://doc.rust-lang.org/nightly/clippy) About Docs.rs ============= Docs.rs is an [open source](https://github.com/rust-lang/docs.rs) documentation host for crates of the [Rust Programming Language](https://www.rust-lang.org/) . All libraries published to [crates.io](https://crates.io/) are documented. If you just published a crate, your crate is likely still in [the queue](https://docs.rs/releases/queue) . The source code of Docs.rs is available on [GitHub](https://github.com/rust-lang/docs.rs) . If you ever encounter an issue, don't hesitate to report it! (And thanks in advance!) [More about Docs.rs](https://docs.rs/about#more-about-docsrs) -------------------------------------------------------------- 1. [Badges](https://docs.rs/about/badges) : How to use badges generated by Docs.rs 2. [Builds](https://docs.rs/about/builds) : How Docs.rs builds documentation for a crate 3. [Metadata](https://docs.rs/about/metadata) : How you can configure a build 4. [Redirections](https://docs.rs/about/redirections) : How Docs.rs uses semantic versioning in URLs ### [Version](https://docs.rs/about#version) Currently running Docs.rs version is: **0.0.0 (da7690ee 2026-03-15 )** ### [Builds](https://docs.rs/about#builds) Summaries of the documentation build processes [are available at /releases/](https://docs.rs/releases) . ### [JavaScript](https://docs.rs/about#javascript) JavaScript in support of documentation is allowed but not guaranteed to work on docs.rs. What that means: If you write documentation that inlines some JavaScript (like [KaTeX](https://katex.org/) ), that's allowed, and will probably work today but may break in the future. However, it's not allowed to put JavaScript or other content in docs published on docs.rs for the purpose of tracking visitors. For instance, adding Google Analytics scripts, tracking pixels, or site verification for services like Google Search Console. Crates that do this will have the relevant versions removed and may be blocked from docs.rs. ### [Contact](https://docs.rs/about#contact) Docs.rs is run and maintained by the [Docs.rs team](https://www.rust-lang.org/governance/teams/dev-tools#team-docs-rs) . You can find us in #t-docs-rs on [Zulip](https://rust-lang.zulipchat.com/#narrow/stream/356853-t-docs-rs) . --- # arrow 58.1.0 - Docs.rs [Docs.rs](https://docs.rs/) * [arrow-58.1.0](https://docs.rs/crate/arrow/latest "Rust implementation of Apache Arrow") * [Platform](https://docs.rs/crate/arrow/latest/features#) * [x86\_64-unknown-linux-gnu](https://docs.rs/arrow/latest/arrow/) * [Feature flags](https://docs.rs/crate/arrow/latest/features "Browse available feature flags of arrow-58.1.0") * [docs.rs](https://docs.rs/crate/arrow/latest/features#) * [About docs.rs](https://docs.rs/about) * [Badges](https://docs.rs/about/badges) * [Builds](https://docs.rs/about/builds) * [Metadata](https://docs.rs/about/metadata) * [Shorthand URLs](https://docs.rs/about/redirections) * [Download](https://docs.rs/about/download) * [Rustdoc JSON](https://docs.rs/about/rustdoc-json) * [Build queue](https://docs.rs/releases/queue) * [Privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#docs.rs) * [Rust](https://docs.rs/crate/arrow/latest/features#) * [Rust website](https://www.rust-lang.org/) * [The Book](https://doc.rust-lang.org/book/) * [Standard Library API Reference](https://doc.rust-lang.org/std/) * [Rust by Example](https://doc.rust-lang.org/rust-by-example/) * [The Cargo Guide](https://doc.rust-lang.org/cargo/guide/) * [Clippy Documentation](https://doc.rust-lang.org/nightly/clippy) arrow 58.1.0 ============ Rust implementation of Apache Arrow * [Crate](https://docs.rs/crate/arrow/latest) * [Source](https://docs.rs/crate/arrow/latest/source/) * [Builds](https://docs.rs/crate/arrow/latest/builds) * [Feature flags](https://docs.rs/crate/arrow/latest/features) [Documentation](https://docs.rs/arrow/latest/arrow/) * Feature flags * [default](https://docs.rs/crate/arrow/latest/features#default) * [csv](https://docs.rs/crate/arrow/latest/features#csv) * [ipc](https://docs.rs/crate/arrow/latest/features#ipc) * [json](https://docs.rs/crate/arrow/latest/features#json) * [arrow-csv](https://docs.rs/crate/arrow/latest/features#arrow-csv) * [arrow-ipc](https://docs.rs/crate/arrow/latest/features#arrow-ipc) * [arrow-json](https://docs.rs/crate/arrow/latest/features#arrow-json) * [async](https://docs.rs/crate/arrow/latest/features#async) * [canonical\_extension\_types](https://docs.rs/crate/arrow/latest/features#canonical_extension_types) * [chrono-tz](https://docs.rs/crate/arrow/latest/features#chrono-tz) * [ffi](https://docs.rs/crate/arrow/latest/features#ffi) * [force\_validate](https://docs.rs/crate/arrow/latest/features#force_validate) * [ipc\_compression](https://docs.rs/crate/arrow/latest/features#ipc_compression) * [pool](https://docs.rs/crate/arrow/latest/features#pool) * [prettyprint](https://docs.rs/crate/arrow/latest/features#prettyprint) * [pyarrow](https://docs.rs/crate/arrow/latest/features#pyarrow) * [test\_utils](https://docs.rs/crate/arrow/latest/features#test_utils) arrow ===== There is very little structured metadata to build this page from currently. You should check the [main library docs](https://docs.rs/arrow/latest/arrow/) , [readme](https://docs.rs/crate/arrow/latest) , or [Cargo.toml](https://docs.rs/crate/arrow/latest/source/Cargo.toml.orig) in case the author documented the features in them. This version has **16** feature flags, **6** of them enabled by **default**. ### default * [csv](https://docs.rs/crate/arrow/latest/features#csv) (default) * [ipc](https://docs.rs/crate/arrow/latest/features#ipc) (default) * [json](https://docs.rs/crate/arrow/latest/features#json) (default) ### csv (default) * [arrow-csv](https://docs.rs/crate/arrow/latest/features#arrow-csv) (default) ### ipc (default) * [arrow-ipc](https://docs.rs/crate/arrow/latest/features#arrow-ipc) (default) ### json (default) * [arrow-json](https://docs.rs/crate/arrow/latest/features#arrow-json) (default) ### arrow-csv (default) * dep:[arrow-csv](https://docs.rs/arrow-csv/^58.1.0/) (default) ### arrow-ipc (default) * dep:[arrow-ipc](https://docs.rs/arrow-ipc/^58.1.0/) (default) ### arrow-json (default) * dep:[arrow-json](https://docs.rs/arrow-json/^58.1.0/) (default) ### async * [arrow-array](https://docs.rs/crate/arrow-array/^58.1.0) /[async](https://docs.rs/crate/arrow-array/^58.1.0/features#async) ### canonical\_extension\_types * [arrow-schema](https://docs.rs/crate/arrow-schema/^58.1.0) /[canonical\_extension\_types](https://docs.rs/crate/arrow-schema/^58.1.0/features#canonical_extension_types) ### chrono-tz * [arrow-array](https://docs.rs/crate/arrow-array/^58.1.0) /[chrono-tz](https://docs.rs/crate/arrow-array/^58.1.0/features#chrono-tz) ### ffi * [arrow-array](https://docs.rs/crate/arrow-array/^58.1.0) /[ffi](https://docs.rs/crate/arrow-array/^58.1.0/features#ffi) * [arrow-data](https://docs.rs/crate/arrow-data/^58.1.0) /[ffi](https://docs.rs/crate/arrow-data/^58.1.0/features#ffi) * [arrow-schema](https://docs.rs/crate/arrow-schema/^58.1.0) /[ffi](https://docs.rs/crate/arrow-schema/^58.1.0/features#ffi) ### force\_validate * [arrow-array](https://docs.rs/crate/arrow-array/^58.1.0) /[force\_validate](https://docs.rs/crate/arrow-array/^58.1.0/features#force_validate) * [arrow-data](https://docs.rs/crate/arrow-data/^58.1.0) /[force\_validate](https://docs.rs/crate/arrow-data/^58.1.0/features#force_validate) ### ipc\_compression * [arrow-ipc](https://docs.rs/crate/arrow-ipc/^58.1.0) /[lz4](https://docs.rs/crate/arrow-ipc/^58.1.0/features#lz4) * [arrow-ipc](https://docs.rs/crate/arrow-ipc/^58.1.0) /[zstd](https://docs.rs/crate/arrow-ipc/^58.1.0/features#zstd) * [ipc](https://docs.rs/crate/arrow/latest/features#ipc) (default) ### pool * [arrow-array](https://docs.rs/crate/arrow-array/^58.1.0) /[pool](https://docs.rs/crate/arrow-array/^58.1.0/features#pool) ### prettyprint * [arrow-cast](https://docs.rs/crate/arrow-cast/^58.1.0) /[prettyprint](https://docs.rs/crate/arrow-cast/^58.1.0/features#prettyprint) ### pyarrow * dep:[arrow-pyarrow](https://docs.rs/arrow-pyarrow/^58.1.0/) * [ffi](https://docs.rs/crate/arrow/latest/features#ffi) ### test\_utils * dep:[half](https://docs.rs/half/^2.1/) * dep:[rand](https://docs.rs/rand/^0.9/) --- # Builds [Docs.rs](https://docs.rs/) * [docs.rs](https://docs.rs/about/builds#) * [About docs.rs](https://docs.rs/about) * [Badges](https://docs.rs/about/badges) * [Builds](https://docs.rs/about/builds) * [Metadata](https://docs.rs/about/metadata) * [Shorthand URLs](https://docs.rs/about/redirections) * [Download](https://docs.rs/about/download) * [Rustdoc JSON](https://docs.rs/about/rustdoc-json) * [Build queue](https://docs.rs/releases/queue) * [Privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#docs.rs) * [Rust](https://docs.rs/about/builds#) * [Rust website](https://www.rust-lang.org/) * [The Book](https://doc.rust-lang.org/book/) * [Standard Library API Reference](https://doc.rust-lang.org/std/) * [Rust by Example](https://doc.rust-lang.org/rust-by-example/) * [The Cargo Guide](https://doc.rust-lang.org/cargo/guide/) * [Clippy Documentation](https://doc.rust-lang.org/nightly/clippy) Builds ====== Docs.rs automatically builds documentation for crates released on [crates.io](https://crates.io/) . It may take a while to build your crate, depending on how many crates are in [the queue](https://docs.rs/releases/queue) . All crates are built in a sandbox using the nightly release of the Rust compiler. The current version in use is `rustc 1.96.0-nightly (cf7da0b72 2026-03-30)`. ### [Notes on using Docs.rs](https://docs.rs/about/builds#notes-on-docsrs) #### [Setting a README](https://docs.rs/about/builds#setting-a-readme) The README displayed on docs.rs follows Cargo’s `package.readme` rules. If `readme` is not set, docs.rs will look for `README.md`, `README.txt`, or `README` in the crate root. Set `readme = "path/to/file"` to use a custom file, `readme = true` to use `README.md`, or `readme = false` to disable the README. #### [Detecting Docs.rs](https://docs.rs/about/builds#detecting-docsrs) To recognize Docs.rs from your Rust code, you can test for the `docsrs` cfg, e.g.: #[cfg(docsrs)] mod documentation; The \`docsrs\` cfg only applies to the final rustdoc invocation (i.e. the crate currently being documented). It does not apply to dependencies (including workspace ones). To recognize Docs.rs from `build.rs` files, you can test for the environment variable `DOCS_RS`, e.g.: if std::env::var("DOCS_RS").is_ok() { // ... your code here ... } This approach can be helpful if you need dependencies for building the library, but not for building the documentation. #### [Cross-compiling](https://docs.rs/about/builds#cross-compiling) All targets other than `x86_64-unknown-linux-gnu` are cross-compiled. For implementation reasons, this is unlikely to change for the foreseeable future. You can configure how your crate is built by adding [package metadata](https://docs.rs/about/metadata) to your `Cargo.toml`, e.g.: [package.metadata.docs.rs] rustc-args = ["--cfg", "my_cfg"] Here, the compiler arguments are set so that `#[cfg(my_cfg)]` (not to be confused with `#[cfg(doc)]`) can be used for conditional compilation. This approach is also useful for setting [cargo features](https://doc.rust-lang.org/cargo/reference/features.html) . #### [Testing documentation builds in CI](https://docs.rs/about/builds#testing-builds-ci) When you start using docs.rs metadata or `#[cfg(docsrs)]` in your code, you might run into issues where your code builds fine locally but fails on docs.rs. To avoid this, you can add [`cargo docs-rs`](https://github.com/dtolnay/cargo-docs-rs) to your test-suite. While it doesn't perfectly replicate our build environment, it can catch many common issues. #### [Testing documentation builds locally](https://docs.rs/about/builds#testing-builds-locally) The Docs.rs [README](https://github.com/rust-lang/docs.rs/blob/master/README.md#build-subcommand) describes how to build unpublished crate documentation locally using the same build environment as the Docs.rs build agent. ### [Diagnosing failed builds](https://docs.rs/about/builds#diagnosing-failed-builds) #### [Missing dependencies](https://docs.rs/about/builds#missing-dependencies) Missing dependencies are a common reason for failed builds. Docs.rs dependencies are managed through [crates-build-env](https://github.com/rust-lang/crates-build-env) . See [Forge](https://forge.rust-lang.org/docs-rs/add-dependencies.html) for how to add a dependency. #### [Write attempt on read-only directories](https://docs.rs/about/builds#read-only-directories) Most of the sandbox is a read-only file system, including the source directory of your crate and its dependencies. If your `build.rs` generates files that are relevant for documentation, consider writing to the [cargo output directory](https://doc.rust-lang.org/cargo/reference/environment-variables.html#environment-variables-cargo-sets-for-crates) , passed in the environment variable `OUT_DIR`. #### [Hitting resource limits](https://docs.rs/about/builds#hitting-resource-limits) All the builds are executed inside a sandbox with limited resources. The current limits are: | | | | --- | --- | | Available RAM | 6.44 GB | | Maximum rustdoc execution time | 15m | | Maximum size of a build log | 102.4 kB | | Network access | blocked | | Maximum number of build targets | 10 | If your build fails because it hit one of these limits, please [open an issue](https://github.com/rust-lang/docs.rs/issues/new/choose) to get them increased for your crate. Since our build agent has finite resources, we have to consider each case individually. However, there are a few general policies: * Network access will not be enabled for any crate. * Any crate that requests a time extension will be limited to one target. #### [Other failures and requesting rebuilds](https://docs.rs/about/builds#failures-and-rebuilds) If your crate fails to build for a reason not listed here, you can rebuild it from [crates.io](https://crates.io/) website as you can see below: ![crates.io dropdown menu showing two items: yank and rebuild docs](https://docs.rs/-/static/trigger-rebuild.png) Or you can [file an issue](https://github.com/rust-lang/docs.rs/issues) if you think it's a **docs.rs** issue. --- # Metadata [Docs.rs](https://docs.rs/) * [docs.rs](https://docs.rs/about/metadata#) * [About docs.rs](https://docs.rs/about) * [Badges](https://docs.rs/about/badges) * [Builds](https://docs.rs/about/builds) * [Metadata](https://docs.rs/about/metadata) * [Shorthand URLs](https://docs.rs/about/redirections) * [Download](https://docs.rs/about/download) * [Rustdoc JSON](https://docs.rs/about/rustdoc-json) * [Build queue](https://docs.rs/releases/queue) * [Privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#docs.rs) * [Rust](https://docs.rs/about/metadata#) * [Rust website](https://www.rust-lang.org/) * [The Book](https://doc.rust-lang.org/book/) * [Standard Library API Reference](https://doc.rust-lang.org/std/) * [Rust by Example](https://doc.rust-lang.org/rust-by-example/) * [The Cargo Guide](https://doc.rust-lang.org/cargo/guide/) * [Clippy Documentation](https://doc.rust-lang.org/nightly/clippy) Metadata for custom builds ========================== You can customize docs.rs builds by defining `[package.metadata.docs.rs]` table in your crates' `Cargo.toml`. The available configuration flags you can customize are: [package] name = "test" [package.metadata.docs.rs] # Features to pass to Cargo (default: []) features = ["feature1", "feature2"] # Whether to pass `--all-features` to Cargo (default: false) all-features = true # Whether to pass `--no-default-features` to Cargo (default: false) no-default-features = true # Target to test build on, used as the default landing page (default: "x86_64-unknown-linux-gnu") # # Any target supported by rustup can be used. default-target = "x86_64-unknown-linux-gnu" # Targets to build (default: see below) # # Any target supported by rustup can be used. # # Default targets: # - x86_64-unknown-linux-gnu # - aarch64-apple-darwin # - x86_64-pc-windows-msvc # - aarch64-unknown-linux-gnu # - i686-pc-windows-msvc # # Set this to `[]` to only build the default target. # # If `default-target` is unset, the first element of `targets` is treated as the default target. # Otherwise, these `targets` are built in addition to the default target. # If both `default-target` and `targets` are unset, # all tier-one targets will be built and `x86_64-unknown-linux-gnu` will be used as the default target. targets = ["aarch64-apple-darwin", "x86_64-pc-windows-msvc"] # If you want to instead add another target without overwriting the default ones: additional-targets = ["i686-apple-darwin"] # Additional `RUSTFLAGS` to set (default: []) rustc-args = ["--example-rustc-arg"] # Additional `RUSTDOCFLAGS` to set (default: []) rustdoc-args = ["--example-rustdoc-arg"] # List of command line arguments for `cargo`. # # These cannot be a subcommand, they may only be options. cargo-args = ["-Z", "build-std"] --- # Download [Docs.rs](https://docs.rs/) * [docs.rs](https://docs.rs/about/download#) * [About docs.rs](https://docs.rs/about) * [Badges](https://docs.rs/about/badges) * [Builds](https://docs.rs/about/builds) * [Metadata](https://docs.rs/about/metadata) * [Shorthand URLs](https://docs.rs/about/redirections) * [Download](https://docs.rs/about/download) * [Rustdoc JSON](https://docs.rs/about/rustdoc-json) * [Build queue](https://docs.rs/releases/queue) * [Privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#docs.rs) * [Rust](https://docs.rs/about/download#) * [Rust website](https://www.rust-lang.org/) * [The Book](https://doc.rust-lang.org/book/) * [Standard Library API Reference](https://doc.rust-lang.org/std/) * [Rust by Example](https://doc.rust-lang.org/rust-by-example/) * [The Cargo Guide](https://doc.rust-lang.org/cargo/guide/) * [Clippy Documentation](https://doc.rust-lang.org/nightly/clippy) Documentation download ====================== docs.rs stores the `rustdoc` output in a ZIP file. These archives can be used as a base for further processing of the documentation for offline readers like Dash or Zeal. **They are not directly usable for offline documentation.** URLs ---- The download is possible for specific or semantic versions: * [docs.rs/crate/clap/4.0.4/download](https://docs.rs/crate/clap/4.0.4/download) * [docs.rs/crate/clap/~4/download](https://docs.rs/crate/clap/%7E4/download) But also via [docs.rs/crate/clap/latest/download](https://docs.rs/crate/clap/latest/download) to get the latest version. processing / caveats -------------------- To unpack the ZIP file you need any zip utility that supports PKZIP version 4.6 and BZIP2 compression. The archives will contain all the documentation HTML files for all targets and CSS/JS assets that are specific to the build. The default target will be found at the root, and other targets each in its own subfolder. Docs.rs is running rustdoc with `--static-root-path "/-/rustdoc.static/"`, which leads to all references to static assets breaking if they are not available under that path. Older builds used `--static-root-path "/"`, which means you will have to handle both. Since we're also adding `--emit=invocation-specific` to our build the archives will _not_ contain any static assets that are specific to the toolchain. For now these will have to be downloaded file-by-file directly from docs.rs. --- # Rustdoc JSON [Docs.rs](https://docs.rs/) * [docs.rs](https://docs.rs/about/rustdoc-json#) * [About docs.rs](https://docs.rs/about) * [Badges](https://docs.rs/about/badges) * [Builds](https://docs.rs/about/builds) * [Metadata](https://docs.rs/about/metadata) * [Shorthand URLs](https://docs.rs/about/redirections) * [Download](https://docs.rs/about/download) * [Rustdoc JSON](https://docs.rs/about/rustdoc-json) * [Build queue](https://docs.rs/releases/queue) * [Privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#docs.rs) * [Rust](https://docs.rs/about/rustdoc-json#) * [Rust website](https://www.rust-lang.org/) * [The Book](https://doc.rust-lang.org/book/) * [Standard Library API Reference](https://doc.rust-lang.org/std/) * [Rust by Example](https://doc.rust-lang.org/rust-by-example/) * [The Cargo Guide](https://doc.rust-lang.org/cargo/guide/) * [Clippy Documentation](https://doc.rust-lang.org/nightly/clippy) Rustdoc JSON ============ docs.rs builds & hosts the [`rustdoc` JSON](https://doc.rust-lang.org/rustdoc/unstable-features.html#json-output) output. This structured version of the documentation can be used for inspecting the docs and types of the crate in a programmatic way. The JSON file you're downloading might have been built with an older version of `rustdoc` so you might have to check the `format_version` attribute to determine how to parse the structure. The [`rustdoc-types`](https://docs.rs/rustdoc-types/) crate helps with this. **We started building rustdoc JSON on 2025-05-23. So any release before that won't have a download available until our rebuilds reached that release.** URLs ---- The download URLs can be generic or specific, depending on what you need. In case of rebuilds we also keep old format versions around. The endpoints _redirect_ to a download URL on `https://static.docs.rs`. **Until we rebuilt all releases, the redirect target might not exist.** By default we use \`zstd\` compression, which is more space efficient and faster to decompress. For more limited environments we also started supporting \`gzip\` compression. You can receive gzip by adding \`.gz\` to the given URL. Here some URL examples you can use. | URL | Redirects to JSON download of | | --- | --- | | [https://docs.rs/crate/clap/latest/json](https://docs.rs/crate/clap/latest/json) | latest version, default target, latest format-version | | [https://docs.rs/crate/clap/latest/json.gz](https://docs.rs/crate/clap/latest/json.gz) | latest version, default target, latest format-version, gzip compression | | [https://docs.rs/crate/clap/latest/json/42](https://docs.rs/crate/clap/latest/json/42) | latest version, default target, format-version 42 | | [https://docs.rs/crate/clap/~4/json](https://docs.rs/crate/clap/%7E4/json) | latest v4 via semver, default target, latest format-version | | [https://docs.rs/crate/clap/~4/json.zst](https://docs.rs/crate/clap/%7E4/json.zst) | latest v4 via semver, default target, latest format-version, zstd compression | | [https://docs.rs/crate/clap/latest/i686-pc-windows-msvc/json](https://docs.rs/crate/clap/latest/i686-pc-windows-msvc/json) | latest version, windows target, latest format-version | --- # Shorthand URLs [Docs.rs](https://docs.rs/) * [docs.rs](https://docs.rs/about/redirections#) * [About docs.rs](https://docs.rs/about) * [Badges](https://docs.rs/about/badges) * [Builds](https://docs.rs/about/builds) * [Metadata](https://docs.rs/about/metadata) * [Shorthand URLs](https://docs.rs/about/redirections) * [Download](https://docs.rs/about/download) * [Rustdoc JSON](https://docs.rs/about/rustdoc-json) * [Build queue](https://docs.rs/releases/queue) * [Privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#docs.rs) * [Rust](https://docs.rs/about/redirections#) * [Rust website](https://www.rust-lang.org/) * [The Book](https://doc.rust-lang.org/book/) * [Standard Library API Reference](https://doc.rust-lang.org/std/) * [Rust by Example](https://doc.rust-lang.org/rust-by-example/) * [The Cargo Guide](https://doc.rust-lang.org/cargo/guide/) * [Clippy Documentation](https://doc.rust-lang.org/nightly/clippy) Shorthand URLs ============== Docs.rs uses semver to parse URLs. You can use this feature to access crates' documentation easily. Example of URL redirections for `clap` crate: | URL | Redirects to documentation of | | --- | --- | | [docs.rs/clap](https://docs.rs/clap) | Latest version of clap | | [docs.rs/clap::Command](https://docs.rs/clap::Command) | Latest version of clap, and search for "Command" within the crate | | [docs.rs/clap/~2](https://docs.rs/clap/%7E2) | 2.\* version | | [docs.rs/clap/~2.9](https://docs.rs/clap/%7E2.9) | 2.9.\* version | | [docs.rs/clap/2.9.3](https://docs.rs/clap/2.9.3) | 2.9.3 version (you don't need `=` unlike semver) | | [docs.rs/clap/\*](https://docs.rs/clap/*) | Latest version of this page (if it still exists). "latest" or "newest" work as well as `*`. | --- # Queue - Docs.rs [Docs.rs](https://docs.rs/) * [docs.rs](https://docs.rs/releases/queue#) * [About docs.rs](https://docs.rs/about) * [Badges](https://docs.rs/about/badges) * [Builds](https://docs.rs/about/builds) * [Metadata](https://docs.rs/about/metadata) * [Shorthand URLs](https://docs.rs/about/redirections) * [Download](https://docs.rs/about/download) * [Rustdoc JSON](https://docs.rs/about/rustdoc-json) * [Build queue](https://docs.rs/releases/queue) * [Privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#docs.rs) * [Rust](https://docs.rs/releases/queue#) * [Rust website](https://www.rust-lang.org/) * [The Book](https://doc.rust-lang.org/book/) * [Standard Library API Reference](https://doc.rust-lang.org/std/) * [Rust by Example](https://doc.rust-lang.org/rust-by-example/) * [The Cargo Guide](https://doc.rust-lang.org/cargo/guide/) * [Clippy Documentation](https://doc.rust-lang.org/nightly/clippy) Queue ===== crate documentation scheduled to build & deploy * [Recent](https://docs.rs/releases) * [Stars](https://docs.rs/releases/stars) * [Recent Failures](https://docs.rs/releases/recent-failures) * [Failures By Stars](https://docs.rs/releases/failures) * [Activity](https://docs.rs/releases/activity) * [Queue](https://docs.rs/releases/queue) **Currently being built** | release | running for | average duration | | --- | --- | --- | | [systemprompt 0.1.19](https://docs.rs/crate/systemprompt/0.1.19/builds) | 1m 7s | 1m 37s | | [hashtree-fuse 0.2.18](https://docs.rs/crate/hashtree-fuse/0.2.18/builds) | 46s | 54s | | [wacks 0.1.0](https://docs.rs/crate/wacks/0.1.0/builds) | 3s | — | | [hashtree-s3 0.2.18](https://docs.rs/crate/hashtree-s3/0.2.18/builds) | 1s | 1m 56s | **Build Queue** 1. [resend-rs 0.22.0](https://crates.io/crates/resend-rs) 2. [hashtree-blossom 0.2.18](https://crates.io/crates/hashtree-blossom) 3. [lm-sensors 0.5.1](https://crates.io/crates/lm-sensors) 4. [offerings 1.0.1-beta](https://crates.io/crates/offerings) 5. [hashtree-resolver 0.2.18](https://crates.io/crates/hashtree-resolver) 6. [hashtree-nostr 0.2.18](https://crates.io/crates/hashtree-nostr) 7. [wedeo-core 0.2.0](https://crates.io/crates/wedeo-core) 8. [wedeo-codec 0.2.0](https://crates.io/crates/wedeo-codec) 9. [wedeo-format 0.2.0](https://crates.io/crates/wedeo-format) 10. [wedeo-format-mp4 0.2.0](https://crates.io/crates/wedeo-format-mp4) 11. [hashtree-network 0.2.18](https://crates.io/crates/hashtree-network) 12. [wedeo-filter 0.2.0](https://crates.io/crates/wedeo-filter) 13. [wedeo-resample 0.2.0](https://crates.io/crates/wedeo-resample) 14. [rpress 0.4.2](https://crates.io/crates/rpress) 15. [wedeo-scale 0.2.0](https://crates.io/crates/wedeo-scale) 16. [hybrid-array 0.4.10](https://crates.io/crates/hybrid-array) 17. [wedeo-codec-pcm 0.2.0](https://crates.io/crates/wedeo-codec-pcm) 18. [wedeo-codec-h264 0.2.0](https://crates.io/crates/wedeo-codec-h264) 19. [wedeo-format-wav 0.2.0](https://crates.io/crates/wedeo-format-wav) 20. [git-remote-htree 0.2.18](https://crates.io/crates/git-remote-htree) 21. [wedeo-format-h264 0.2.0](https://crates.io/crates/wedeo-format-h264) 22. [wedeo-symphonia 0.2.0](https://crates.io/crates/wedeo-symphonia) 23. [packet-dissector-esp 0.1.0](https://crates.io/crates/packet-dissector-esp) 24. [hashtree-cli 0.2.18](https://crates.io/crates/hashtree-cli) 25. [wedeo-rav1e 0.2.0](https://crates.io/crates/wedeo-rav1e) 26. [wedeo 0.2.0](https://crates.io/crates/wedeo) 27. [potato 0.3.3](https://crates.io/crates/potato) 28. [hashtree-cashu-cli 0.2.18](https://crates.io/crates/hashtree-cashu-cli) 29. [act-types 0.2.8](https://crates.io/crates/act-types) 30. [act-sdk-macros 0.2.8](https://crates.io/crates/act-sdk-macros) 31. [act-sdk 0.2.8](https://crates.io/crates/act-sdk) 32. [tachyon-sys 0.2.0](https://crates.io/crates/tachyon-sys) 33. [tachyon-ipc 0.2.0](https://crates.io/crates/tachyon-ipc) 34. [canic-cdk 0.20.7](https://crates.io/crates/canic-cdk) 35. [tui-file-explorer 0.9.6](https://crates.io/crates/tui-file-explorer) 36. [canic-dsl-macros 0.20.7](https://crates.io/crates/canic-dsl-macros) 37. [canic-memory 0.20.7](https://crates.io/crates/canic-memory) 38. [canic-types 0.20.7](https://crates.io/crates/canic-types) 39. [canic-core 0.20.7](https://crates.io/crates/canic-core) 40. [canic-control-plane 0.20.7](https://crates.io/crates/canic-control-plane) 41. [canic-sharding-runtime 0.20.7](https://crates.io/crates/canic-sharding-runtime) 42. [canic 0.20.7](https://crates.io/crates/canic) 43. [canic-testkit 0.20.7](https://crates.io/crates/canic-testkit) 44. [canic-wasm-store 0.20.7](https://crates.io/crates/canic-wasm-store) 45. [vitrail-pg-core 0.0.3](https://crates.io/crates/vitrail-pg-core) 46. [triblespace-core 0.32.1](https://crates.io/crates/triblespace-core) 47. [vitrail-pg-macros 0.0.3](https://crates.io/crates/vitrail-pg-macros) 48. [vitrail-pg 0.0.3](https://crates.io/crates/vitrail-pg) 49. [treesitter-types-yaml 0.1.0](https://crates.io/crates/treesitter-types-yaml) 50. [triblespace-macros 0.32.1](https://crates.io/crates/triblespace-macros) 51. [triblespace 0.32.1](https://crates.io/crates/triblespace) 52. [lift-core 0.2.1](https://crates.io/crates/lift-core) 53. [lift-ast 0.2.1](https://crates.io/crates/lift-ast) 54. [ant-node 0.9.0](https://crates.io/crates/ant-node) 55. [lift-tensor 0.2.1](https://crates.io/crates/lift-tensor) 56. [lift-quantum 0.2.1](https://crates.io/crates/lift-quantum) 57. [lift-hybrid 0.2.1](https://crates.io/crates/lift-hybrid) 58. [lift-sim 0.2.1](https://crates.io/crates/lift-sim) 59. [tauri-plugin-android-mediastore 0.1.9](https://crates.io/crates/tauri-plugin-android-mediastore) 60. [fx-torrent 0.8.0](https://crates.io/crates/fx-torrent) 61. [lift-predict 0.2.1](https://crates.io/crates/lift-predict) 62. [perl-uri-classify 0.12.1](https://crates.io/crates/perl-uri-classify) 63. [lift-opt 0.2.1](https://crates.io/crates/lift-opt) 64. [lift-import 0.2.1](https://crates.io/crates/lift-import) 65. [lift-export 0.2.1](https://crates.io/crates/lift-export) 66. [pgpubsub 1.0.0](https://crates.io/crates/pgpubsub) 67. [packet-dissector-ethernet 0.1.0](https://crates.io/crates/packet-dissector-ethernet) 68. [lift-config 0.2.1](https://crates.io/crates/lift-config) 69. [perl-workspace-index-state-machine 0.12.1](https://crates.io/crates/perl-workspace-index-state-machine) 70. [perl-workspace-index-monitoring 0.12.1](https://crates.io/crates/perl-workspace-index-monitoring) 71. [lift-cli 0.2.1](https://crates.io/crates/lift-cli) 72. [perl-workspace-index-slo 0.12.1](https://crates.io/crates/perl-workspace-index-slo) 73. [perl-ts-heredoc-analysis 0.12.1](https://crates.io/crates/perl-ts-heredoc-analysis) 74. [fastskip 0.1.1](https://crates.io/crates/fastskip) 75. [raiju 0.2.0](https://crates.io/crates/raiju) 76. [fynd-core 0.43.0](https://crates.io/crates/fynd-core) 77. [raiju-mcp 0.2.0](https://crates.io/crates/raiju-mcp) 78. [fynd-rpc-types 0.43.0](https://crates.io/crates/fynd-rpc-types) 79. [fynd-client 0.43.0](https://crates.io/crates/fynd-client) 80. [hooklistener-cli 1.0.0](https://crates.io/crates/hooklistener-cli) 81. [thronglets 0.5.1](https://crates.io/crates/thronglets) 82. [fynd-rpc 0.43.0](https://crates.io/crates/fynd-rpc) 83. [fynd 0.43.0](https://crates.io/crates/fynd) 84. [packet-dissector-geneve 0.1.0](https://crates.io/crates/packet-dissector-geneve) 85. [autocore-std 3.3.18](https://crates.io/crates/autocore-std) 86. [awssdk-instrumentation 0.1.1](https://crates.io/crates/awssdk-instrumentation) 87. [purple-ssh 2.23.0](https://crates.io/crates/purple-ssh) 88. [dwctl 8.32.1](https://crates.io/crates/dwctl) 89. [j-cli 12.7.52](https://crates.io/crates/j-cli) 90. [image\_charts 6.1.135](https://crates.io/crates/image_charts) 91. [cad-cs 0.1.0-alpha.1](https://crates.io/crates/cad-cs) 92. [sapling-crypto 0.6.2](https://crates.io/crates/sapling-crypto) 93. [packet-dissector-gre 0.1.0](https://crates.io/crates/packet-dissector-gre) 94. [vicinity 0.3.1](https://crates.io/crates/vicinity) 95. [anybytes 0.20.2](https://crates.io/crates/anybytes) 96. [harn-lexer 0.5.3](https://crates.io/crates/harn-lexer) 97. [pstd 1.0.69](https://crates.io/crates/pstd) 98. [harn-parser 0.5.3](https://crates.io/crates/harn-parser) 99. [harn-vm 0.5.3](https://crates.io/crates/harn-vm) 100. [harn-fmt 0.5.3](https://crates.io/crates/harn-fmt) 101. [clawedcode-mcp 0.0.3](https://crates.io/crates/clawedcode-mcp) 102. [harn-lint 0.5.3](https://crates.io/crates/harn-lint) 103. [clawedcode-tools 0.0.3](https://crates.io/crates/clawedcode-tools) 104. [clawedcode-api 0.0.3](https://crates.io/crates/clawedcode-api) 105. [harn-lsp 0.5.3](https://crates.io/crates/harn-lsp) 106. [clawedcode-core 0.0.3](https://crates.io/crates/clawedcode-core) 107. [harn-dap 0.5.3](https://crates.io/crates/harn-dap) 108. [clawedcode-tui 0.0.3](https://crates.io/crates/clawedcode-tui) 109. [clawedcode 0.0.3](https://crates.io/crates/clawedcode) 110. [harn-cli 0.5.3](https://crates.io/crates/harn-cli) 111. [whoami-cli 20260331.0.0](https://crates.io/crates/whoami-cli) 112. [rs-read-trimesh 2.0.7](https://crates.io/crates/rs-read-trimesh) 113. [ouija 0.1.0-alpha.149](https://crates.io/crates/ouija) 114. [sqry-lang-css 5.0.1](https://crates.io/crates/sqry-lang-css) (priority: -1) 115. [sqry-lang-dart 5.0.1](https://crates.io/crates/sqry-lang-dart) (priority: -1) 116. [sqry-lang-elixir 5.0.1](https://crates.io/crates/sqry-lang-elixir) (priority: -1) 117. [sqry-lang-go 5.0.1](https://crates.io/crates/sqry-lang-go) (priority: -1) 118. [sqry-lang-groovy 5.0.1](https://crates.io/crates/sqry-lang-groovy) (priority: -1) 119. [sqry-lang-haskell 5.0.1](https://crates.io/crates/sqry-lang-haskell) (priority: -1) 120. [sqry-lang-html 5.0.1](https://crates.io/crates/sqry-lang-html) (priority: -1) 121. [sqry-lang-java 5.0.1](https://crates.io/crates/sqry-lang-java) (priority: -1) 122. [sqry-lang-javascript 5.0.1](https://crates.io/crates/sqry-lang-javascript) (priority: -1) 123. [sqry-lang-json 5.0.1](https://crates.io/crates/sqry-lang-json) (priority: -1) 124. [sqry-lang-kotlin 5.0.1](https://crates.io/crates/sqry-lang-kotlin) (priority: -1) 125. [sqry-lang-lua 5.0.1](https://crates.io/crates/sqry-lang-lua) (priority: -1) 126. [sqry-lang-oracle-plsql 5.0.1](https://crates.io/crates/sqry-lang-oracle-plsql) (priority: -1) 127. [sqry-lang-perl 5.0.1](https://crates.io/crates/sqry-lang-perl) (priority: -1) 128. [sqry-lang-php 5.0.1](https://crates.io/crates/sqry-lang-php) (priority: -1) 129. [sqry-lang-pulumi 5.0.1](https://crates.io/crates/sqry-lang-pulumi) (priority: -1) 130. [sqry-lang-puppet 5.0.1](https://crates.io/crates/sqry-lang-puppet) (priority: -1) 131. [sqry-lang-python 5.0.1](https://crates.io/crates/sqry-lang-python) (priority: -1) 132. [sqry-lang-r 5.0.1](https://crates.io/crates/sqry-lang-r) (priority: -1) 133. [sqry-lang-ruby 5.0.1](https://crates.io/crates/sqry-lang-ruby) (priority: -1) 134. [sqry-lang-rust 5.0.1](https://crates.io/crates/sqry-lang-rust) (priority: -1) 135. [sqry-lang-salesforce-apex 5.0.1](https://crates.io/crates/sqry-lang-salesforce-apex) (priority: -1) 136. [sqry-lang-sap-abap 5.0.1](https://crates.io/crates/sqry-lang-sap-abap) (priority: -1) 137. [perl-module-name 0.12.1](https://crates.io/crates/perl-module-name) (priority: -1) 138. [sqry-lang-scala 5.0.1](https://crates.io/crates/sqry-lang-scala) (priority: -1) 139. [sqry-lang-servicenow-xanadu 5.0.1](https://crates.io/crates/sqry-lang-servicenow-xanadu) (priority: -1) 140. [sqry-lang-servicenow-xml 5.0.1](https://crates.io/crates/sqry-lang-servicenow-xml) (priority: -1) 141. [sqry-lang-shell 5.0.1](https://crates.io/crates/sqry-lang-shell) (priority: -1) 142. [rspack\_allocator 0.101.0-beta.0](https://crates.io/crates/rspack_allocator) (priority: -1) 143. [rspack\_browser 0.101.0-beta.0](https://crates.io/crates/rspack_browser) (priority: -1) 144. [rspack\_browserslist 0.101.0-beta.0](https://crates.io/crates/rspack_browserslist) (priority: -1) 145. [sqry-lang-sql 5.0.1](https://crates.io/crates/sqry-lang-sql) (priority: -1) 146. [rspack\_cacheable\_macros 0.101.0-beta.0](https://crates.io/crates/rspack_cacheable_macros) (priority: -1) 147. [rspack\_cacheable 0.101.0-beta.0](https://crates.io/crates/rspack_cacheable) (priority: -1) 148. [rspack\_collections 0.101.0-beta.0](https://crates.io/crates/rspack_collections) (priority: -1) 149. [rspack\_location 0.101.0-beta.0](https://crates.io/crates/rspack_location) (priority: -1) 150. [perl-module-path 0.12.1](https://crates.io/crates/perl-module-path) (priority: -1) 151. [rspack\_paths 0.101.0-beta.0](https://crates.io/crates/rspack_paths) (priority: -1) 152. [sqry-lang-swift 5.0.1](https://crates.io/crates/sqry-lang-swift) (priority: -1) 153. [rspack\_error 0.101.0-beta.0](https://crates.io/crates/rspack_error) (priority: -1) 154. [rspack\_regex 0.101.0-beta.0](https://crates.io/crates/rspack_regex) (priority: -1) 155. [rspack\_util 0.101.0-beta.0](https://crates.io/crates/rspack_util) (priority: -1) 156. [sqry-lang-terraform 5.0.1](https://crates.io/crates/sqry-lang-terraform) (priority: -1) 157. [rspack\_fs 0.101.0-beta.0](https://crates.io/crates/rspack_fs) (priority: -1) 158. [sqry-lang-typescript 5.0.1](https://crates.io/crates/sqry-lang-typescript) (priority: -1) 159. [rspack\_tasks 0.101.0-beta.0](https://crates.io/crates/rspack_tasks) (priority: -1) 160. [rspack\_futures 0.101.0-beta.0](https://crates.io/crates/rspack_futures) (priority: -1) 161. [rspack\_hash 0.101.0-beta.0](https://crates.io/crates/rspack_hash) (priority: -1) 162. [rspack\_macros 0.101.0-beta.0](https://crates.io/crates/rspack_macros) (priority: -1) 163. [rspack\_hook 0.101.0-beta.0](https://crates.io/crates/rspack_hook) (priority: -1) 164. [sqry-lang-svelte 5.0.1](https://crates.io/crates/sqry-lang-svelte) (priority: -1) 165. [sqry-lang-vue 5.0.1](https://crates.io/crates/sqry-lang-vue) (priority: -1) 166. [sqry-lang-zig 5.0.1](https://crates.io/crates/sqry-lang-zig) (priority: -1) 167. [sqry-plugin-registry 5.0.1](https://crates.io/crates/sqry-plugin-registry) (priority: -1) 168. [sqry-lsp 5.0.1](https://crates.io/crates/sqry-lsp) (priority: -1) 169. [sqry-mcp 5.0.1](https://crates.io/crates/sqry-mcp) (priority: -1) 170. [sqry-cli 5.0.1](https://crates.io/crates/sqry-cli) (priority: -1) 171. [perl-module-token-core 0.12.1](https://crates.io/crates/perl-module-token-core) (priority: -1) 172. [rig-candle 0.1.0](https://crates.io/crates/rig-candle) (priority: -1) 173. [rig-burn 0.1.0](https://crates.io/crates/rig-burn) (priority: -1) 174. [perl-path-normalize 0.12.1](https://crates.io/crates/perl-path-normalize) (priority: -1) 175. [perl-path-security 0.12.1](https://crates.io/crates/perl-path-security) (priority: -1) 176. [trident-config 0.13.0-rc.3](https://crates.io/crates/trident-config) (priority: -1) 177. [trident-template 0.13.0-rc.3](https://crates.io/crates/trident-template) (priority: -1) 178. [trident-client 0.13.0-rc.3](https://crates.io/crates/trident-client) (priority: -1) 179. [trident-fuzz-metrics 0.13.0-rc.3](https://crates.io/crates/trident-fuzz-metrics) (priority: -1) 180. [trident-cli 0.13.0-rc.3](https://crates.io/crates/trident-cli) (priority: -1) 181. [trident-syn 0.13.0-rc.3](https://crates.io/crates/trident-syn) (priority: -1) 182. [trident-derive-flow-executor 0.13.0-rc.3](https://crates.io/crates/trident-derive-flow-executor) (priority: -1) 183. [trident-derive-fuzz-test-methods 0.13.0-rc.3](https://crates.io/crates/trident-derive-fuzz-test-methods) (priority: -1) 184. [trident-fuzz 0.13.0-rc.3](https://crates.io/crates/trident-fuzz) (priority: -1) 185. [tantivy-bitpacker 0.10.0](https://crates.io/crates/tantivy-bitpacker) (priority: -1) 186. [tantivy-common 0.11.0](https://crates.io/crates/tantivy-common) (priority: -1) 187. [tantivy-query-grammar 0.26.0](https://crates.io/crates/tantivy-query-grammar) (priority: -1) 188. [tantivy-tokenizer-api 0.7.0](https://crates.io/crates/tantivy-tokenizer-api) (priority: -1) 189. [tantivy-sstable 0.7.0](https://crates.io/crates/tantivy-sstable) (priority: -1) 190. [tantivy-stacker 0.7.0](https://crates.io/crates/tantivy-stacker) (priority: -1) 191. [tantivy-columnar 0.7.0](https://crates.io/crates/tantivy-columnar) (priority: -1) 192. [tantivy 0.26.0](https://crates.io/crates/tantivy) (priority: -1) 193. [perl-module-resolution-path 0.12.1](https://crates.io/crates/perl-module-resolution-path) (priority: -1) 194. [re\_ros\_msg 0.31.1](https://crates.io/crates/re_ros_msg) (priority: -1) 195. [re\_backoff 0.31.1](https://crates.io/crates/re_backoff) (priority: -1) 196. [re\_rvl 0.31.1](https://crates.io/crates/re_rvl) (priority: -1) 197. [re\_perf\_telemetry 0.31.1](https://crates.io/crates/re_perf_telemetry) (priority: -1) 198. [re\_span 0.31.1](https://crates.io/crates/re_span) (priority: -1) 199. [re\_error 0.31.1](https://crates.io/crates/re_error) (priority: -1) 200. [re\_case 0.31.1](https://crates.io/crates/re_case) (priority: -1) 201. [re\_byte\_size 0.31.1](https://crates.io/crates/re_byte_size) (priority: -1) 202. [re\_log 0.31.1](https://crates.io/crates/re_log) (priority: -1) 203. [re\_build\_tools 0.31.1](https://crates.io/crates/re_build_tools) (priority: -1) 204. [re\_string\_interner 0.31.1](https://crates.io/crates/re_string_interner) (priority: -1) 205. [re\_build\_info 0.31.1](https://crates.io/crates/re_build_info) (priority: -1) 206. [re\_capabilities 0.31.1](https://crates.io/crates/re_capabilities) (priority: -1) 207. [re\_mutex 0.31.1](https://crates.io/crates/re_mutex) (priority: -1) 208. [re\_tuid 0.31.1](https://crates.io/crates/re_tuid) (priority: -1) 209. [re\_tracing 0.31.1](https://crates.io/crates/re_tracing) (priority: -1) 210. [re\_format 0.31.1](https://crates.io/crates/re_format) (priority: -1) 211. [re\_protos\_builder 0.31.1](https://crates.io/crates/re_protos_builder) (priority: -1) 212. [re\_arrow\_util 0.31.1](https://crates.io/crates/re_arrow_util) (priority: -1) 213. [re\_memory\_view 0.31.1](https://crates.io/crates/re_memory_view) (priority: -1) 214. [re\_quota\_channel 0.31.1](https://crates.io/crates/re_quota_channel) (priority: -1) 215. [re\_types\_core 0.31.1](https://crates.io/crates/re_types_core) (priority: -1) 216. [re\_memory 0.31.1](https://crates.io/crates/re_memory) (priority: -1) 217. [re\_analytics 0.31.1](https://crates.io/crates/re_analytics) (priority: -1) 218. [re\_video 0.31.1](https://crates.io/crates/re_video) (priority: -1) 219. [re\_types\_builder 0.31.1](https://crates.io/crates/re_types_builder) (priority: -1) 220. [re\_log\_types 0.31.1](https://crates.io/crates/re_log_types) (priority: -1) 221. [re\_crash\_handler 0.31.1](https://crates.io/crates/re_crash_handler) (priority: -1) 222. [re\_web\_viewer\_server 0.31.1](https://crates.io/crates/re_web_viewer_server) (priority: -1) 223. [re\_auth 0.31.1](https://crates.io/crates/re_auth) (priority: -1) 224. [re\_renderer 0.31.1](https://crates.io/crates/re_renderer) (priority: -1) 225. [perl-percentile 0.12.1](https://crates.io/crates/perl-percentile) (priority: -1) 226. [re\_uri 0.31.1](https://crates.io/crates/re_uri) (priority: -1) 227. [re\_sorbet 0.31.1](https://crates.io/crates/re_sorbet) (priority: -1) 228. [re\_sdk\_types 0.31.1](https://crates.io/crates/re_sdk_types) (priority: -1) 229. [re\_chunk 0.31.1](https://crates.io/crates/re_chunk) (priority: -1) 230. [re\_mcap 0.31.1](https://crates.io/crates/re_mcap) (priority: -1) 231. [re\_lenses\_core 0.31.1](https://crates.io/crates/re_lenses_core) (priority: -1) 232. [re\_lenses 0.31.1](https://crates.io/crates/re_lenses) (priority: -1) 233. [perl-pod 0.12.1](https://crates.io/crates/perl-pod) (priority: -1) 234. [re\_protos 0.31.1](https://crates.io/crates/re_protos) (priority: -1) 235. [re\_log\_encoding 0.31.1](https://crates.io/crates/re_log_encoding) (priority: -1) 236. [re\_log\_channel 0.31.1](https://crates.io/crates/re_log_channel) (priority: -1) 237. [re\_grpc\_client 0.31.1](https://crates.io/crates/re_grpc_client) (priority: -1) 238. [re\_grpc\_server 0.31.1](https://crates.io/crates/re_grpc_server) (priority: -1) 239. [perl-position-tracking 0.12.1](https://crates.io/crates/perl-position-tracking) (priority: -1) 240. [re\_redap\_client 0.31.1](https://crates.io/crates/re_redap_client) (priority: -1) 241. [re\_chunk\_store 0.31.1](https://crates.io/crates/re_chunk_store) (priority: -1) 242. [re\_data\_loader 0.31.1](https://crates.io/crates/re_data_loader) (priority: -1) 243. [re\_data\_source 0.31.1](https://crates.io/crates/re_data_source) (priority: -1) 244. [re\_sdk 0.31.1](https://crates.io/crates/re_sdk) (priority: -1) 245. [perl-ast-v2 0.12.1](https://crates.io/crates/perl-ast-v2) (priority: -1) 246. [rerun\_c 0.31.1](https://crates.io/crates/rerun_c) (priority: -1) 247. [re\_query 0.31.1](https://crates.io/crates/re_query) (priority: -1) 248. [re\_dataframe 0.31.1](https://crates.io/crates/re_dataframe) (priority: -1) 249. [re\_datafusion 0.31.1](https://crates.io/crates/re_datafusion) (priority: -1) 250. [re\_entity\_db 0.31.1](https://crates.io/crates/re_entity_db) (priority: -1) 251. [re\_ui 0.31.1](https://crates.io/crates/re_ui) (priority: -1) 252. [re\_arrow\_ui 0.31.1](https://crates.io/crates/re_arrow_ui) (priority: -1) 253. [re\_tf 0.31.1](https://crates.io/crates/re_tf) (priority: -1) 254. [re\_viewer\_context 0.31.1](https://crates.io/crates/re_viewer_context) (priority: -1) 255. [re\_redap\_tests 0.31.1](https://crates.io/crates/re_redap_tests) (priority: -1) 256. [re\_chunk\_store\_ui 0.31.1](https://crates.io/crates/re_chunk_store_ui) (priority: -1) 257. [re\_data\_ui 0.31.1](https://crates.io/crates/re_data_ui) (priority: -1) 258. [re\_component\_fallbacks 0.31.1](https://crates.io/crates/re_component_fallbacks) (priority: -1) 259. [re\_server 0.31.1](https://crates.io/crates/re_server) (priority: -1) 260. [re\_test\_context 0.31.1](https://crates.io/crates/re_test_context) (priority: -1) 261. [perl-lexer 0.12.1](https://crates.io/crates/perl-lexer) (priority: -1) 262. [re\_component\_ui 0.31.1](https://crates.io/crates/re_component_ui) (priority: -1) 263. [re\_dataframe\_ui 0.31.1](https://crates.io/crates/re_dataframe_ui) (priority: -1) 264. [re\_redap\_browser 0.31.1](https://crates.io/crates/re_redap_browser) (priority: -1) 265. [re\_viewport\_blueprint 0.31.1](https://crates.io/crates/re_viewport_blueprint) (priority: -1) 266. [re\_recording\_panel 0.31.1](https://crates.io/crates/re_recording_panel) (priority: -1) 267. [re\_view 0.31.1](https://crates.io/crates/re_view) (priority: -1) 268. [re\_view\_map 0.31.1](https://crates.io/crates/re_view_map) (priority: -1) 269. [re\_view\_text\_log 0.31.1](https://crates.io/crates/re_view_text_log) (priority: -1) 270. [re\_context\_menu 0.31.1](https://crates.io/crates/re_context_menu) (priority: -1) 271. [re\_time\_panel 0.31.1](https://crates.io/crates/re_time_panel) (priority: -1) 272. [re\_viewport 0.31.1](https://crates.io/crates/re_viewport) (priority: -1) 273. [re\_test\_viewport 0.31.1](https://crates.io/crates/re_test_viewport) (priority: -1) 274. [re\_view\_time\_series 0.31.1](https://crates.io/crates/re_view_time_series) (priority: -1) 275. [re\_view\_text\_document 0.31.1](https://crates.io/crates/re_view_text_document) (priority: -1) 276. [re\_view\_tensor 0.31.1](https://crates.io/crates/re_view_tensor) (priority: -1) 277. [re\_view\_graph 0.31.1](https://crates.io/crates/re_view_graph) (priority: -1) 278. [perl-qualified-name 0.12.1](https://crates.io/crates/perl-qualified-name) (priority: -1) 279. [re\_view\_dataframe 0.31.1](https://crates.io/crates/re_view_dataframe) (priority: -1) 280. [re\_view\_bar\_chart 0.31.1](https://crates.io/crates/re_view_bar_chart) (priority: -1) 281. [cairo-air 1.2.2](https://crates.io/crates/cairo-air) (priority: -1) 282. [re\_selection\_panel 0.31.1](https://crates.io/crates/re_selection_panel) (priority: -1) 283. [perl-quote 0.12.1](https://crates.io/crates/perl-quote) (priority: -1) 284. [re\_view\_spatial 0.31.1](https://crates.io/crates/re_view_spatial) (priority: -1) 285. [re\_blueprint\_tree 0.31.1](https://crates.io/crates/re_blueprint_tree) (priority: -1) 286. [re\_viewer 0.31.1](https://crates.io/crates/re_viewer) (priority: -1) 287. [rerun 0.31.1](https://crates.io/crates/rerun) (priority: -1) 288. [perl-regex 0.12.1](https://crates.io/crates/perl-regex) (priority: -1) 289. [rerun-cli 0.31.1](https://crates.io/crates/rerun-cli) (priority: -1) 290. [perl-source-file 0.12.1](https://crates.io/crates/perl-source-file) (priority: -1) 291. [cairo-program-runner-lib 1.2.2](https://crates.io/crates/cairo-program-runner-lib) (priority: -1) 292. [cairo-program-runner 1.2.2](https://crates.io/crates/cairo-program-runner) (priority: -1) 293. [cashu 0.16.0](https://crates.io/crates/cashu) (priority: -1) 294. [cdk-prometheus 0.16.0](https://crates.io/crates/cdk-prometheus) (priority: -1) 295. [cdk-http-client 0.16.0](https://crates.io/crates/cdk-http-client) (priority: -1) 296. [cdk-common 0.16.0](https://crates.io/crates/cdk-common) (priority: -1) 297. [cdk-npubcash 0.16.0](https://crates.io/crates/cdk-npubcash) (priority: -1) 298. [cdk-sql-common 0.16.0](https://crates.io/crates/cdk-sql-common) (priority: -1) 299. [cdk-sqlite 0.16.0](https://crates.io/crates/cdk-sqlite) (priority: -1) 300. [cdk-postgres 0.16.0](https://crates.io/crates/cdk-postgres) (priority: -1) 301. [cdk-redb 0.16.0](https://crates.io/crates/cdk-redb) (priority: -1) 302. [cdk-signatory 0.16.0](https://crates.io/crates/cdk-signatory) (priority: -1) 303. [cdk-fake-wallet 0.16.0](https://crates.io/crates/cdk-fake-wallet) (priority: -1) 304. [cdk 0.16.0](https://crates.io/crates/cdk) (priority: -1) 305. [cdk-supabase 0.16.0](https://crates.io/crates/cdk-supabase) (priority: -1) 306. [cdk-ffi 0.16.0](https://crates.io/crates/cdk-ffi) (priority: -1) 307. [cdk-axum 0.16.0](https://crates.io/crates/cdk-axum) (priority: -1) 308. [cdk-mint-rpc 0.16.0](https://crates.io/crates/cdk-mint-rpc) (priority: -1) 309. [cdk-cln 0.16.0](https://crates.io/crates/cdk-cln) (priority: -1) 310. [greentic-bundle-reader 0.4.26](https://crates.io/crates/greentic-bundle-reader) (priority: -1) 311. [cdk-lnd 0.16.0](https://crates.io/crates/cdk-lnd) (priority: -1) 312. [cdk-lnbits 0.16.0](https://crates.io/crates/cdk-lnbits) (priority: -1) 313. [cdk-ldk-node 0.16.0](https://crates.io/crates/cdk-ldk-node) (priority: -1) 314. [cdk-payment-processor 0.16.0](https://crates.io/crates/cdk-payment-processor) (priority: -1) 315. [cdk-cli 0.16.0](https://crates.io/crates/cdk-cli) (priority: -1) 316. [cdk-mintd 0.16.0](https://crates.io/crates/cdk-mintd) (priority: -1) 317. [greentic-bundle 0.4.26](https://crates.io/crates/greentic-bundle) (priority: -1) 318. [opentalk-roomserver-common 0.0.31](https://crates.io/crates/opentalk-roomserver-common) (priority: -1) 319. [opentalk-roomserver-crypto-provider 0.0.31](https://crates.io/crates/opentalk-roomserver-crypto-provider) (priority: -1) 320. [opentalk-roomserver-types 0.0.31](https://crates.io/crates/opentalk-roomserver-types) (priority: -1) 321. [opentalk-roomserver-signaling 0.0.31](https://crates.io/crates/opentalk-roomserver-signaling) (priority: -1) 322. [opentalk-roomserver-web-api 0.0.31](https://crates.io/crates/opentalk-roomserver-web-api) (priority: -1) 323. [opentalk-roomserver-room 0.0.31](https://crates.io/crates/opentalk-roomserver-room) (priority: -1) 324. [opentalk-roomserver-types-automod 0.0.31](https://crates.io/crates/opentalk-roomserver-types-automod) (priority: -1) 325. [opentalk-roomserver-types-chat 0.0.31](https://crates.io/crates/opentalk-roomserver-types-chat) (priority: -1) 326. [opentalk-roomserver-types-e2ee 0.0.31](https://crates.io/crates/opentalk-roomserver-types-e2ee) (priority: -1) 327. [opentalk-roomserver-types-echo 0.0.31](https://crates.io/crates/opentalk-roomserver-types-echo) (priority: -1) 328. [opentalk-roomserver-types-legal-vote 0.0.31](https://crates.io/crates/opentalk-roomserver-types-legal-vote) (priority: -1) 329. [opentalk-roomserver-types-livekit 0.0.31](https://crates.io/crates/opentalk-roomserver-types-livekit) (priority: -1) 330. [opentalk-roomserver-types-meeting-notes 0.0.31](https://crates.io/crates/opentalk-roomserver-types-meeting-notes) (priority: -1) 331. [opentalk-roomserver-types-meeting-report 0.0.31](https://crates.io/crates/opentalk-roomserver-types-meeting-report) (priority: -1) 332. [opentalk-roomserver-types-polls 0.0.31](https://crates.io/crates/opentalk-roomserver-types-polls) (priority: -1) 333. [opentalk-roomserver-types-raise-hands 0.0.31](https://crates.io/crates/opentalk-roomserver-types-raise-hands) (priority: -1) 334. [opentalk-roomserver-types-recording 0.0.31](https://crates.io/crates/opentalk-roomserver-types-recording) (priority: -1) 335. [opentalk-roomserver-types-shared-folder 0.0.31](https://crates.io/crates/opentalk-roomserver-types-shared-folder) (priority: -1) 336. [opentalk-roomserver-types-subroom-audio 0.0.31](https://crates.io/crates/opentalk-roomserver-types-subroom-audio) (priority: -1) 337. [opentalk-roomserver-types-timer 0.0.31](https://crates.io/crates/opentalk-roomserver-types-timer) (priority: -1) 338. [opentalk-roomserver-types-training-participation-report 0.0.31](https://crates.io/crates/opentalk-roomserver-types-training-participation-report) (priority: -1) 339. [opentalk-roomserver-types-whiteboard 0.0.31](https://crates.io/crates/opentalk-roomserver-types-whiteboard) (priority: -1) 340. [opentalk-roomserver-module-chat 0.0.31](https://crates.io/crates/opentalk-roomserver-module-chat) (priority: -1) 341. [opentalk-roomserver-module-e2ee 0.0.31](https://crates.io/crates/opentalk-roomserver-module-e2ee) (priority: -1) 342. [opentalk-roomserver-module-echo 0.0.31](https://crates.io/crates/opentalk-roomserver-module-echo) (priority: -1) 343. [opentalk-roomserver-module-legal-vote 0.0.31](https://crates.io/crates/opentalk-roomserver-module-legal-vote) (priority: -1) 344. [opentalk-roomserver-module-meeting-notes 0.0.31](https://crates.io/crates/opentalk-roomserver-module-meeting-notes) (priority: -1) 345. [opentalk-roomserver-module-meeting-report 0.0.31](https://crates.io/crates/opentalk-roomserver-module-meeting-report) (priority: -1) 346. [opentalk-roomserver-module-polls 0.0.31](https://crates.io/crates/opentalk-roomserver-module-polls) (priority: -1) 347. [opentalk-roomserver-module-raise-hands 0.0.31](https://crates.io/crates/opentalk-roomserver-module-raise-hands) (priority: -1) 348. [greentic-deployer 0.4.38](https://crates.io/crates/greentic-deployer) (priority: -1) 349. [opentalk-roomserver-types-moderation 0.0.31](https://crates.io/crates/opentalk-roomserver-types-moderation) (priority: -1) 350. [opentalk-roomserver-test-util-livekit 0.0.31](https://crates.io/crates/opentalk-roomserver-test-util-livekit) (priority: -1) 351. [opentalk-roomserver-module-livekit 0.0.31](https://crates.io/crates/opentalk-roomserver-module-livekit) (priority: -1) 352. [opentalk-roomserver-module-automod 0.0.31](https://crates.io/crates/opentalk-roomserver-module-automod) (priority: -1) 353. [opentalk-roomserver-module-shared-folder 0.0.31](https://crates.io/crates/opentalk-roomserver-module-shared-folder) (priority: -1) 354. [greentic-flow 0.4.65](https://crates.io/crates/greentic-flow) (priority: -1) 355. [opentalk-roomserver-module-moderation 0.0.31](https://crates.io/crates/opentalk-roomserver-module-moderation) (priority: -1) 356. [opentalk-roomserver-module-subroom-audio 0.0.31](https://crates.io/crates/opentalk-roomserver-module-subroom-audio) (priority: -1) 357. [opentalk-roomserver-module-timer 0.0.31](https://crates.io/crates/opentalk-roomserver-module-timer) (priority: -1) 358. [opentalk-roomserver-module-training-participation-report 0.0.31](https://crates.io/crates/opentalk-roomserver-module-training-participation-report) (priority: -1) 359. [opentalk-roomserver-module-whiteboard 0.0.31](https://crates.io/crates/opentalk-roomserver-module-whiteboard) (priority: -1) 360. [opentalk-roomserver-module-recording 0.0.31](https://crates.io/crates/opentalk-roomserver-module-recording) (priority: -1) 361. [opentalk-roomserver-modules 0.0.31](https://crates.io/crates/opentalk-roomserver-modules) (priority: -1) 362. [opentalk-roomserver-client 0.0.31](https://crates.io/crates/opentalk-roomserver-client) (priority: -1) 363. [opentalk-roomserver-dui 0.0.31](https://crates.io/crates/opentalk-roomserver-dui) (priority: -1) 364. [opentalk-roomserver 0.0.31](https://crates.io/crates/opentalk-roomserver) (priority: -1) 365. [ep-core 22.0.0](https://crates.io/crates/ep-core) (priority: -1) 366. [mockforge-data 0.3.104](https://crates.io/crates/mockforge-data) (priority: -1) 367. [encointer-primitives 22.5.1](https://crates.io/crates/encointer-primitives) (priority: -1) 368. [mockforge-template-expansion 0.3.104](https://crates.io/crates/mockforge-template-expansion) (priority: -1) 369. [mockforge-core 0.3.104](https://crates.io/crates/mockforge-core) (priority: -1) 370. [mockforge-plugin-core 0.3.104](https://crates.io/crates/mockforge-plugin-core) (priority: -1) 371. [mockforge-tracing 0.3.104](https://crates.io/crates/mockforge-tracing) (priority: -1) 372. [pallet-encointer-balances 22.2.1](https://crates.io/crates/pallet-encointer-balances) (priority: -1) 373. [pallet-encointer-scheduler 22.1.0](https://crates.io/crates/pallet-encointer-scheduler) (priority: -1) 374. [mockforge-observability 0.3.104](https://crates.io/crates/mockforge-observability) (priority: -1) 375. [encointer-ceremonies-assignment 22.1.0](https://crates.io/crates/encointer-ceremonies-assignment) (priority: -1) 376. [encointer-meetup-validation 22.1.0](https://crates.io/crates/encointer-meetup-validation) (priority: -1) 377. [pallet-encointer-communities 22.1.1](https://crates.io/crates/pallet-encointer-communities) (priority: -1) 378. [mockforge-analytics 0.3.104](https://crates.io/crates/mockforge-analytics) (priority: -1) 379. [pallet-encointer-ceremonies 22.1.1](https://crates.io/crates/pallet-encointer-ceremonies) (priority: -1) 380. [pallet-encointer-reputation-commitments 22.1.1](https://crates.io/crates/pallet-encointer-reputation-commitments) (priority: -1) 381. [pallet-encointer-treasuries 22.7.1](https://crates.io/crates/pallet-encointer-treasuries) (priority: -1) 382. [pallet-encointer-bazaar 22.1.0](https://crates.io/crates/pallet-encointer-bazaar) (priority: -1) 383. [pallet-encointer-democracy 22.7.1](https://crates.io/crates/pallet-encointer-democracy) (priority: -1) 384. [pallet-encointer-faucet 22.2.1](https://crates.io/crates/pallet-encointer-faucet) (priority: -1) 385. [mockforge-world-state 0.3.104](https://crates.io/crates/mockforge-world-state) (priority: -1) 386. [mockforge-chaos 0.3.104](https://crates.io/crates/mockforge-chaos) (priority: -1) 387. [mockforge-recorder 0.3.104](https://crates.io/crates/mockforge-recorder) (priority: -1) 388. [mockforge-scenarios 0.3.104](https://crates.io/crates/mockforge-scenarios) (priority: -1) 389. [mockforge-pipelines 0.3.104](https://crates.io/crates/mockforge-pipelines) (priority: -1) 390. [mockforge-route-chaos 0.3.104](https://crates.io/crates/mockforge-route-chaos) (priority: -1) 391. [mockforge-performance 0.3.104](https://crates.io/crates/mockforge-performance) (priority: -1) 392. [mockforge-plugin-sdk 0.3.104](https://crates.io/crates/mockforge-plugin-sdk) (priority: -1) 393. [mockforge-plugin-loader 0.3.104](https://crates.io/crates/mockforge-plugin-loader) (priority: -1) 394. [mockforge-plugin-registry 0.3.104](https://crates.io/crates/mockforge-plugin-registry) (priority: -1) 395. [mockforge-bench 0.3.104](https://crates.io/crates/mockforge-bench) (priority: -1) 396. [mockforge-collab 0.3.104](https://crates.io/crates/mockforge-collab) (priority: -1) 397. [mockforge-tunnel 0.3.104](https://crates.io/crates/mockforge-tunnel) (priority: -1) 398. [mockforge-graphql 0.3.104](https://crates.io/crates/mockforge-graphql) (priority: -1) 399. [mockforge-kafka 0.3.104](https://crates.io/crates/mockforge-kafka) (priority: -1) 400. [mockforge-mqtt 0.3.104](https://crates.io/crates/mockforge-mqtt) (priority: -1) 401. [encointer-balances-tx-payment 22.1.0](https://crates.io/crates/encointer-balances-tx-payment) (priority: -1) 402. [encointer-balances-tx-payment-rpc-runtime-api 22.1.0](https://crates.io/crates/encointer-balances-tx-payment-rpc-runtime-api) (priority: -1) 403. [encointer-rpc 22.1.0](https://crates.io/crates/encointer-rpc) (priority: -1) 404. [mockforge-amqp 0.3.104](https://crates.io/crates/mockforge-amqp) (priority: -1) 405. [mockforge-smtp 0.3.104](https://crates.io/crates/mockforge-smtp) (priority: -1) 406. [encointer-balances-tx-payment-rpc 22.1.0](https://crates.io/crates/encointer-balances-tx-payment-rpc) (priority: -1) 407. [pallet-encointer-bazaar-rpc-runtime-api 22.1.0](https://crates.io/crates/pallet-encointer-bazaar-rpc-runtime-api) (priority: -1) 408. [mockforge-ftp 0.3.104](https://crates.io/crates/mockforge-ftp) (priority: -1) 409. [mockforge-tcp 0.3.104](https://crates.io/crates/mockforge-tcp) (priority: -1) 410. [pallet-encointer-bazaar-rpc 22.1.0](https://crates.io/crates/pallet-encointer-bazaar-rpc) (priority: -1) 411. [pallet-encointer-ceremonies-rpc-runtime-api 22.1.0](https://crates.io/crates/pallet-encointer-ceremonies-rpc-runtime-api) (priority: -1) 412. [pallet-encointer-ceremonies-rpc 22.1.0](https://crates.io/crates/pallet-encointer-ceremonies-rpc) (priority: -1) 413. [pallet-encointer-communities-rpc-runtime-api 22.1.0](https://crates.io/crates/pallet-encointer-communities-rpc-runtime-api) (priority: -1) 414. [pallet-encointer-communities-rpc 22.1.0](https://crates.io/crates/pallet-encointer-communities-rpc) (priority: -1) 415. [pallet-encointer-treasuries-rpc-runtime-api 22.3.0](https://crates.io/crates/pallet-encointer-treasuries-rpc-runtime-api) (priority: -1) 416. [pallet-encointer-treasuries-rpc 22.3.0](https://crates.io/crates/pallet-encointer-treasuries-rpc) (priority: -1) 417. [mockforge-grpc 0.3.104](https://crates.io/crates/mockforge-grpc) (priority: -1) 418. [mockforge-http 0.3.104](https://crates.io/crates/mockforge-http) (priority: -1) 419. [mockforge-federation 0.3.104](https://crates.io/crates/mockforge-federation) (priority: -1) 420. [mockforge-vbr 0.3.104](https://crates.io/crates/mockforge-vbr) (priority: -1) 421. [mockforge-tui 0.3.104](https://crates.io/crates/mockforge-tui) (priority: -1) 422. [mockforge-ui 0.3.104](https://crates.io/crates/mockforge-ui) (priority: -1) 423. [mockforge-sdk 0.3.104](https://crates.io/crates/mockforge-sdk) (priority: -1) 424. [mockforge-k8s-operator 0.3.104](https://crates.io/crates/mockforge-k8s-operator) (priority: -1) 425. [mockforge-runtime-daemon 0.3.104](https://crates.io/crates/mockforge-runtime-daemon) (priority: -1) 426. [mockforge-cli 0.3.104](https://crates.io/crates/mockforge-cli) (priority: -1) 427. [encointer-offline-payment-core 22.0.0](https://crates.io/crates/encointer-offline-payment-core) (priority: -1) 428. [pallet-encointer-offline-payment 22.0.1](https://crates.io/crates/pallet-encointer-offline-payment) (priority: -1) 429. [pallet-encointer-reputation-rings 22.0.1](https://crates.io/crates/pallet-encointer-reputation-rings) (priority: -1) 430. [chia-serde 0.42.0](https://crates.io/crates/chia-serde) (priority: -1) 431. [chia-sha2 0.42.0](https://crates.io/crates/chia-sha2) (priority: -1) 432. [chia\_streamable\_macro 0.42.0](https://crates.io/crates/chia_streamable_macro) (priority: -1) 433. [chia\_py\_streamable\_macro 0.42.0](https://crates.io/crates/chia_py_streamable_macro) (priority: -1) 434. [chia-bls 0.42.0](https://crates.io/crates/chia-bls) (priority: -1) 435. [chia-secp 0.42.0](https://crates.io/crates/chia-secp) (priority: -1) 436. [clvm-derive 0.42.0](https://crates.io/crates/clvm-derive) (priority: -1) 437. [clvm-traits 0.42.0](https://crates.io/crates/clvm-traits) (priority: -1) 438. [clvm-utils 0.42.0](https://crates.io/crates/clvm-utils) (priority: -1) 439. [chia-protocol 0.42.0](https://crates.io/crates/chia-protocol) (priority: -1) 440. [chia-client 0.42.0](https://crates.io/crates/chia-client) (priority: -1) 441. [chia-puzzle-types 0.42.0](https://crates.io/crates/chia-puzzle-types) (priority: -1) 442. [chia-consensus 0.42.0](https://crates.io/crates/chia-consensus) (priority: -1) 443. [chia-datalayer-macro 0.42.0](https://crates.io/crates/chia-datalayer-macro) (priority: -1) 444. [chia-datalayer 0.42.0](https://crates.io/crates/chia-datalayer) (priority: -1) 445. [chia-ssl 0.42.0](https://crates.io/crates/chia-ssl) (priority: -1) 446. [chia-tools 0.42.0](https://crates.io/crates/chia-tools) (priority: -1) 447. [chia\_wasm 0.42.0](https://crates.io/crates/chia_wasm) (priority: -1) 448. [chia\_rs 0.42.0](https://crates.io/crates/chia_rs) (priority: -1) 449. [chia 0.42.0](https://crates.io/crates/chia) (priority: -1) 450. [greentic-state 0.4.5](https://crates.io/crates/greentic-state) (priority: -1) 451. [icydb-derive 0.66.6](https://crates.io/crates/icydb-derive) (priority: -1) 452. [icydb-primitives 0.66.6](https://crates.io/crates/icydb-primitives) (priority: -1) 453. [icydb-utils 0.66.6](https://crates.io/crates/icydb-utils) (priority: -1) 454. [icydb-core 0.66.6](https://crates.io/crates/icydb-core) (priority: -1) 455. [icydb-schema 0.66.6](https://crates.io/crates/icydb-schema) (priority: -1) 456. [icydb-build 0.66.6](https://crates.io/crates/icydb-build) (priority: -1) 457. [icydb-schema-derive 0.66.6](https://crates.io/crates/icydb-schema-derive) (priority: -1) 458. [greentic-redbutton 0.4.2](https://crates.io/crates/greentic-redbutton) (priority: -1) 459. [deno\_subprocess\_windows 0.38.0](https://crates.io/crates/deno_subprocess_windows) (priority: -1) 460. [deno\_maybe\_sync 0.30.0](https://crates.io/crates/deno_maybe_sync) (priority: -1) 461. [deno\_package\_json 0.45.0](https://crates.io/crates/deno_package_json) (priority: -1) 462. [node\_resolver 0.81.0](https://crates.io/crates/node_resolver) (priority: -1) 463. [serde\_v8 0.305.0](https://crates.io/crates/serde_v8) (priority: -1) 464. [deno\_ops 0.272.0](https://crates.io/crates/deno_ops) (priority: -1) 465. [deno\_core 0.396.0](https://crates.io/crates/deno_core) (priority: -1) 466. [deno\_webstorage 0.238.0](https://crates.io/crates/deno_webstorage) (priority: -1) 467. [deno\_tls 0.230.0](https://crates.io/crates/deno_tls) (priority: -1) 468. [deno\_permissions 0.102.0](https://crates.io/crates/deno_permissions) (priority: -1) 469. [deno\_signals 0.34.0](https://crates.io/crates/deno_signals) (priority: -1) 470. [deno\_features 0.40.0](https://crates.io/crates/deno_features) (priority: -1) 471. [deno\_net 0.235.0](https://crates.io/crates/deno_net) (priority: -1) 472. [deno\_io 0.153.0](https://crates.io/crates/deno_io) (priority: -1) 473. [deno\_fs 0.153.0](https://crates.io/crates/deno_fs) (priority: -1) 474. [deno\_fetch 0.267.0](https://crates.io/crates/deno_fetch) (priority: -1) 475. [deno\_websocket 0.248.0](https://crates.io/crates/deno_websocket) (priority: -1) 476. [evmlib 0.5.0](https://crates.io/crates/evmlib) (priority: -1) 477. [deno\_bench\_util 0.237.0](https://crates.io/crates/deno_bench_util) (priority: -1) 478. [deno\_webidl 0.243.0](https://crates.io/crates/deno_webidl) (priority: -1) 479. [deno\_webgpu 0.210.0](https://crates.io/crates/deno_webgpu) (priority: -1) 480. [deno\_web 0.274.0](https://crates.io/crates/deno_web) (priority: -1) 481. [deno\_telemetry 0.65.0](https://crates.io/crates/deno_telemetry) (priority: -1) 482. [deno\_npmrc 0.4.0](https://crates.io/crates/deno_npmrc) (priority: -1) 483. [deno\_lockfile 0.45.0](https://crates.io/crates/deno_lockfile) (priority: -1) 484. [deno\_npm 0.55.0](https://crates.io/crates/deno_npm) (priority: -1) 485. [deno\_config 0.93.0](https://crates.io/crates/deno_config) (priority: -1) 486. [deno\_cache\_dir 0.35.0](https://crates.io/crates/deno_cache_dir) (priority: -1) 487. [deno\_resolver 0.74.0](https://crates.io/crates/deno_resolver) (priority: -1) 488. [deno\_os 0.60.0](https://crates.io/crates/deno_os) (priority: -1) 489. [deno\_process 0.58.0](https://crates.io/crates/deno_process) (priority: -1) 490. [deno\_node\_sqlite 0.13.0](https://crates.io/crates/deno_node_sqlite) (priority: -1) 491. [deno\_crypto\_provider 0.37.0](https://crates.io/crates/deno_crypto_provider) (priority: -1) 492. [deno\_node\_crypto 0.13.0](https://crates.io/crates/deno_node_crypto) (priority: -1) 493. [deno\_inspector\_server 0.17.0](https://crates.io/crates/deno_inspector_server) (priority: -1) 494. [deno\_dotenv 0.12.0](https://crates.io/crates/deno_dotenv) (priority: -1) 495. [deno\_node 0.181.0](https://crates.io/crates/deno_node) (priority: -1) 496. [napi\_sym 0.173.0](https://crates.io/crates/napi_sym) (priority: -1) 497. [denort\_helper 0.41.0](https://crates.io/crates/denort_helper) (priority: -1) 498. [deno\_napi 0.174.0](https://crates.io/crates/deno_napi) (priority: -1) 499. [deno\_kv 0.151.0](https://crates.io/crates/deno_kv) (priority: -1) 500. [deno\_image 0.19.0](https://crates.io/crates/deno_image) (priority: -1) 501. [deno\_http 0.241.0](https://crates.io/crates/deno_http) (priority: -1) 502. [deno\_ffi 0.230.0](https://crates.io/crates/deno_ffi) (priority: -1) 503. [deno\_crypto 0.257.0](https://crates.io/crates/deno_crypto) (priority: -1) 504. [deno\_cron 0.123.0](https://crates.io/crates/deno_cron) (priority: -1) 505. [deno\_cache 0.176.0](https://crates.io/crates/deno_cache) (priority: -1) 506. [deno\_bundle\_runtime 0.30.0](https://crates.io/crates/deno_bundle_runtime) (priority: -1) 507. [deno\_runtime 0.251.0](https://crates.io/crates/deno_runtime) (priority: -1) 508. [eszip 0.121.0](https://crates.io/crates/eszip) (priority: -1) 509. [deno\_snapshots 0.58.0](https://crates.io/crates/deno_snapshots) (priority: -1) 510. [deno\_npm\_cache 0.62.0](https://crates.io/crates/deno_npm_cache) (priority: -1) 511. [deno\_npm\_installer 0.38.0](https://crates.io/crates/deno_npm_installer) (priority: -1) 512. [deno\_lib 0.61.0](https://crates.io/crates/deno_lib) (priority: -1) 513. [deno 2.7.10](https://crates.io/crates/deno) (priority: -1) 514. [perl-symbol-cursor 0.12.1](https://crates.io/crates/perl-symbol-cursor) (priority: -1) 515. [perl-symbol-index 0.12.1](https://crates.io/crates/perl-symbol-index) (priority: -1) 516. [perl-symbol-types 0.12.1](https://crates.io/crates/perl-symbol-types) (priority: -1) 517. [panproto-expr 0.22.0](https://crates.io/crates/panproto-expr) (priority: -1) 518. [panproto-grammars 0.22.0](https://crates.io/crates/panproto-grammars) (priority: -1) 519. [panproto-gat 0.22.0](https://crates.io/crates/panproto-gat) (priority: -1) 520. [panproto-expr-parser 0.22.0](https://crates.io/crates/panproto-expr-parser) (priority: -1) 521. [panproto-schema 0.22.0](https://crates.io/crates/panproto-schema) (priority: -1) 522. [panproto-inst 0.22.0](https://crates.io/crates/panproto-inst) (priority: -1) 523. [panproto-mig 0.22.0](https://crates.io/crates/panproto-mig) (priority: -1) 524. [panproto-lens 0.22.0](https://crates.io/crates/panproto-lens) (priority: -1) 525. [panproto-check 0.22.0](https://crates.io/crates/panproto-check) (priority: -1) 526. [panproto-protocols 0.22.0](https://crates.io/crates/panproto-protocols) (priority: -1) 527. [panproto-io 0.22.0](https://crates.io/crates/panproto-io) (priority: -1) 528. [panproto-vcs 0.22.0](https://crates.io/crates/panproto-vcs) (priority: -1) 529. [panproto-parse 0.22.0](https://crates.io/crates/panproto-parse) (priority: -1) 530. [panproto-project 0.22.0](https://crates.io/crates/panproto-project) (priority: -1) 531. [panproto-git 0.22.0](https://crates.io/crates/panproto-git) (priority: -1) 532. [panproto-llvm 0.22.0](https://crates.io/crates/panproto-llvm) (priority: -1) 533. [panproto-jit 0.22.0](https://crates.io/crates/panproto-jit) (priority: -1) 534. [panproto-core 0.22.0](https://crates.io/crates/panproto-core) (priority: -1) 535. [panproto-xrpc 0.22.0](https://crates.io/crates/panproto-xrpc) (priority: -1) 536. [panproto-wasm 0.22.0](https://crates.io/crates/panproto-wasm) (priority: -1) 537. [panproto-cli 0.22.0](https://crates.io/crates/panproto-cli) (priority: -1) 538. [git-remote-cospan 0.22.0](https://crates.io/crates/git-remote-cospan) (priority: -1) 539. [tg-rcore-tutorial 0.4.10](https://crates.io/crates/tg-rcore-tutorial) (priority: -1) 540. [solana-axelar-operators 1.0.1](https://crates.io/crates/solana-axelar-operators) (priority: -1) 541. [solana-axelar-gas-service 1.0.1](https://crates.io/crates/solana-axelar-gas-service) (priority: -1) 542. [solana-axelar-gateway 1.0.1](https://crates.io/crates/solana-axelar-gateway) (priority: -1) 543. [solana-axelar-governance 1.0.1](https://crates.io/crates/solana-axelar-governance) (priority: -1) 544. [solana-axelar-its 1.0.1](https://crates.io/crates/solana-axelar-its) (priority: -1) 545. [solana-axelar-memo 1.0.1](https://crates.io/crates/solana-axelar-memo) (priority: -1) 546. [fedimint-aead 0.11.0-beta.0](https://crates.io/crates/fedimint-aead) (priority: -1) 547. [fedimint-derive 0.11.0-beta.0](https://crates.io/crates/fedimint-derive) (priority: -1) 548. [fedimint-logging 0.11.0-beta.0](https://crates.io/crates/fedimint-logging) (priority: -1) 549. [solana-wincode-varint 0.0.0](https://crates.io/crates/solana-wincode-varint) (priority: -1) 550. [calimero-primitives 0.10.1-rc.15](https://crates.io/crates/calimero-primitives) (priority: -1) 551. [calimero-prelude 0.10.1-rc.15](https://crates.io/crates/calimero-prelude) (priority: -1) 552. [calimero-sdk-macros 0.10.1-rc.15](https://crates.io/crates/calimero-sdk-macros) (priority: -1) 553. [calimero-sys 0.10.1-rc.15](https://crates.io/crates/calimero-sys) (priority: -1) 554. [calimero-wasm-abi 0.10.1-rc.15](https://crates.io/crates/calimero-wasm-abi) (priority: -1) 555. [calimero-sdk 0.10.1-rc.15](https://crates.io/crates/calimero-sdk) (priority: -1) 556. [calimero-storage-macros 0.10.1-rc.15](https://crates.io/crates/calimero-storage-macros) (priority: -1) 557. [calimero-storage 0.10.1-rc.15](https://crates.io/crates/calimero-storage) (priority: -1) 558. [calimero-store 0.10.1-rc.15](https://crates.io/crates/calimero-store) (priority: -1) 559. [calimero-blobstore 0.10.1-rc.15](https://crates.io/crates/calimero-blobstore) (priority: -1) 560. [calimero-context-config 0.10.1-rc.15](https://crates.io/crates/calimero-context-config) (priority: -1) 561. [calimero-crypto 0.10.1-rc.15](https://crates.io/crates/calimero-crypto) (priority: -1) 562. [calimero-utils-actix 0.10.1-rc.15](https://crates.io/crates/calimero-utils-actix) (priority: -1) 563. [calimero-network-primitives 0.10.1-rc.15](https://crates.io/crates/calimero-network-primitives) (priority: -1) 564. [calimero-node-primitives 0.10.1-rc.15](https://crates.io/crates/calimero-node-primitives) (priority: -1) 565. [calimero-context-primitives 0.10.1-rc.15](https://crates.io/crates/calimero-context-primitives) (priority: -1) 566. [calimero-server-primitives 0.10.1-rc.15](https://crates.io/crates/calimero-server-primitives) (priority: -1) 567. [calimero-client 0.10.1-rc.15](https://crates.io/crates/calimero-client) (priority: -1) 568. [calimero-dag 0.10.1-rc.15](https://crates.io/crates/calimero-dag) (priority: -1) 569. [calimero-runtime 0.10.1-rc.15](https://crates.io/crates/calimero-runtime) (priority: -1) 570. [calimero-context 0.10.1-rc.15](https://crates.io/crates/calimero-context) (priority: -1) 571. [calimero-tee-attestation 0.10.1-rc.15](https://crates.io/crates/calimero-tee-attestation) (priority: -1) 572. [mero-auth 0.10.1-rc.15](https://crates.io/crates/mero-auth) (priority: -1) 573. [mago-casing 1.17.0](https://crates.io/crates/mago-casing) (priority: -1) 574. [mago-php-version 1.17.0](https://crates.io/crates/mago-php-version) (priority: -1) 575. [mago-text-edit 1.17.0](https://crates.io/crates/mago-text-edit) (priority: -1) 576. [mago-atom 1.17.0](https://crates.io/crates/mago-atom) (priority: -1) 577. [mago-database 1.17.0](https://crates.io/crates/mago-database) (priority: -1) 578. [mago-span 1.17.0](https://crates.io/crates/mago-span) (priority: -1) 579. [mago-reporting 1.17.0](https://crates.io/crates/mago-reporting) (priority: -1) 580. [mago-syntax-core 1.17.0](https://crates.io/crates/mago-syntax-core) (priority: -1) 581. [mago-syntax 1.17.0](https://crates.io/crates/mago-syntax) (priority: -1) 582. [mago-collector 1.17.0](https://crates.io/crates/mago-collector) (priority: -1) 583. [mago-type-syntax 1.17.0](https://crates.io/crates/mago-type-syntax) (priority: -1) 584. [mago-composer 1.17.0](https://crates.io/crates/mago-composer) (priority: -1) 585. [mago-docblock 1.17.0](https://crates.io/crates/mago-docblock) (priority: -1) 586. [mago-formatter 1.17.0](https://crates.io/crates/mago-formatter) (priority: -1) 587. [mago-names 1.17.0](https://crates.io/crates/mago-names) (priority: -1) 588. [mago-semantics 1.17.0](https://crates.io/crates/mago-semantics) (priority: -1) 589. [mago-fingerprint 1.17.0](https://crates.io/crates/mago-fingerprint) (priority: -1) 590. [mago-codex 1.17.0](https://crates.io/crates/mago-codex) (priority: -1) 591. [mago-prelude 1.17.0](https://crates.io/crates/mago-prelude) (priority: -1) 592. [mago-algebra 1.17.0](https://crates.io/crates/mago-algebra) (priority: -1) 593. [mago-guard 1.17.0](https://crates.io/crates/mago-guard) (priority: -1) 594. [mago-analyzer 1.17.0](https://crates.io/crates/mago-analyzer) (priority: -1) 595. [mago-linter 1.17.0](https://crates.io/crates/mago-linter) (priority: -1) 596. [mago-orchestrator 1.17.0](https://crates.io/crates/mago-orchestrator) (priority: -1) 597. [mago-wasm 1.17.0](https://crates.io/crates/mago-wasm) (priority: -1) 598. [mago 1.17.0](https://crates.io/crates/mago) (priority: -1) 599. [nexus-slab 2.1.1](https://crates.io/crates/nexus-slab) (priority: -1) 600. [nexus-collections 1.0.1](https://crates.io/crates/nexus-collections) (priority: -1) 601. [systemprompt-identifiers 0.1.19](https://crates.io/crates/systemprompt-identifiers) (priority: -1) 602. [systemprompt-provider-contracts 0.1.19](https://crates.io/crates/systemprompt-provider-contracts) (priority: -1) 603. [systemprompt-traits 0.1.19](https://crates.io/crates/systemprompt-traits) (priority: -1) 604. [nexus-pool 1.0.1](https://crates.io/crates/nexus-pool) (priority: -1) 605. [systemprompt-extension 0.1.19](https://crates.io/crates/systemprompt-extension) (priority: -1) 606. [systemprompt-models 0.1.19](https://crates.io/crates/systemprompt-models) (priority: -1) 607. [systemprompt-client 0.1.19](https://crates.io/crates/systemprompt-client) (priority: -1) 608. [nexus-channel 1.2.1](https://crates.io/crates/nexus-channel) (priority: -1) 609. [systemprompt-template-provider 0.1.19](https://crates.io/crates/systemprompt-template-provider) (priority: -1) 610. [systemprompt-database 0.1.19](https://crates.io/crates/systemprompt-database) (priority: -1) 611. [nexus-logbuf 2.1.2](https://crates.io/crates/nexus-logbuf) (priority: -1) 612. [systemprompt-logging 0.1.19](https://crates.io/crates/systemprompt-logging) (priority: -1) 613. [nexus-id 1.1.2](https://crates.io/crates/nexus-id) (priority: -1) 614. [googleapis-tonic-google-api 0.28.0](https://crates.io/crates/googleapis-tonic-google-api) (priority: -1) 615. [systemprompt-config 0.1.19](https://crates.io/crates/systemprompt-config) (priority: -1) 616. [systemprompt-events 0.1.19](https://crates.io/crates/systemprompt-events) (priority: -1) 617. [nexus-async-net 0.3.1](https://crates.io/crates/nexus-async-net) (priority: -1) 618. [systemprompt-security 0.1.19](https://crates.io/crates/systemprompt-security) (priority: -1) 619. [systemprompt-cloud 0.1.19](https://crates.io/crates/systemprompt-cloud) (priority: -1) 620. [systemprompt-loader 0.1.19](https://crates.io/crates/systemprompt-loader) (priority: -1) 621. [systemprompt-users 0.1.19](https://crates.io/crates/systemprompt-users) (priority: -1) 622. [systemprompt-oauth 0.1.19](https://crates.io/crates/systemprompt-oauth) (priority: -1) 623. [systemprompt-files 0.1.19](https://crates.io/crates/systemprompt-files) (priority: -1) 624. [systemprompt-analytics 0.1.19](https://crates.io/crates/systemprompt-analytics) (priority: -1) 625. [systemprompt-content 0.1.19](https://crates.io/crates/systemprompt-content) (priority: -1) 626. [systemprompt-mcp 0.1.19](https://crates.io/crates/systemprompt-mcp) (priority: -1) 627. [systemprompt-ai 0.1.19](https://crates.io/crates/systemprompt-ai) (priority: -1) 628. [systemprompt-agent 0.1.19](https://crates.io/crates/systemprompt-agent) (priority: -1) 629. [systemprompt-templates 0.1.19](https://crates.io/crates/systemprompt-templates) (priority: -1) 630. [systemprompt-runtime 0.1.19](https://crates.io/crates/systemprompt-runtime) (priority: -1) 631. [systemprompt-scheduler 0.1.19](https://crates.io/crates/systemprompt-scheduler) (priority: -1) 632. [systemprompt-sync 0.1.19](https://crates.io/crates/systemprompt-sync) (priority: -1) 633. [systemprompt-generator 0.1.19](https://crates.io/crates/systemprompt-generator) (priority: -1) 634. [systemprompt-api 0.1.19](https://crates.io/crates/systemprompt-api) (priority: -1) 635. [systemprompt-cli 0.1.19](https://crates.io/crates/systemprompt-cli) (priority: -1) 636. [googleapis-tonic-google-actions-sdk-v2-interactionmodel-prompt 0.28.0](https://crates.io/crates/googleapis-tonic-google-actions-sdk-v2-interactionmodel-prompt) (priority: -1) 637. [googleapis-tonic-google-actions-sdk-v2-interactionmodel-type 0.28.0](https://crates.io/crates/googleapis-tonic-google-actions-sdk-v2-interactionmodel-type) (priority: -1) 638. [googleapis-tonic-google-actions-sdk-v2-interactionmodel 0.28.0](https://crates.io/crates/googleapis-tonic-google-actions-sdk-v2-interactionmodel) (priority: -1) 639. [turso\_macros 0.6.0-pre.14](https://crates.io/crates/turso_macros) (priority: -1) 640. [turso\_ext 0.6.0-pre.14](https://crates.io/crates/turso_ext) (priority: -1) 641. [turso\_parser 0.6.0-pre.14](https://crates.io/crates/turso_parser) (priority: -1) 642. [googleapis-tonic-google-type 0.22.0](https://crates.io/crates/googleapis-tonic-google-type) (priority: -1) 643. [turso\_core 0.6.0-pre.14](https://crates.io/crates/turso_core) (priority: -1) 644. [turso\_sdk\_kit\_macros 0.6.0-pre.14](https://crates.io/crates/turso_sdk_kit_macros) (priority: -1) 645. [turso\_sdk\_kit 0.6.0-pre.14](https://crates.io/crates/turso_sdk_kit) (priority: -1) 646. [turso\_sync\_engine 0.6.0-pre.14](https://crates.io/crates/turso_sync_engine) (priority: -1) 647. [turso\_sync\_sdk\_kit 0.6.0-pre.14](https://crates.io/crates/turso_sync_sdk_kit) (priority: -1) 648. [turso 0.6.0-pre.14](https://crates.io/crates/turso) (priority: -1) 649. [googleapis-tonic-google-actions-sdk-v2 0.30.0](https://crates.io/crates/googleapis-tonic-google-actions-sdk-v2) (priority: -1) 650. [googleapis-tonic-google-actions-type 0.22.0](https://crates.io/crates/googleapis-tonic-google-actions-type) (priority: -1) 651. [googleapis-tonic-google-longrunning 0.32.0](https://crates.io/crates/googleapis-tonic-google-longrunning) (priority: -1) 652. [googleapis-tonic-google-ads-admanager-v1 0.36.0](https://crates.io/crates/googleapis-tonic-google-ads-admanager-v1) (priority: -1) 653. [googleapis-tonic-google-ads-admob-v1 0.28.0](https://crates.io/crates/googleapis-tonic-google-ads-admob-v1) (priority: -1) 654. [googleapis-tonic-google-ads-datamanager-v1 0.18.0](https://crates.io/crates/googleapis-tonic-google-ads-datamanager-v1) (priority: -1) 655. [googleapis-tonic-google-ads-googleads-v20-common 0.7.0](https://crates.io/crates/googleapis-tonic-google-ads-googleads-v20-common) (priority: -1) 656. [googleapis-tonic-google-ads-googleads-v20-errors 0.7.0](https://crates.io/crates/googleapis-tonic-google-ads-googleads-v20-errors) (priority: -1) 657. [surge-core 1.0.0-beta.8](https://crates.io/crates/surge-core) (priority: -2) 658. [surge-cli 1.0.0-beta.8](https://crates.io/crates/surge-cli) (priority: -2) 659. [wave-ptx 0.1.0](https://crates.io/crates/wave-ptx) (priority: -5) 660. [j-cli 12.7.32](https://crates.io/crates/j-cli) (priority: -5) 661. [anyvali 0.0.4](https://crates.io/crates/anyvali) (priority: -5) 662. [j-cli 12.7.33](https://crates.io/crates/j-cli) (priority: -5) 663. [bamboo-ssg 0.2.0](https://crates.io/crates/bamboo-ssg) (priority: -5) 664. [bamboo-cli 0.2.0](https://crates.io/crates/bamboo-cli) (priority: -5) 665. [o3co-hocon 0.1.0](https://crates.io/crates/o3co-hocon) (priority: -5) 666. [j-cli 12.7.34](https://crates.io/crates/j-cli) (priority: -5) 667. [xrw 0.0.0](https://crates.io/crates/xrw) (priority: -5) 668. [smelt-ml 0.3.2](https://crates.io/crates/smelt-ml) (priority: -5) 669. [sirr-server 1.0.37](https://crates.io/crates/sirr-server) (priority: -5) 670. [sirrd 1.0.37](https://crates.io/crates/sirrd) (priority: -5) 671. [sirr 1.0.37](https://crates.io/crates/sirr) (priority: -5) 672. [o3co-hocon 0.1.1](https://crates.io/crates/o3co-hocon) (priority: -5) 673. [specters 2.1.0](https://crates.io/crates/specters) (priority: -5) 674. [j-cli 12.7.36](https://crates.io/crates/j-cli) (priority: -5) 675. [typescript-lsp 0.0.3](https://crates.io/crates/typescript-lsp) (priority: -5) 676. [typescript-webidl 0.0.3](https://crates.io/crates/typescript-webidl) (priority: -5) 677. [test\_publish\_core 1.0.9](https://crates.io/crates/test_publish_core) (priority: -5) 678. [tg-rcore-tutorial-multi-processor-console-wzy 0.1.1-preview.1](https://crates.io/crates/tg-rcore-tutorial-multi-processor-console-wzy) (priority: -5) 679. [jira-cli 0.0.2](https://crates.io/crates/jira-cli) (priority: -5) 680. [greentic-start 0.4.26](https://crates.io/crates/greentic-start) (priority: -5) 681. [ethereal\_rust\_sdk 0.1.29](https://crates.io/crates/ethereal_rust_sdk) (priority: -5) 682. [calimero-primitives 0.10.1-rc.10](https://crates.io/crates/calimero-primitives) (priority: -5) 683. [calimero-prelude 0.10.1-rc.10](https://crates.io/crates/calimero-prelude) (priority: -5) 684. [calimero-sdk-macros 0.10.1-rc.10](https://crates.io/crates/calimero-sdk-macros) (priority: -5) 685. [calimero-sys 0.10.1-rc.10](https://crates.io/crates/calimero-sys) (priority: -5) 686. [calimero-wasm-abi 0.10.1-rc.10](https://crates.io/crates/calimero-wasm-abi) (priority: -5) 687. [calimero-sdk 0.10.1-rc.10](https://crates.io/crates/calimero-sdk) (priority: -5) 688. [calimero-storage-macros 0.10.1-rc.10](https://crates.io/crates/calimero-storage-macros) (priority: -5) 689. [calimero-storage 0.10.1-rc.10](https://crates.io/crates/calimero-storage) (priority: -5) 690. [calimero-store 0.10.1-rc.10](https://crates.io/crates/calimero-store) (priority: -5) 691. [calimero-blobstore 0.10.1-rc.10](https://crates.io/crates/calimero-blobstore) (priority: -5) 692. [calimero-context-config 0.10.1-rc.10](https://crates.io/crates/calimero-context-config) (priority: -5) 693. [calimero-crypto 0.10.1-rc.10](https://crates.io/crates/calimero-crypto) (priority: -5) 694. [calimero-utils-actix 0.10.1-rc.10](https://crates.io/crates/calimero-utils-actix) (priority: -5) 695. [calimero-network-primitives 0.10.1-rc.10](https://crates.io/crates/calimero-network-primitives) (priority: -5) 696. [calimero-node-primitives 0.10.1-rc.10](https://crates.io/crates/calimero-node-primitives) (priority: -5) 697. [calimero-context-primitives 0.10.1-rc.10](https://crates.io/crates/calimero-context-primitives) (priority: -5) 698. [calimero-server-primitives 0.10.1-rc.10](https://crates.io/crates/calimero-server-primitives) (priority: -5) 699. [calimero-client 0.10.1-rc.10](https://crates.io/crates/calimero-client) (priority: -5) 700. [calimero-dag 0.10.1-rc.10](https://crates.io/crates/calimero-dag) (priority: -5) 701. [calimero-runtime 0.10.1-rc.10](https://crates.io/crates/calimero-runtime) (priority: -5) 702. [calimero-context 0.10.1-rc.10](https://crates.io/crates/calimero-context) (priority: -5) 703. [calimero-tee-attestation 0.10.1-rc.10](https://crates.io/crates/calimero-tee-attestation) (priority: -5) 704. [mero-auth 0.10.1-rc.10](https://crates.io/crates/mero-auth) (priority: -5) 705. [calimero-server 0.10.1-rc.10](https://crates.io/crates/calimero-server) (priority: -5) 706. [calimero-config 0.10.1-rc.10](https://crates.io/crates/calimero-config) (priority: -5) 707. [calimero-network 0.10.1-rc.10](https://crates.io/crates/calimero-network) (priority: -5) 708. [calimero-store-encryption 0.10.1-rc.10](https://crates.io/crates/calimero-store-encryption) (priority: -5) 709. [calimero-store-rocksdb 0.10.1-rc.10](https://crates.io/crates/calimero-store-rocksdb) (priority: -5) 710. [calimero-node 0.10.1-rc.10](https://crates.io/crates/calimero-node) (priority: -5) 711. [mero-sign 0.10.1-rc.10](https://crates.io/crates/mero-sign) (priority: -5) 712. [zantetsu-core 0.1.0](https://crates.io/crates/zantetsu-core) (priority: -5) 713. [zantetsu-vecdb 0.1.0](https://crates.io/crates/zantetsu-vecdb) (priority: -5) 714. [zantetsu-trainer 0.1.0](https://crates.io/crates/zantetsu-trainer) (priority: -5) 715. [zantetsu-ffi 0.1.0](https://crates.io/crates/zantetsu-ffi) (priority: -5) 716. [envguard-rs 0.1.0](https://crates.io/crates/envguard-rs) (priority: -5) 717. [nodos-store-client 0.5.0](https://crates.io/crates/nodos-store-client) (priority: -5) 718. [calimero-primitives 0.10.1-rc.11](https://crates.io/crates/calimero-primitives) (priority: -5) 719. [calimero-prelude 0.10.1-rc.11](https://crates.io/crates/calimero-prelude) (priority: -5) 720. [calimero-sdk-macros 0.10.1-rc.11](https://crates.io/crates/calimero-sdk-macros) (priority: -5) 721. [calimero-sys 0.10.1-rc.11](https://crates.io/crates/calimero-sys) (priority: -5) 722. [calimero-wasm-abi 0.10.1-rc.11](https://crates.io/crates/calimero-wasm-abi) (priority: -5) 723. [calimero-sdk 0.10.1-rc.11](https://crates.io/crates/calimero-sdk) (priority: -5) 724. [calimero-storage-macros 0.10.1-rc.11](https://crates.io/crates/calimero-storage-macros) (priority: -5) 725. [calimero-storage 0.10.1-rc.11](https://crates.io/crates/calimero-storage) (priority: -5) 726. [calimero-store 0.10.1-rc.11](https://crates.io/crates/calimero-store) (priority: -5) 727. [calimero-blobstore 0.10.1-rc.11](https://crates.io/crates/calimero-blobstore) (priority: -5) 728. [calimero-context-config 0.10.1-rc.11](https://crates.io/crates/calimero-context-config) (priority: -5) 729. [calimero-crypto 0.10.1-rc.11](https://crates.io/crates/calimero-crypto) (priority: -5) 730. [calimero-utils-actix 0.10.1-rc.11](https://crates.io/crates/calimero-utils-actix) (priority: -5) 731. [calimero-network-primitives 0.10.1-rc.11](https://crates.io/crates/calimero-network-primitives) (priority: -5) 732. [calimero-node-primitives 0.10.1-rc.11](https://crates.io/crates/calimero-node-primitives) (priority: -5) 733. [calimero-context-primitives 0.10.1-rc.11](https://crates.io/crates/calimero-context-primitives) (priority: -5) 734. [greentic-start 0.4.27](https://crates.io/crates/greentic-start) (priority: -5) 735. [greentic-setup 0.4.9](https://crates.io/crates/greentic-setup) (priority: -5) 736. [calimero-server-primitives 0.10.1-rc.11](https://crates.io/crates/calimero-server-primitives) (priority: -5) 737. [calimero-client 0.10.1-rc.11](https://crates.io/crates/calimero-client) (priority: -5) 738. [calimero-dag 0.10.1-rc.11](https://crates.io/crates/calimero-dag) (priority: -5) 739. [calimero-runtime 0.10.1-rc.11](https://crates.io/crates/calimero-runtime) (priority: -5) 740. [calimero-context 0.10.1-rc.11](https://crates.io/crates/calimero-context) (priority: -5) 741. [calimero-tee-attestation 0.10.1-rc.11](https://crates.io/crates/calimero-tee-attestation) (priority: -5) 742. [mero-auth 0.10.1-rc.11](https://crates.io/crates/mero-auth) (priority: -5) 743. [calimero-server 0.10.1-rc.11](https://crates.io/crates/calimero-server) (priority: -5) 744. [calimero-config 0.10.1-rc.11](https://crates.io/crates/calimero-config) (priority: -5) 745. [calimero-network 0.10.1-rc.11](https://crates.io/crates/calimero-network) (priority: -5) 746. [calimero-store-encryption 0.10.1-rc.11](https://crates.io/crates/calimero-store-encryption) (priority: -5) 747. [calimero-store-rocksdb 0.10.1-rc.11](https://crates.io/crates/calimero-store-rocksdb) (priority: -5) 748. [calimero-node 0.10.1-rc.11](https://crates.io/crates/calimero-node) (priority: -5) 749. [mero-sign 0.10.1-rc.11](https://crates.io/crates/mero-sign) (priority: -5) 750. [qcs 0.26.1-rc.2](https://crates.io/crates/qcs) (priority: -5) 751. [calimero-primitives 0.10.1-rc.12](https://crates.io/crates/calimero-primitives) (priority: -5) 752. [calimero-prelude 0.10.1-rc.12](https://crates.io/crates/calimero-prelude) (priority: -5) 753. [calimero-sdk-macros 0.10.1-rc.12](https://crates.io/crates/calimero-sdk-macros) (priority: -5) 754. [calimero-sys 0.10.1-rc.12](https://crates.io/crates/calimero-sys) (priority: -5) 755. [calimero-wasm-abi 0.10.1-rc.12](https://crates.io/crates/calimero-wasm-abi) (priority: -5) 756. [calimero-sdk 0.10.1-rc.12](https://crates.io/crates/calimero-sdk) (priority: -5) 757. [calimero-storage-macros 0.10.1-rc.12](https://crates.io/crates/calimero-storage-macros) (priority: -5) 758. [calimero-storage 0.10.1-rc.12](https://crates.io/crates/calimero-storage) (priority: -5) 759. [calimero-store 0.10.1-rc.12](https://crates.io/crates/calimero-store) (priority: -5) 760. [calimero-blobstore 0.10.1-rc.12](https://crates.io/crates/calimero-blobstore) (priority: -5) 761. [calimero-context-config 0.10.1-rc.12](https://crates.io/crates/calimero-context-config) (priority: -5) 762. [calimero-crypto 0.10.1-rc.12](https://crates.io/crates/calimero-crypto) (priority: -5) 763. [calimero-utils-actix 0.10.1-rc.12](https://crates.io/crates/calimero-utils-actix) (priority: -5) 764. [calimero-network-primitives 0.10.1-rc.12](https://crates.io/crates/calimero-network-primitives) (priority: -5) 765. [calimero-node-primitives 0.10.1-rc.12](https://crates.io/crates/calimero-node-primitives) (priority: -5) 766. [calimero-context-primitives 0.10.1-rc.12](https://crates.io/crates/calimero-context-primitives) (priority: -5) 767. [calimero-server-primitives 0.10.1-rc.12](https://crates.io/crates/calimero-server-primitives) (priority: -5) 768. [calimero-client 0.10.1-rc.12](https://crates.io/crates/calimero-client) (priority: -5) 769. [calimero-dag 0.10.1-rc.12](https://crates.io/crates/calimero-dag) (priority: -5) 770. [calimero-runtime 0.10.1-rc.12](https://crates.io/crates/calimero-runtime) (priority: -5) 771. [calimero-context 0.10.1-rc.12](https://crates.io/crates/calimero-context) (priority: -5) 772. [calimero-tee-attestation 0.10.1-rc.12](https://crates.io/crates/calimero-tee-attestation) (priority: -5) 773. [mero-auth 0.10.1-rc.12](https://crates.io/crates/mero-auth) (priority: -5) 774. [calimero-server 0.10.1-rc.12](https://crates.io/crates/calimero-server) (priority: -5) 775. [calimero-config 0.10.1-rc.12](https://crates.io/crates/calimero-config) (priority: -5) 776. [calimero-network 0.10.1-rc.12](https://crates.io/crates/calimero-network) (priority: -5) 777. [calimero-store-encryption 0.10.1-rc.12](https://crates.io/crates/calimero-store-encryption) (priority: -5) 778. [calimero-store-rocksdb 0.10.1-rc.12](https://crates.io/crates/calimero-store-rocksdb) (priority: -5) 779. [calimero-node 0.10.1-rc.12](https://crates.io/crates/calimero-node) (priority: -5) 780. [mero-sign 0.10.1-rc.12](https://crates.io/crates/mero-sign) (priority: -5) 781. [calimero-primitives 0.10.1-rc.13](https://crates.io/crates/calimero-primitives) (priority: -5) 782. [calimero-prelude 0.10.1-rc.13](https://crates.io/crates/calimero-prelude) (priority: -5) 783. [calimero-sdk-macros 0.10.1-rc.13](https://crates.io/crates/calimero-sdk-macros) (priority: -5) 784. [calimero-sys 0.10.1-rc.13](https://crates.io/crates/calimero-sys) (priority: -5) 785. [calimero-wasm-abi 0.10.1-rc.13](https://crates.io/crates/calimero-wasm-abi) (priority: -5) 786. [calimero-sdk 0.10.1-rc.13](https://crates.io/crates/calimero-sdk) (priority: -5) 787. [calimero-storage-macros 0.10.1-rc.13](https://crates.io/crates/calimero-storage-macros) (priority: -5) 788. [calimero-storage 0.10.1-rc.13](https://crates.io/crates/calimero-storage) (priority: -5) 789. [calimero-store 0.10.1-rc.13](https://crates.io/crates/calimero-store) (priority: -5) 790. [calimero-blobstore 0.10.1-rc.13](https://crates.io/crates/calimero-blobstore) (priority: -5) 791. [calimero-context-config 0.10.1-rc.13](https://crates.io/crates/calimero-context-config) (priority: -5) 792. [calimero-crypto 0.10.1-rc.13](https://crates.io/crates/calimero-crypto) (priority: -5) 793. [calimero-utils-actix 0.10.1-rc.13](https://crates.io/crates/calimero-utils-actix) (priority: -5) 794. [calimero-network-primitives 0.10.1-rc.13](https://crates.io/crates/calimero-network-primitives) (priority: -5) 795. [calimero-node-primitives 0.10.1-rc.13](https://crates.io/crates/calimero-node-primitives) (priority: -5) 796. [calimero-context-primitives 0.10.1-rc.13](https://crates.io/crates/calimero-context-primitives) (priority: -5) 797. [calimero-server-primitives 0.10.1-rc.13](https://crates.io/crates/calimero-server-primitives) (priority: -5) 798. [calimero-client 0.10.1-rc.13](https://crates.io/crates/calimero-client) (priority: -5) 799. [calimero-dag 0.10.1-rc.13](https://crates.io/crates/calimero-dag) (priority: -5) 800. [calimero-runtime 0.10.1-rc.13](https://crates.io/crates/calimero-runtime) (priority: -5) 801. [calimero-context 0.10.1-rc.13](https://crates.io/crates/calimero-context) (priority: -5) 802. [calimero-tee-attestation 0.10.1-rc.13](https://crates.io/crates/calimero-tee-attestation) (priority: -5) 803. [mero-auth 0.10.1-rc.13](https://crates.io/crates/mero-auth) (priority: -5) 804. [calimero-server 0.10.1-rc.13](https://crates.io/crates/calimero-server) (priority: -5) 805. [calimero-config 0.10.1-rc.13](https://crates.io/crates/calimero-config) (priority: -5) 806. [calimero-network 0.10.1-rc.13](https://crates.io/crates/calimero-network) (priority: -5) 807. [calimero-store-encryption 0.10.1-rc.13](https://crates.io/crates/calimero-store-encryption) (priority: -5) 808. [calimero-store-rocksdb 0.10.1-rc.13](https://crates.io/crates/calimero-store-rocksdb) (priority: -5) 809. [calimero-node 0.10.1-rc.13](https://crates.io/crates/calimero-node) (priority: -5) 810. [mero-sign 0.10.1-rc.13](https://crates.io/crates/mero-sign) (priority: -5) 811. [vil\_cli 0.1.16](https://crates.io/crates/vil_cli) (priority: -5) 812. [rig-cat 0.1.1](https://crates.io/crates/rig-cat) (priority: -5) 813. [all-the-errors 0.1.0-beta4](https://crates.io/crates/all-the-errors) (priority: -5) 814. [symforge 4.3.0](https://crates.io/crates/symforge) (priority: -5) 815. [symforge 4.4.0](https://crates.io/crates/symforge) (priority: -5) 816. [navan 0.1.0](https://crates.io/crates/navan) (priority: -5) 817. [symforge 4.6.0](https://crates.io/crates/symforge) (priority: -5) 818. [symforge 4.7.0](https://crates.io/crates/symforge) (priority: -5) 819. [symforge 4.7.1](https://crates.io/crates/symforge) (priority: -5) 820. [index\_type\_macros 0.1.1](https://crates.io/crates/index_type_macros) (priority: -5) 821. [index\_type 0.1.1](https://crates.io/crates/index_type) (priority: -5) 822. [dk-agent-sdk 0.2.54](https://crates.io/crates/dk-agent-sdk) (priority: -5) 823. [dk-cli 0.2.54](https://crates.io/crates/dk-cli) (priority: -5) 824. [ez-stack 0.2.8](https://crates.io/crates/ez-stack) (priority: -5) 825. [ez-stack 0.2.9](https://crates.io/crates/ez-stack) (priority: -5) 826. [skillz-rs 20260330.0.7](https://crates.io/crates/skillz-rs) (priority: -5) 827. [gameengine 0.1.1](https://crates.io/crates/gameengine) (priority: -5) 828. [vil\_cli 0.1.17](https://crates.io/crates/vil_cli) (priority: -5) 829. [symforge 4.9.0](https://crates.io/crates/symforge) (priority: -5) 830. [glazeid 0.4.0](https://crates.io/crates/glazeid) (priority: -5) 831. [safe-chains 0.109.0](https://crates.io/crates/safe-chains) (priority: -5) 832. [safe-chains 0.110.0](https://crates.io/crates/safe-chains) (priority: -5) 833. [symforge 4.9.1](https://crates.io/crates/symforge) (priority: -5) 834. [shannon-nu-experimental 0.111.3](https://crates.io/crates/shannon-nu-experimental) (priority: -5) 835. [shannon-nu-glob 0.111.3](https://crates.io/crates/shannon-nu-glob) (priority: -5) 836. [shannon-nu-path 0.111.3](https://crates.io/crates/shannon-nu-path) (priority: -5) 837. [shannon-nu-derive-value 0.111.3](https://crates.io/crates/shannon-nu-derive-value) (priority: -5) 838. [shannon-nu-system 0.111.3](https://crates.io/crates/shannon-nu-system) (priority: -5) 839. [shannon-nu-utils 0.111.3](https://crates.io/crates/shannon-nu-utils) (priority: -5) 840. [shannon-nu-protocol 0.111.3](https://crates.io/crates/shannon-nu-protocol) (priority: -5) 841. [shannon-nu-engine 0.111.3](https://crates.io/crates/shannon-nu-engine) (priority: -5) 842. [slumber\_macros 5.2.3](https://crates.io/crates/slumber_macros) (priority: -5) 843. [slumber\_util 5.2.3](https://crates.io/crates/slumber_util) (priority: -5) 844. [slumber\_config 5.2.3](https://crates.io/crates/slumber_config) (priority: -5) 845. [slumber\_template 5.2.3](https://crates.io/crates/slumber_template) (priority: -5) 846. [slumber\_core 5.2.3](https://crates.io/crates/slumber_core) (priority: -5) 847. [slumber\_import 5.2.3](https://crates.io/crates/slumber_import) (priority: -5) 848. [slumber\_tui 5.2.3](https://crates.io/crates/slumber_tui) (priority: -5) 849. [slumber\_cli 5.2.3](https://crates.io/crates/slumber_cli) (priority: -5) 850. [slumber 5.2.3](https://crates.io/crates/slumber) (priority: -5) 851. [symforge 4.9.2](https://crates.io/crates/symforge) (priority: -5) 852. [restui 0.3.1](https://crates.io/crates/restui) (priority: -5) 853. [tequel-rs 0.9.0](https://crates.io/crates/tequel-rs) (priority: -5) 854. [whisp-rs 0.1.0](https://crates.io/crates/whisp-rs) (priority: -5) 855. [ifc-lite-geometry-cat 0.1.0](https://crates.io/crates/ifc-lite-geometry-cat) (priority: -5) 856. [ratatui-input-manager-derive 0.2.1](https://crates.io/crates/ratatui-input-manager-derive) (priority: -5) 857. [ratatui-input-manager 0.2.1](https://crates.io/crates/ratatui-input-manager) (priority: -5) 858. [conda-express 0.5.0](https://crates.io/crates/conda-express) (priority: -5) 859. [symforge 4.9.3](https://crates.io/crates/symforge) (priority: -5) 860. [whisp-rs 0.1.1](https://crates.io/crates/whisp-rs) (priority: -5) 861. [macpow 0.1.6](https://crates.io/crates/macpow) (priority: -5) 862. [safe-chains 0.110.2](https://crates.io/crates/safe-chains) (priority: -5) 863. [symforge 4.9.4](https://crates.io/crates/symforge) (priority: -5) 864. [symforge 4.9.5](https://crates.io/crates/symforge) (priority: -5) 865. [safe-chains 0.111.0](https://crates.io/crates/safe-chains) (priority: -5) 866. [conda-express 0.5.1](https://crates.io/crates/conda-express) (priority: -5) 867. [safe-chains 0.111.1](https://crates.io/crates/safe-chains) (priority: -5) 868. [stalin-sort 1.0.2](https://crates.io/crates/stalin-sort) (priority: -5) 869. [stalin-sort 1.0.2-f1](https://crates.io/crates/stalin-sort) (priority: -5) 870. [safe-chains 0.112.0](https://crates.io/crates/safe-chains) (priority: -5) 871. [safe-chains 0.112.1](https://crates.io/crates/safe-chains) (priority: -5) 872. [safe-chains 0.112.2](https://crates.io/crates/safe-chains) (priority: -5) 873. [safe-chains 0.112.3](https://crates.io/crates/safe-chains) (priority: -5) 874. [symforge 4.9.7](https://crates.io/crates/symforge) (priority: -5) 875. [linuxcnc-grpc 0.6.0-beta.3](https://crates.io/crates/linuxcnc-grpc) (priority: -5) 876. [greentic-start 0.4.28](https://crates.io/crates/greentic-start) (priority: -5) 877. [safe-chains 0.113.0](https://crates.io/crates/safe-chains) (priority: -5) 878. [vastar 0.1.7](https://crates.io/crates/vastar) (priority: -5) 879. [safe-chains 0.113.1](https://crates.io/crates/safe-chains) (priority: -5) 880. [greentic-start 0.4.29](https://crates.io/crates/greentic-start) (priority: -5) 881. [mkutils-macros 0.1.117](https://crates.io/crates/mkutils-macros) (priority: -5) 882. [mkutils 0.1.117](https://crates.io/crates/mkutils) (priority: -5) 883. [safe-chains 0.114.0](https://crates.io/crates/safe-chains) (priority: -5) 884. [safe-chains 0.114.1](https://crates.io/crates/safe-chains) (priority: -5) 885. [vanity 0.6.0](https://crates.io/crates/vanity) (priority: -5) 886. [safe-chains 0.115.0](https://crates.io/crates/safe-chains) (priority: -5) 887. [tagit-core 0.3.6](https://crates.io/crates/tagit-core) (priority: -5) 888. [secure-gate 0.9.0-rc.4](https://crates.io/crates/secure-gate) (priority: -5) 889. [tagit-core 0.3.7](https://crates.io/crates/tagit-core) (priority: -5) 890. [event\_publisher 0.1.5](https://crates.io/crates/event_publisher) (priority: -5) 891. [ids-apis 1.0.191](https://crates.io/crates/ids-apis) (priority: -5) 892. [turso\_macros 0.6.0-pre.13](https://crates.io/crates/turso_macros) (priority: -5) 893. [turso\_ext 0.6.0-pre.13](https://crates.io/crates/turso_ext) (priority: -5) 894. [turso\_parser 0.6.0-pre.13](https://crates.io/crates/turso_parser) (priority: -5) 895. [turso\_core 0.6.0-pre.13](https://crates.io/crates/turso_core) (priority: -5) 896. [turso\_sdk\_kit\_macros 0.6.0-pre.13](https://crates.io/crates/turso_sdk_kit_macros) (priority: -5) 897. [turso\_sdk\_kit 0.6.0-pre.13](https://crates.io/crates/turso_sdk_kit) (priority: -5) 898. [turso\_sync\_engine 0.6.0-pre.13](https://crates.io/crates/turso_sync_engine) (priority: -5) 899. [turso\_sync\_sdk\_kit 0.6.0-pre.13](https://crates.io/crates/turso_sync_sdk_kit) (priority: -5) 900. [turso 0.6.0-pre.13](https://crates.io/crates/turso) (priority: -5) 901. [ghat 0.7.1](https://crates.io/crates/ghat) (priority: -5) 902. [portctl 0.5.2](https://crates.io/crates/portctl) (priority: -5) 903. [kailash-plugin-macros 3.6.1](https://crates.io/crates/kailash-plugin-macros) (priority: -5) 904. [kailash-plugin-guest 3.6.1](https://crates.io/crates/kailash-plugin-guest) (priority: -5) 905. [icydb-derive 0.66.5](https://crates.io/crates/icydb-derive) (priority: -5) 906. [icydb-primitives 0.66.5](https://crates.io/crates/icydb-primitives) (priority: -5) 907. [icydb-utils 0.66.5](https://crates.io/crates/icydb-utils) (priority: -5) 908. [icydb-core 0.66.5](https://crates.io/crates/icydb-core) (priority: -5) 909. [icydb-schema 0.66.5](https://crates.io/crates/icydb-schema) (priority: -5) 910. [icydb-build 0.66.5](https://crates.io/crates/icydb-build) (priority: -5) 911. [icydb-schema-derive 0.66.5](https://crates.io/crates/icydb-schema-derive) (priority: -5) 912. [ai-sandbox 0.1.1](https://crates.io/crates/ai-sandbox) (priority: -5) 913. [mwin 0.1.0](https://crates.io/crates/mwin) (priority: -5) 914. [tempo-x402-gateway 6.4.2](https://crates.io/crates/tempo-x402-gateway) (priority: -5) 915. [tempo-x402-identity 6.4.2](https://crates.io/crates/tempo-x402-identity) (priority: -5) 916. [emet 1.0.0](https://crates.io/crates/emet) (priority: -5) 917. [tempo-x402-cartridge 6.4.3](https://crates.io/crates/tempo-x402-cartridge) (priority: -5) 918. [libverify-core 0.6.0](https://crates.io/crates/libverify-core) (priority: -5) 919. [tempo-x402-gateway 6.4.3](https://crates.io/crates/tempo-x402-gateway) (priority: -5) 920. [tempo-x402-identity 6.4.3](https://crates.io/crates/tempo-x402-identity) (priority: -5) 921. [libverify-policy 0.6.0](https://crates.io/crates/libverify-policy) (priority: -5) 922. [libverify-output 0.6.0](https://crates.io/crates/libverify-output) (priority: -5) 923. [tempo-x402-soul 6.4.3](https://crates.io/crates/tempo-x402-soul) (priority: -5) 924. [libverify-github 0.6.0](https://crates.io/crates/libverify-github) (priority: -5) 925. [tempo-x402-node 6.4.3](https://crates.io/crates/tempo-x402-node) (priority: -5) 926. [ai-sandbox 0.1.3](https://crates.io/crates/ai-sandbox) (priority: -5) 927. [depsec 0.13.0](https://crates.io/crates/depsec) (priority: -5) 928. [ai-sandbox 0.1.4](https://crates.io/crates/ai-sandbox) (priority: -5) 929. [agent-doc 0.28.2](https://crates.io/crates/agent-doc) (priority: -5) 930. [ai-sandbox 0.1.5](https://crates.io/crates/ai-sandbox) (priority: -5) 931. [uactor 0.16.0](https://crates.io/crates/uactor) (priority: -5) 932. [libverify-core 0.6.2](https://crates.io/crates/libverify-core) (priority: -5) 933. [libverify-policy 0.6.2](https://crates.io/crates/libverify-policy) (priority: -5) 934. [libverify-output 0.6.2](https://crates.io/crates/libverify-output) (priority: -5) 935. [libverify-github 0.6.2](https://crates.io/crates/libverify-github) (priority: -5) 936. [ai-sandbox 0.1.6](https://crates.io/crates/ai-sandbox) (priority: -5) 937. [uactor 0.16.1](https://crates.io/crates/uactor) (priority: -5) 938. [tempo-x402 6.4.5](https://crates.io/crates/tempo-x402) (priority: -5) 939. [tempo-x402-model 6.4.5](https://crates.io/crates/tempo-x402-model) (priority: -5) 940. [tempo-x402-cartridge 6.4.5](https://crates.io/crates/tempo-x402-cartridge) (priority: -5) 941. [tempo-x402-gateway 6.4.5](https://crates.io/crates/tempo-x402-gateway) (priority: -5) 942. [tempo-x402-identity 6.4.5](https://crates.io/crates/tempo-x402-identity) (priority: -5) 943. [orca-core 0.0.4](https://crates.io/crates/orca-core) (priority: -5) 944. [orca-proxy 0.0.4](https://crates.io/crates/orca-proxy) (priority: -5) 945. [orca-ai 0.0.4](https://crates.io/crates/orca-ai) (priority: -5) 946. [tempo-x402-soul 6.4.5](https://crates.io/crates/tempo-x402-soul) (priority: -5) 947. [orca-agent 0.0.4](https://crates.io/crates/orca-agent) (priority: -5) 948. [tempo-x402-node 6.4.5](https://crates.io/crates/tempo-x402-node) (priority: -5) 949. [libverify-core 0.6.3](https://crates.io/crates/libverify-core) (priority: -5) 950. [libverify-policy 0.6.3](https://crates.io/crates/libverify-policy) (priority: -5) 951. [libverify-output 0.6.3](https://crates.io/crates/libverify-output) (priority: -5) 952. [gatelogue-types 3.1.1+13](https://crates.io/crates/gatelogue-types) (priority: -5) 953. [orca-core 0.0.5](https://crates.io/crates/orca-core) (priority: -5) 954. [orca-proxy 0.0.5](https://crates.io/crates/orca-proxy) (priority: -5) 955. [orca-ai 0.0.5](https://crates.io/crates/orca-ai) (priority: -5) 956. [orca-tui 0.0.5](https://crates.io/crates/orca-tui) (priority: -5) 957. [sirr-server 1.0.41](https://crates.io/crates/sirr-server) (priority: -5) 958. [orca-agent 0.0.5](https://crates.io/crates/orca-agent) (priority: -5) 959. [sirrd 1.0.41](https://crates.io/crates/sirrd) (priority: -5) 960. [sirr 1.0.41](https://crates.io/crates/sirr) (priority: -5) 961. [mcp-dashboard 0.3.3](https://crates.io/crates/mcp-dashboard) (priority: -5) 962. [libverify-core 0.7.0](https://crates.io/crates/libverify-core) (priority: -5) 963. [libverify-policy 0.7.0](https://crates.io/crates/libverify-policy) (priority: -5) 964. [libverify-output 0.7.0](https://crates.io/crates/libverify-output) (priority: -5) 965. [allure-rust-commons 1.0.1](https://crates.io/crates/allure-rust-commons) (priority: -5) 966. [mcp-dashboard 0.3.4](https://crates.io/crates/mcp-dashboard) (priority: -5) 967. [allure-test-macros 1.0.1](https://crates.io/crates/allure-test-macros) (priority: -5) 968. [allure-cargotest 1.0.1](https://crates.io/crates/allure-cargotest) (priority: -5) 969. [libverify-core 0.7.1](https://crates.io/crates/libverify-core) (priority: -5) 970. [libverify-policy 0.7.1](https://crates.io/crates/libverify-policy) (priority: -5) 971. [libverify-output 0.7.1](https://crates.io/crates/libverify-output) (priority: -5) 972. [libverify-github 0.7.1](https://crates.io/crates/libverify-github) (priority: -5) 973. [sdme 0.5.5](https://crates.io/crates/sdme) (priority: -5) 974. [mcp-dashboard 0.3.5](https://crates.io/crates/mcp-dashboard) (priority: -5) 975. [libverify-core 0.7.2](https://crates.io/crates/libverify-core) (priority: -5) 976. [libverify-policy 0.7.2](https://crates.io/crates/libverify-policy) (priority: -5) 977. [libverify-output 0.7.2](https://crates.io/crates/libverify-output) (priority: -5) 978. [libverify-github 0.7.2](https://crates.io/crates/libverify-github) (priority: -5) 979. [rust-dependency-1 1.0.0](https://crates.io/crates/rust-dependency-1) (priority: -5) 980. [airlock-gateway 0.4.3](https://crates.io/crates/airlock-gateway) (priority: -5) 981. [mcp-dashboard 0.3.6](https://crates.io/crates/mcp-dashboard) (priority: -5) 982. [mcp-dashboard 0.3.7](https://crates.io/crates/mcp-dashboard) (priority: -5) 983. [copc\_converter 0.6.0](https://crates.io/crates/copc_converter) (priority: -5) 984. [mcp-dashboard 0.3.8](https://crates.io/crates/mcp-dashboard) (priority: -5) 985. [kiboku 0.4.0](https://crates.io/crates/kiboku) (priority: -5) 986. [honey\_id-types 1.4.2](https://crates.io/crates/honey_id-types) (priority: -5) 987. [honey\_id-types 1.4.3](https://crates.io/crates/honey_id-types) (priority: -5) 988. [canic-cdk 0.20.5](https://crates.io/crates/canic-cdk) (priority: -5) 989. [harn-lexer 0.5.1](https://crates.io/crates/harn-lexer) (priority: -5) 990. [harn-parser 0.5.1](https://crates.io/crates/harn-parser) (priority: -5) 991. [harn-vm 0.5.1](https://crates.io/crates/harn-vm) (priority: -5) 992. [harn-fmt 0.5.1](https://crates.io/crates/harn-fmt) (priority: -5) 993. [harn-lint 0.5.1](https://crates.io/crates/harn-lint) (priority: -5) 994. [harn-lsp 0.5.1](https://crates.io/crates/harn-lsp) (priority: -5) 995. [harn-dap 0.5.1](https://crates.io/crates/harn-dap) (priority: -5) 996. [harn-cli 0.5.1](https://crates.io/crates/harn-cli) (priority: -5) 997. [nexus-slab 2.1.0](https://crates.io/crates/nexus-slab) (priority: -5) 998. [nexus-collections 1.0.0](https://crates.io/crates/nexus-collections) (priority: -5) 999. [mcp-dashboard 0.3.10](https://crates.io/crates/mcp-dashboard) (priority: -5) 1000. [mcp-dashboard 0.3.11](https://crates.io/crates/mcp-dashboard) (priority: -5) 1001. [slumber-reqwest 0.13.2-slumber.0](https://crates.io/crates/slumber-reqwest) (priority: -5) 1002. [opendroneid-sys 0.1.0](https://crates.io/crates/opendroneid-sys) (priority: -5) 1003. [opendroneid-sys 0.1.1](https://crates.io/crates/opendroneid-sys) (priority: -5) 1004. [simple-user-system 1.1.2](https://crates.io/crates/simple-user-system) (priority: -5) 1005. [canadensis 0.6.0](https://crates.io/crates/canadensis) (priority: -5) 1006. [honey\_id-types 1.4.5](https://crates.io/crates/honey_id-types) (priority: -5) 1007. [simple-user-system 1.1.3](https://crates.io/crates/simple-user-system) (priority: -5) 1008. [fynd-core 0.42.0](https://crates.io/crates/fynd-core) (priority: -5) 1009. [fynd-rpc-types 0.42.0](https://crates.io/crates/fynd-rpc-types) (priority: -5) 1010. [fynd-client 0.42.0](https://crates.io/crates/fynd-client) (priority: -5) 1011. [fynd-rpc 0.42.0](https://crates.io/crates/fynd-rpc) (priority: -5) 1012. [fynd 0.42.0](https://crates.io/crates/fynd) (priority: -5) 1013. [pstd 1.0.68](https://crates.io/crates/pstd) (priority: -5) 1014. [ouija 0.1.0-alpha.148](https://crates.io/crates/ouija) (priority: -5) 1015. [myway-cli 0.1.3](https://crates.io/crates/myway-cli) (priority: -5) 1016. [myway-cli 0.1.4](https://crates.io/crates/myway-cli) (priority: -5) 1017. [myway-cli 0.3.0](https://crates.io/crates/myway-cli) (priority: -5) 1018. [myway-cli 0.3.1](https://crates.io/crates/myway-cli) (priority: -5) 1019. [myway-cli 0.3.2](https://crates.io/crates/myway-cli) (priority: -5) 1020. [surge-cli 0.4.0-preview.236](https://crates.io/crates/surge-cli) (priority: -5) 1021. [surge-cli 0.4.0](https://crates.io/crates/surge-cli) (priority: -5) 1022. [pinentry-zellij 0.2.0](https://crates.io/crates/pinentry-zellij) (priority: -5) **Rebuild Queue** We continuously rebuild the latest versions for all crates so they can benefit from new features in rustdoc. There are currently 228 crates in the rebuild queue. [Show](https://docs.rs/releases/queue?expand=1) --- # Int32Array in arrow::array - Rust [Docs.rs](https://docs.rs/) * [arrow-58.1.0](https://docs.rs/arrow/latest/arrow/array/type.Int32Array.html# "Rust implementation of Apache Arrow") * arrow 58.1.0 * [Permalink](https://docs.rs/arrow/58.1.0/arrow/array/type.Int32Array.html "Get a link to this specific version") * [Docs.rs crate page](https://docs.rs/crate/arrow/latest "See arrow in docs.rs") * [Apache-2.0](https://spdx.org/licenses/Apache-2.0) * Links * [Homepage](https://github.com/apache/arrow-rs) * [Repository](https://github.com/apache/arrow-rs) * [crates.io](https://crates.io/crates/arrow "See arrow in crates.io") * [Source](https://docs.rs/crate/arrow/latest/source/ "Browse source of arrow-58.1.0") * Owners * [andygrove](https://crates.io/users/andygrove) * [kou](https://crates.io/users/kou) * [kszucs](https://crates.io/users/kszucs) * [xhochy](https://crates.io/users/xhochy) * [nevi-me](https://crates.io/users/nevi-me) * [alamb](https://crates.io/users/alamb) * [tustvold](https://crates.io/users/tustvold) * Dependencies * * [arrow-arith ^58.1.0 _normal_](https://docs.rs/arrow-arith/^58.1.0/) * [arrow-array ^58.1.0 _normal_](https://docs.rs/arrow-array/^58.1.0/) * [arrow-buffer ^58.1.0 _normal_](https://docs.rs/arrow-buffer/^58.1.0/) * [arrow-cast ^58.1.0 _normal_](https://docs.rs/arrow-cast/^58.1.0/) * [arrow-csv ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-csv/^58.1.0/) * [arrow-data ^58.1.0 _normal_](https://docs.rs/arrow-data/^58.1.0/) * [arrow-ipc ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-ipc/^58.1.0/) * [arrow-json ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-json/^58.1.0/) * [arrow-ord ^58.1.0 _normal_](https://docs.rs/arrow-ord/^58.1.0/) * [arrow-pyarrow ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-pyarrow/^58.1.0/) * [arrow-row ^58.1.0 _normal_](https://docs.rs/arrow-row/^58.1.0/) * [arrow-schema ^58.1.0 _normal_](https://docs.rs/arrow-schema/^58.1.0/) * [arrow-select ^58.1.0 _normal_](https://docs.rs/arrow-select/^58.1.0/) * [arrow-string ^58.1.0 _normal_](https://docs.rs/arrow-string/^58.1.0/) * [half ^2.1 _normal_ _optional_](https://docs.rs/half/^2.1/) * [rand ^0.9 _normal_ _optional_](https://docs.rs/rand/^0.9/) * [bytes ^1.9 _dev_](https://docs.rs/bytes/^1.9/) * [chrono ^0.4.40 _dev_](https://docs.rs/chrono/^0.4.40/) * [criterion ^0.8.0 _dev_](https://docs.rs/criterion/^0.8.0/) * [half ^2.1 _dev_](https://docs.rs/half/^2.1/) * [memmap2 ^0.9.3 _dev_](https://docs.rs/memmap2/^0.9.3/) * [rand ^0.9 _dev_](https://docs.rs/rand/^0.9/) * [serde ^1.0 _dev_](https://docs.rs/serde/^1.0/) * Versions * [**100%** of the crate is documented](https://docs.rs/crate/arrow/latest) * [Platform](https://docs.rs/arrow/latest/arrow/array/type.Int32Array.html#) * [x86\_64-unknown-linux-gnu](https://docs.rs/crate/arrow/latest/target-redirect/arrow/array/type.Int32Array.html) * [Feature flags](https://docs.rs/crate/arrow/latest/features "Browse available feature flags of arrow-58.1.0") * [docs.rs](https://docs.rs/arrow/latest/arrow/array/type.Int32Array.html#) * [About docs.rs](https://docs.rs/about) * [Badges](https://docs.rs/about/badges) * [Builds](https://docs.rs/about/builds) * [Metadata](https://docs.rs/about/metadata) * [Shorthand URLs](https://docs.rs/about/redirections) * [Download](https://docs.rs/about/download) * [Rustdoc JSON](https://docs.rs/about/rustdoc-json) * [Build queue](https://docs.rs/releases/queue) * [Privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#docs.rs) * [Rust](https://docs.rs/arrow/latest/arrow/array/type.Int32Array.html#) * [Rust website](https://www.rust-lang.org/) * [The Book](https://doc.rust-lang.org/book/) * [Standard Library API Reference](https://doc.rust-lang.org/std/) * [Rust by Example](https://doc.rust-lang.org/rust-by-example/) * [The Cargo Guide](https://doc.rust-lang.org/cargo/guide/) * [Clippy Documentation](https://doc.rust-lang.org/nightly/clippy) [Skip to main content](https://docs.rs/arrow/latest/arrow/array/type.Int32Array.html#main-content) [Int32Array](https://docs.rs/arrow/latest/arrow/array/type.Int32Array.html#) ----------------------------------------------------------------------------- [arrow](https://docs.rs/arrow/latest/arrow/index.html) ::[array](https://docs.rs/arrow/latest/arrow/array/index.html) Type Alias Int32Array Copy item path ==================================== [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/primitive_array.rs.html#92) pub type Int32Array = PrimitiveArray; Expand description A [`PrimitiveArray`](https://docs.rs/arrow/latest/arrow/array/struct.PrimitiveArray.html "struct arrow::array::PrimitiveArray") of `i32` [§](https://docs.rs/arrow/latest/arrow/array/type.Int32Array.html#examples) Examples ------------------------------------------------------------------------------------ Construction // Create from Vec> let arr = Int32Array::from(vec![Some(1), None, Some(2)]); // Create from Vec let arr = Int32Array::from(vec![1, 2, 3]); // Create iter/collect let arr: Int32Array = std::iter::repeat(42).take(10).collect(); See [`PrimitiveArray`](https://docs.rs/arrow/latest/arrow/array/struct.PrimitiveArray.html "struct arrow::array::PrimitiveArray") for more information and examples Aliased Type[§](https://docs.rs/arrow/latest/arrow/array/type.Int32Array.html#aliased-type) -------------------------------------------------------------------------------------------- pub struct Int32Array { /* private fields */ } --- # ArrayRef in arrow::array - Rust [Docs.rs](https://docs.rs/) * [arrow-58.1.0](https://docs.rs/arrow/latest/arrow/array/type.ArrayRef.html# "Rust implementation of Apache Arrow") * arrow 58.1.0 * [Permalink](https://docs.rs/arrow/58.1.0/arrow/array/type.ArrayRef.html "Get a link to this specific version") * [Docs.rs crate page](https://docs.rs/crate/arrow/latest "See arrow in docs.rs") * [Apache-2.0](https://spdx.org/licenses/Apache-2.0) * Links * [Homepage](https://github.com/apache/arrow-rs) * [Repository](https://github.com/apache/arrow-rs) * [crates.io](https://crates.io/crates/arrow "See arrow in crates.io") * [Source](https://docs.rs/crate/arrow/latest/source/ "Browse source of arrow-58.1.0") * Owners * [andygrove](https://crates.io/users/andygrove) * [kou](https://crates.io/users/kou) * [kszucs](https://crates.io/users/kszucs) * [xhochy](https://crates.io/users/xhochy) * [nevi-me](https://crates.io/users/nevi-me) * [alamb](https://crates.io/users/alamb) * [tustvold](https://crates.io/users/tustvold) * Dependencies * * [arrow-arith ^58.1.0 _normal_](https://docs.rs/arrow-arith/^58.1.0/) * [arrow-array ^58.1.0 _normal_](https://docs.rs/arrow-array/^58.1.0/) * [arrow-buffer ^58.1.0 _normal_](https://docs.rs/arrow-buffer/^58.1.0/) * [arrow-cast ^58.1.0 _normal_](https://docs.rs/arrow-cast/^58.1.0/) * [arrow-csv ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-csv/^58.1.0/) * [arrow-data ^58.1.0 _normal_](https://docs.rs/arrow-data/^58.1.0/) * [arrow-ipc ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-ipc/^58.1.0/) * [arrow-json ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-json/^58.1.0/) * [arrow-ord ^58.1.0 _normal_](https://docs.rs/arrow-ord/^58.1.0/) * [arrow-pyarrow ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-pyarrow/^58.1.0/) * [arrow-row ^58.1.0 _normal_](https://docs.rs/arrow-row/^58.1.0/) * [arrow-schema ^58.1.0 _normal_](https://docs.rs/arrow-schema/^58.1.0/) * [arrow-select ^58.1.0 _normal_](https://docs.rs/arrow-select/^58.1.0/) * [arrow-string ^58.1.0 _normal_](https://docs.rs/arrow-string/^58.1.0/) * [half ^2.1 _normal_ _optional_](https://docs.rs/half/^2.1/) * [rand ^0.9 _normal_ _optional_](https://docs.rs/rand/^0.9/) * [bytes ^1.9 _dev_](https://docs.rs/bytes/^1.9/) * [chrono ^0.4.40 _dev_](https://docs.rs/chrono/^0.4.40/) * [criterion ^0.8.0 _dev_](https://docs.rs/criterion/^0.8.0/) * [half ^2.1 _dev_](https://docs.rs/half/^2.1/) * [memmap2 ^0.9.3 _dev_](https://docs.rs/memmap2/^0.9.3/) * [rand ^0.9 _dev_](https://docs.rs/rand/^0.9/) * [serde ^1.0 _dev_](https://docs.rs/serde/^1.0/) * Versions * [**100%** of the crate is documented](https://docs.rs/crate/arrow/latest) * [Platform](https://docs.rs/arrow/latest/arrow/array/type.ArrayRef.html#) * [x86\_64-unknown-linux-gnu](https://docs.rs/crate/arrow/latest/target-redirect/arrow/array/type.ArrayRef.html) * [Feature flags](https://docs.rs/crate/arrow/latest/features "Browse available feature flags of arrow-58.1.0") * [docs.rs](https://docs.rs/arrow/latest/arrow/array/type.ArrayRef.html#) * [About docs.rs](https://docs.rs/about) * [Badges](https://docs.rs/about/badges) * [Builds](https://docs.rs/about/builds) * [Metadata](https://docs.rs/about/metadata) * [Shorthand URLs](https://docs.rs/about/redirections) * [Download](https://docs.rs/about/download) * [Rustdoc JSON](https://docs.rs/about/rustdoc-json) * [Build queue](https://docs.rs/releases/queue) * [Privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#docs.rs) * [Rust](https://docs.rs/arrow/latest/arrow/array/type.ArrayRef.html#) * [Rust website](https://www.rust-lang.org/) * [The Book](https://doc.rust-lang.org/book/) * [Standard Library API Reference](https://doc.rust-lang.org/std/) * [Rust by Example](https://doc.rust-lang.org/rust-by-example/) * [The Cargo Guide](https://doc.rust-lang.org/cargo/guide/) * [Clippy Documentation](https://doc.rust-lang.org/nightly/clippy) [Skip to main content](https://docs.rs/arrow/latest/arrow/array/type.ArrayRef.html#main-content) [ArrayRef](https://docs.rs/arrow/latest/arrow/array/type.ArrayRef.html#) ------------------------------------------------------------------------- [arrow](https://docs.rs/arrow/latest/arrow/index.html) ::[array](https://docs.rs/arrow/latest/arrow/array/index.html) Type Alias ArrayRef Copy item path ================================== [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/mod.rs.html#429) pub type ArrayRef = Arc; Expand description A reference-counted reference to a generic `Array` Aliased Type[§](https://docs.rs/arrow/latest/arrow/array/type.ArrayRef.html#aliased-type) ------------------------------------------------------------------------------------------ pub struct ArrayRef { /* private fields */ } --- # cast in arrow::compute - Rust [Docs.rs](https://docs.rs/) * [arrow-58.1.0](https://docs.rs/arrow/latest/arrow/compute/fn.cast.html# "Rust implementation of Apache Arrow") * arrow 58.1.0 * [Permalink](https://docs.rs/arrow/58.1.0/arrow/compute/fn.cast.html "Get a link to this specific version") * [Docs.rs crate page](https://docs.rs/crate/arrow/latest "See arrow in docs.rs") * [Apache-2.0](https://spdx.org/licenses/Apache-2.0) * Links * [Homepage](https://github.com/apache/arrow-rs) * [Repository](https://github.com/apache/arrow-rs) * [crates.io](https://crates.io/crates/arrow "See arrow in crates.io") * [Source](https://docs.rs/crate/arrow/latest/source/ "Browse source of arrow-58.1.0") * Owners * [andygrove](https://crates.io/users/andygrove) * [kou](https://crates.io/users/kou) * [kszucs](https://crates.io/users/kszucs) * [xhochy](https://crates.io/users/xhochy) * [nevi-me](https://crates.io/users/nevi-me) * [alamb](https://crates.io/users/alamb) * [tustvold](https://crates.io/users/tustvold) * Dependencies * * [arrow-arith ^58.1.0 _normal_](https://docs.rs/arrow-arith/^58.1.0/) * [arrow-array ^58.1.0 _normal_](https://docs.rs/arrow-array/^58.1.0/) * [arrow-buffer ^58.1.0 _normal_](https://docs.rs/arrow-buffer/^58.1.0/) * [arrow-cast ^58.1.0 _normal_](https://docs.rs/arrow-cast/^58.1.0/) * [arrow-csv ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-csv/^58.1.0/) * [arrow-data ^58.1.0 _normal_](https://docs.rs/arrow-data/^58.1.0/) * [arrow-ipc ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-ipc/^58.1.0/) * [arrow-json ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-json/^58.1.0/) * [arrow-ord ^58.1.0 _normal_](https://docs.rs/arrow-ord/^58.1.0/) * [arrow-pyarrow ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-pyarrow/^58.1.0/) * [arrow-row ^58.1.0 _normal_](https://docs.rs/arrow-row/^58.1.0/) * [arrow-schema ^58.1.0 _normal_](https://docs.rs/arrow-schema/^58.1.0/) * [arrow-select ^58.1.0 _normal_](https://docs.rs/arrow-select/^58.1.0/) * [arrow-string ^58.1.0 _normal_](https://docs.rs/arrow-string/^58.1.0/) * [half ^2.1 _normal_ _optional_](https://docs.rs/half/^2.1/) * [rand ^0.9 _normal_ _optional_](https://docs.rs/rand/^0.9/) * [bytes ^1.9 _dev_](https://docs.rs/bytes/^1.9/) * [chrono ^0.4.40 _dev_](https://docs.rs/chrono/^0.4.40/) * [criterion ^0.8.0 _dev_](https://docs.rs/criterion/^0.8.0/) * [half ^2.1 _dev_](https://docs.rs/half/^2.1/) * [memmap2 ^0.9.3 _dev_](https://docs.rs/memmap2/^0.9.3/) * [rand ^0.9 _dev_](https://docs.rs/rand/^0.9/) * [serde ^1.0 _dev_](https://docs.rs/serde/^1.0/) * Versions * [**100%** of the crate is documented](https://docs.rs/crate/arrow/latest) * [Platform](https://docs.rs/arrow/latest/arrow/compute/fn.cast.html#) * [x86\_64-unknown-linux-gnu](https://docs.rs/crate/arrow/latest/target-redirect/arrow/compute/fn.cast.html) * [Feature flags](https://docs.rs/crate/arrow/latest/features "Browse available feature flags of arrow-58.1.0") * [docs.rs](https://docs.rs/arrow/latest/arrow/compute/fn.cast.html#) * [About docs.rs](https://docs.rs/about) * [Badges](https://docs.rs/about/badges) * [Builds](https://docs.rs/about/builds) * [Metadata](https://docs.rs/about/metadata) * [Shorthand URLs](https://docs.rs/about/redirections) * [Download](https://docs.rs/about/download) * [Rustdoc JSON](https://docs.rs/about/rustdoc-json) * [Build queue](https://docs.rs/releases/queue) * [Privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#docs.rs) * [Rust](https://docs.rs/arrow/latest/arrow/compute/fn.cast.html#) * [Rust website](https://www.rust-lang.org/) * [The Book](https://doc.rust-lang.org/book/) * [Standard Library API Reference](https://doc.rust-lang.org/std/) * [Rust by Example](https://doc.rust-lang.org/rust-by-example/) * [The Cargo Guide](https://doc.rust-lang.org/cargo/guide/) * [Clippy Documentation](https://doc.rust-lang.org/nightly/clippy) [Skip to main content](https://docs.rs/arrow/latest/arrow/compute/fn.cast.html#main-content) [cast](https://docs.rs/arrow/latest/arrow/compute/fn.cast.html#) ----------------------------------------------------------------- [arrow](https://docs.rs/arrow/latest/arrow/index.html) ::[compute](https://docs.rs/arrow/latest/arrow/compute/index.html) Function cast Copy item path ============================ [Source](https://docs.rs/arrow-cast/58.1.0/x86_64-unknown-linux-gnu/src/arrow_cast/cast/mod.rs.html#334) pub fn cast( array: &dyn Array, to_type: &DataType, ) -> Result, ArrowError> Expand description Cast `array` to the provided data type and return a new Array with type `to_type`, if possible. See [`cast_with_options`](https://docs.rs/arrow/latest/arrow/compute/fn.cast_with_options.html "fn arrow::compute::cast_with_options") for more information --- # filter in arrow::compute - Rust [Docs.rs](https://docs.rs/) * [arrow-58.1.0](https://docs.rs/arrow/latest/arrow/compute/fn.filter.html# "Rust implementation of Apache Arrow") * arrow 58.1.0 * [Permalink](https://docs.rs/arrow/58.1.0/arrow/compute/fn.filter.html "Get a link to this specific version") * [Docs.rs crate page](https://docs.rs/crate/arrow/latest "See arrow in docs.rs") * [Apache-2.0](https://spdx.org/licenses/Apache-2.0) * Links * [Homepage](https://github.com/apache/arrow-rs) * [Repository](https://github.com/apache/arrow-rs) * [crates.io](https://crates.io/crates/arrow "See arrow in crates.io") * [Source](https://docs.rs/crate/arrow/latest/source/ "Browse source of arrow-58.1.0") * Owners * [andygrove](https://crates.io/users/andygrove) * [kou](https://crates.io/users/kou) * [kszucs](https://crates.io/users/kszucs) * [xhochy](https://crates.io/users/xhochy) * [nevi-me](https://crates.io/users/nevi-me) * [alamb](https://crates.io/users/alamb) * [tustvold](https://crates.io/users/tustvold) * Dependencies * * [arrow-arith ^58.1.0 _normal_](https://docs.rs/arrow-arith/^58.1.0/) * [arrow-array ^58.1.0 _normal_](https://docs.rs/arrow-array/^58.1.0/) * [arrow-buffer ^58.1.0 _normal_](https://docs.rs/arrow-buffer/^58.1.0/) * [arrow-cast ^58.1.0 _normal_](https://docs.rs/arrow-cast/^58.1.0/) * [arrow-csv ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-csv/^58.1.0/) * [arrow-data ^58.1.0 _normal_](https://docs.rs/arrow-data/^58.1.0/) * [arrow-ipc ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-ipc/^58.1.0/) * [arrow-json ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-json/^58.1.0/) * [arrow-ord ^58.1.0 _normal_](https://docs.rs/arrow-ord/^58.1.0/) * [arrow-pyarrow ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-pyarrow/^58.1.0/) * [arrow-row ^58.1.0 _normal_](https://docs.rs/arrow-row/^58.1.0/) * [arrow-schema ^58.1.0 _normal_](https://docs.rs/arrow-schema/^58.1.0/) * [arrow-select ^58.1.0 _normal_](https://docs.rs/arrow-select/^58.1.0/) * [arrow-string ^58.1.0 _normal_](https://docs.rs/arrow-string/^58.1.0/) * [half ^2.1 _normal_ _optional_](https://docs.rs/half/^2.1/) * [rand ^0.9 _normal_ _optional_](https://docs.rs/rand/^0.9/) * [bytes ^1.9 _dev_](https://docs.rs/bytes/^1.9/) * [chrono ^0.4.40 _dev_](https://docs.rs/chrono/^0.4.40/) * [criterion ^0.8.0 _dev_](https://docs.rs/criterion/^0.8.0/) * [half ^2.1 _dev_](https://docs.rs/half/^2.1/) * [memmap2 ^0.9.3 _dev_](https://docs.rs/memmap2/^0.9.3/) * [rand ^0.9 _dev_](https://docs.rs/rand/^0.9/) * [serde ^1.0 _dev_](https://docs.rs/serde/^1.0/) * Versions * [**100%** of the crate is documented](https://docs.rs/crate/arrow/latest) * [Platform](https://docs.rs/arrow/latest/arrow/compute/fn.filter.html#) * [x86\_64-unknown-linux-gnu](https://docs.rs/crate/arrow/latest/target-redirect/arrow/compute/fn.filter.html) * [Feature flags](https://docs.rs/crate/arrow/latest/features "Browse available feature flags of arrow-58.1.0") * [docs.rs](https://docs.rs/arrow/latest/arrow/compute/fn.filter.html#) * [About docs.rs](https://docs.rs/about) * [Badges](https://docs.rs/about/badges) * [Builds](https://docs.rs/about/builds) * [Metadata](https://docs.rs/about/metadata) * [Shorthand URLs](https://docs.rs/about/redirections) * [Download](https://docs.rs/about/download) * [Rustdoc JSON](https://docs.rs/about/rustdoc-json) * [Build queue](https://docs.rs/releases/queue) * [Privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#docs.rs) * [Rust](https://docs.rs/arrow/latest/arrow/compute/fn.filter.html#) * [Rust website](https://www.rust-lang.org/) * [The Book](https://doc.rust-lang.org/book/) * [Standard Library API Reference](https://doc.rust-lang.org/std/) * [Rust by Example](https://doc.rust-lang.org/rust-by-example/) * [The Cargo Guide](https://doc.rust-lang.org/cargo/guide/) * [Clippy Documentation](https://doc.rust-lang.org/nightly/clippy) [Skip to main content](https://docs.rs/arrow/latest/arrow/compute/fn.filter.html#main-content) [filter](https://docs.rs/arrow/latest/arrow/compute/fn.filter.html#) --------------------------------------------------------------------- [arrow](https://docs.rs/arrow/latest/arrow/index.html) ::[compute](https://docs.rs/arrow/latest/arrow/compute/index.html) Function filter Copy item path ============================== [Source](https://docs.rs/arrow-select/58.1.0/x86_64-unknown-linux-gnu/src/arrow_select/filter.rs.html#205) pub fn filter( values: &dyn Array, predicate: &BooleanArray, ) -> Result, ArrowError> Expand description Returns a filtered `values` [`Array`](https://docs.rs/arrow/latest/arrow/array/trait.Array.html "trait arrow::array::Array") where the corresponding elements of `predicate` are `true`. If multiple arrays (or record batches) need to be filtered using the same predicate array, consider using [FilterBuilder](https://docs.rs/arrow/latest/arrow/compute/struct.FilterBuilder.html "struct arrow::compute::FilterBuilder") to create a single [FilterPredicate](https://docs.rs/arrow/latest/arrow/compute/struct.FilterPredicate.html "struct arrow::compute::FilterPredicate") and then calling [FilterPredicate::filter\_record\_batch](https://docs.rs/arrow/latest/arrow/compute/struct.FilterPredicate.html#method.filter_record_batch "method arrow::compute::FilterPredicate::filter_record_batch") . In contrast to this function, it is then the responsibility of the caller to use [FilterBuilder::optimize](https://docs.rs/arrow/latest/arrow/compute/struct.FilterBuilder.html#method.optimize "method arrow::compute::FilterBuilder::optimize") if appropriate. [§](https://docs.rs/arrow/latest/arrow/compute/fn.filter.html#see-also) See also -------------------------------------------------------------------------------- * [`FilterBuilder`](https://docs.rs/arrow/latest/arrow/compute/struct.FilterBuilder.html "struct arrow::compute::FilterBuilder") for more control over the filtering process. * [`filter_record_batch`](https://docs.rs/arrow/latest/arrow/compute/fn.filter_record_batch.html "fn arrow::compute::filter_record_batch") to filter a [`RecordBatch`](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html "struct arrow::array::RecordBatch") * [`BatchCoalescer`](https://docs.rs/arrow/latest/arrow/compute/struct.BatchCoalescer.html "struct arrow::compute::BatchCoalescer") : to filter multiple [`RecordBatch`](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html "struct arrow::array::RecordBatch") and coalesce the results into a single array. [§](https://docs.rs/arrow/latest/arrow/compute/fn.filter.html#example) Example ------------------------------------------------------------------------------ let array = Int32Array::from(vec![5, 6, 7, 8, 9]); let filter_array = BooleanArray::from(vec![true, false, false, true, false]); let c = filter(&array, &filter_array).unwrap(); let c = c.as_any().downcast_ref::().unwrap(); assert_eq!(c, &Int32Array::from(vec![5, 8])); --- # ArrayAccessor in arrow::array - Rust [Docs.rs](https://docs.rs/) * [arrow-58.1.0](https://docs.rs/arrow/latest/arrow/array/trait.ArrayAccessor.html# "Rust implementation of Apache Arrow") * arrow 58.1.0 * [Permalink](https://docs.rs/arrow/58.1.0/arrow/array/trait.ArrayAccessor.html "Get a link to this specific version") * [Docs.rs crate page](https://docs.rs/crate/arrow/latest "See arrow in docs.rs") * [Apache-2.0](https://spdx.org/licenses/Apache-2.0) * Links * [Homepage](https://github.com/apache/arrow-rs) * [Repository](https://github.com/apache/arrow-rs) * [crates.io](https://crates.io/crates/arrow "See arrow in crates.io") * [Source](https://docs.rs/crate/arrow/latest/source/ "Browse source of arrow-58.1.0") * Owners * [andygrove](https://crates.io/users/andygrove) * [kou](https://crates.io/users/kou) * [kszucs](https://crates.io/users/kszucs) * [xhochy](https://crates.io/users/xhochy) * [nevi-me](https://crates.io/users/nevi-me) * [alamb](https://crates.io/users/alamb) * [tustvold](https://crates.io/users/tustvold) * Dependencies * * [arrow-arith ^58.1.0 _normal_](https://docs.rs/arrow-arith/^58.1.0/) * [arrow-array ^58.1.0 _normal_](https://docs.rs/arrow-array/^58.1.0/) * [arrow-buffer ^58.1.0 _normal_](https://docs.rs/arrow-buffer/^58.1.0/) * [arrow-cast ^58.1.0 _normal_](https://docs.rs/arrow-cast/^58.1.0/) * [arrow-csv ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-csv/^58.1.0/) * [arrow-data ^58.1.0 _normal_](https://docs.rs/arrow-data/^58.1.0/) * [arrow-ipc ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-ipc/^58.1.0/) * [arrow-json ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-json/^58.1.0/) * [arrow-ord ^58.1.0 _normal_](https://docs.rs/arrow-ord/^58.1.0/) * [arrow-pyarrow ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-pyarrow/^58.1.0/) * [arrow-row ^58.1.0 _normal_](https://docs.rs/arrow-row/^58.1.0/) * [arrow-schema ^58.1.0 _normal_](https://docs.rs/arrow-schema/^58.1.0/) * [arrow-select ^58.1.0 _normal_](https://docs.rs/arrow-select/^58.1.0/) * [arrow-string ^58.1.0 _normal_](https://docs.rs/arrow-string/^58.1.0/) * [half ^2.1 _normal_ _optional_](https://docs.rs/half/^2.1/) * [rand ^0.9 _normal_ _optional_](https://docs.rs/rand/^0.9/) * [bytes ^1.9 _dev_](https://docs.rs/bytes/^1.9/) * [chrono ^0.4.40 _dev_](https://docs.rs/chrono/^0.4.40/) * [criterion ^0.8.0 _dev_](https://docs.rs/criterion/^0.8.0/) * [half ^2.1 _dev_](https://docs.rs/half/^2.1/) * [memmap2 ^0.9.3 _dev_](https://docs.rs/memmap2/^0.9.3/) * [rand ^0.9 _dev_](https://docs.rs/rand/^0.9/) * [serde ^1.0 _dev_](https://docs.rs/serde/^1.0/) * Versions * [**100%** of the crate is documented](https://docs.rs/crate/arrow/latest) * [Platform](https://docs.rs/arrow/latest/arrow/array/trait.ArrayAccessor.html#) * [x86\_64-unknown-linux-gnu](https://docs.rs/crate/arrow/latest/target-redirect/arrow/array/trait.ArrayAccessor.html) * [Feature flags](https://docs.rs/crate/arrow/latest/features "Browse available feature flags of arrow-58.1.0") * [docs.rs](https://docs.rs/arrow/latest/arrow/array/trait.ArrayAccessor.html#) * [About docs.rs](https://docs.rs/about) * [Badges](https://docs.rs/about/badges) * [Builds](https://docs.rs/about/builds) * [Metadata](https://docs.rs/about/metadata) * [Shorthand URLs](https://docs.rs/about/redirections) * [Download](https://docs.rs/about/download) * [Rustdoc JSON](https://docs.rs/about/rustdoc-json) * [Build queue](https://docs.rs/releases/queue) * [Privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#docs.rs) * [Rust](https://docs.rs/arrow/latest/arrow/array/trait.ArrayAccessor.html#) * [Rust website](https://www.rust-lang.org/) * [The Book](https://doc.rust-lang.org/book/) * [Standard Library API Reference](https://doc.rust-lang.org/std/) * [Rust by Example](https://doc.rust-lang.org/rust-by-example/) * [The Cargo Guide](https://doc.rust-lang.org/cargo/guide/) * [Clippy Documentation](https://doc.rust-lang.org/nightly/clippy) [Skip to main content](https://docs.rs/arrow/latest/arrow/array/trait.ArrayAccessor.html#main-content) [ArrayAccessor](https://docs.rs/arrow/latest/arrow/array/trait.ArrayAccessor.html#) ------------------------------------------------------------------------------------ [arrow](https://docs.rs/arrow/latest/arrow/index.html) ::[array](https://docs.rs/arrow/latest/arrow/array/index.html) Trait ArrayAccessor Copy item path ================================== [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/mod.rs.html#671) pub trait ArrayAccessor: Array { type Item: Send + Sync; // Required methods fn value(&self, index: usize) -> Self::Item; unsafe fn value_unchecked(&self, index: usize) -> Self::Item; } Expand description A generic trait for accessing the values of an [`Array`](https://docs.rs/arrow/latest/arrow/array/trait.Array.html "trait arrow::array::Array") This trait helps write specialized implementations of algorithms for different array types. Specialized implementations allow the compiler to optimize the code for the specific array type, which can lead to significant performance improvements. [§](https://docs.rs/arrow/latest/arrow/array/trait.ArrayAccessor.html#example) Example -------------------------------------------------------------------------------------- For example, to write three different implementations of a string length function for [`StringArray`](https://docs.rs/arrow/latest/arrow/array/type.StringArray.html "type arrow::array::StringArray") , [`LargeStringArray`](https://docs.rs/arrow/latest/arrow/array/type.LargeStringArray.html "type arrow::array::LargeStringArray") , and [`StringViewArray`](https://docs.rs/arrow/latest/arrow/array/type.StringViewArray.html "type arrow::array::StringViewArray") , you can write /// This function takes a dynamically typed `ArrayRef` and calls /// calls one of three specialized implementations fn character_length(arg: ArrayRef) -> Result { match arg.data_type() { DataType::Utf8 => { // downcast the ArrayRef to a StringArray and call the specialized implementation let string_array = arg.as_string::(); character_length_general::(string_array) } DataType::LargeUtf8 => { character_length_general::(arg.as_string::()) } DataType::Utf8View => { character_length_general::(arg.as_string_view()) } _ => Err(ArrowError::InvalidArgumentError("Unsupported data type".to_string())), } } /// A generic implementation of the character_length function /// This function uses the `ArrayAccessor` trait to access the values of the array /// so the compiler can generated specialized implementations for different array types /// /// Returns a new array with the length of each string in the input array /// * Int32Array for Utf8 and Utf8View arrays (lengths are 32-bit integers) /// * Int64Array for LargeUtf8 arrays (lengths are 64-bit integers) /// /// This is generic on the type of the primitive array (different string arrays have /// different lengths) and the type of the array accessor (different string arrays /// have different ways to access the values) fn character_length_general<'a, T: ArrowPrimitiveType, V: ArrayAccessor>( array: V, ) -> Result where T::Native: OffsetSizeTrait, { let iter = ArrayIter::new(array); // Create a Int32Array / Int64Array with the length of each string let result = iter .map(|string| { string.map(|string: &str| { T::Native::from_usize(string.chars().count()) .expect("should not fail as string.chars will always return integer") }) }) .collect::>(); /// Return the result as a new ArrayRef (dynamically typed) Ok(Arc::new(result) as ArrayRef) } [§](https://docs.rs/arrow/latest/arrow/array/trait.ArrayAccessor.html#validity) Validity ---------------------------------------------------------------------------------------- An [`ArrayAccessor`](https://docs.rs/arrow/latest/arrow/array/trait.ArrayAccessor.html "trait arrow::array::ArrayAccessor") must always return a well-defined value for an index that is within the bounds `0..Array::len`, including for null indexes where [`Array::is_null`](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#method.is_null "method arrow::array::Array::is_null") is true. The value at null indexes is unspecified, and implementations must not rely on a specific value such as [`Default::default`](https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default "associated function core::default::Default::default") being returned, however, it must not be undefined Required Associated Types[§](https://docs.rs/arrow/latest/arrow/array/trait.ArrayAccessor.html#required-associated-types) -------------------------------------------------------------------------------------------------------------------------- [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/mod.rs.html#673) #### type [Item](https://docs.rs/arrow/latest/arrow/array/trait.ArrayAccessor.html#associatedtype.Item) : [Send](https://doc.rust-lang.org/nightly/core/marker/trait.Send.html "trait core::marker::Send") + [Sync](https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html "trait core::marker::Sync") The Arrow type of the element being accessed. Required Methods[§](https://docs.rs/arrow/latest/arrow/array/trait.ArrayAccessor.html#required-methods) -------------------------------------------------------------------------------------------------------- [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/mod.rs.html#678) #### fn [value](https://docs.rs/arrow/latest/arrow/array/trait.ArrayAccessor.html#tymethod.value) (&self, index: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) ) -> Self::[Item](https://docs.rs/arrow/latest/arrow/array/trait.ArrayAccessor.html#associatedtype.Item "type arrow::array::ArrayAccessor::Item") Returns the element at index `i` ##### [§](https://docs.rs/arrow/latest/arrow/array/trait.ArrayAccessor.html#panics) Panics Panics if the value is outside the bounds of the array [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/mod.rs.html#683) #### unsafe fn [value\_unchecked](https://docs.rs/arrow/latest/arrow/array/trait.ArrayAccessor.html#tymethod.value_unchecked) (&self, index: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) ) -> Self::[Item](https://docs.rs/arrow/latest/arrow/array/trait.ArrayAccessor.html#associatedtype.Item "type arrow::array::ArrayAccessor::Item") Returns the element at index `i` ##### [§](https://docs.rs/arrow/latest/arrow/array/trait.ArrayAccessor.html#safety) Safety Caller is responsible for ensuring that the index is within the bounds of the array Implementors[§](https://docs.rs/arrow/latest/arrow/array/trait.ArrayAccessor.html#implementors) ------------------------------------------------------------------------------------------------ [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/boolean_array.rs.html#443) [§](https://docs.rs/arrow/latest/arrow/array/trait.ArrayAccessor.html#impl-ArrayAccessor-for-%26BooleanArray) ### impl [ArrayAccessor](https://docs.rs/arrow/latest/arrow/array/trait.ArrayAccessor.html "trait arrow::array::ArrayAccessor") for &[BooleanArray](https://docs.rs/arrow/latest/arrow/array/struct.BooleanArray.html "struct arrow::array::BooleanArray") [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/boolean_array.rs.html#444) [§](https://docs.rs/arrow/latest/arrow/array/trait.ArrayAccessor.html#associatedtype.Item-1) #### type [Item](https://docs.rs/arrow/latest/arrow/array/trait.ArrayAccessor.html#associatedtype.Item) = [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/fixed_size_list_array.rs.html#575) [§](https://docs.rs/arrow/latest/arrow/array/trait.ArrayAccessor.html#impl-ArrayAccessor-for-%26FixedSizeListArray) ### impl [ArrayAccessor](https://docs.rs/arrow/latest/arrow/array/trait.ArrayAccessor.html "trait arrow::array::ArrayAccessor") for &[FixedSizeListArray](https://docs.rs/arrow/latest/arrow/array/struct.FixedSizeListArray.html "struct arrow::array::FixedSizeListArray") [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/fixed_size_list_array.rs.html#576) [§](https://docs.rs/arrow/latest/arrow/array/trait.ArrayAccessor.html#associatedtype.Item-2) #### type [Item](https://docs.rs/arrow/latest/arrow/array/trait.ArrayAccessor.html#associatedtype.Item) = [Arc](https://doc.rust-lang.org/nightly/alloc/sync/struct.Arc.html "struct alloc::sync::Arc") [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/map_array.rs.html#444) [§](https://docs.rs/arrow/latest/arrow/array/trait.ArrayAccessor.html#impl-ArrayAccessor-for-%26MapArray) ### impl [ArrayAccessor](https://docs.rs/arrow/latest/arrow/array/trait.ArrayAccessor.html "trait arrow::array::ArrayAccessor") for &[MapArray](https://docs.rs/arrow/latest/arrow/array/struct.MapArray.html "struct arrow::array::MapArray") [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/map_array.rs.html#445) [§](https://docs.rs/arrow/latest/arrow/array/trait.ArrayAccessor.html#associatedtype.Item-3) #### type [Item](https://docs.rs/arrow/latest/arrow/array/trait.ArrayAccessor.html#associatedtype.Item) = [StructArray](https://docs.rs/arrow/latest/arrow/array/struct.StructArray.html "struct arrow::array::StructArray") [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/fixed_size_list_array.rs.html#553) [§](https://docs.rs/arrow/latest/arrow/array/trait.ArrayAccessor.html#impl-ArrayAccessor-for-FixedSizeListArray) ### impl [ArrayAccessor](https://docs.rs/arrow/latest/arrow/array/trait.ArrayAccessor.html "trait arrow::array::ArrayAccessor") for [FixedSizeListArray](https://docs.rs/arrow/latest/arrow/array/struct.FixedSizeListArray.html "struct arrow::array::FixedSizeListArray") [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/fixed_size_list_array.rs.html#554) [§](https://docs.rs/arrow/latest/arrow/array/trait.ArrayAccessor.html#associatedtype.Item-4) #### type [Item](https://docs.rs/arrow/latest/arrow/array/trait.ArrayAccessor.html#associatedtype.Item) = [Arc](https://doc.rust-lang.org/nightly/alloc/sync/struct.Arc.html "struct alloc::sync::Arc") [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/fixed_size_binary_array.rs.html#675) [§](https://docs.rs/arrow/latest/arrow/array/trait.ArrayAccessor.html#impl-ArrayAccessor-for-%26FixedSizeBinaryArray) ### impl<'a> [ArrayAccessor](https://docs.rs/arrow/latest/arrow/array/trait.ArrayAccessor.html "trait arrow::array::ArrayAccessor") for &'a [FixedSizeBinaryArray](https://docs.rs/arrow/latest/arrow/array/struct.FixedSizeBinaryArray.html "struct arrow::array::FixedSizeBinaryArray") [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/fixed_size_binary_array.rs.html#676) [§](https://docs.rs/arrow/latest/arrow/array/trait.ArrayAccessor.html#associatedtype.Item-5) #### type [Item](https://docs.rs/arrow/latest/arrow/array/trait.ArrayAccessor.html#associatedtype.Item) = &'a \[[u8](https://doc.rust-lang.org/nightly/std/primitive.u8.html)\ \] [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/dictionary_array.rs.html#940-945) [§](https://docs.rs/arrow/latest/arrow/array/trait.ArrayAccessor.html#impl-ArrayAccessor-for-TypedDictionaryArray%3C'a,+K,+V%3E) ### impl<'a, K, V> [ArrayAccessor](https://docs.rs/arrow/latest/arrow/array/trait.ArrayAccessor.html "trait arrow::array::ArrayAccessor") for [TypedDictionaryArray](https://docs.rs/arrow/latest/arrow/array/struct.TypedDictionaryArray.html "struct arrow::array::TypedDictionaryArray") <'a, K, V> where K: [ArrowDictionaryKeyType](https://docs.rs/arrow/latest/arrow/datatypes/trait.ArrowDictionaryKeyType.html "trait arrow::datatypes::ArrowDictionaryKeyType") , V: [Sync](https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html "trait core::marker::Sync") + [Send](https://doc.rust-lang.org/nightly/core/marker/trait.Send.html "trait core::marker::Send") , [&'a V](https://doc.rust-lang.org/nightly/std/primitive.reference.html) : [ArrayAccessor](https://docs.rs/arrow/latest/arrow/array/trait.ArrayAccessor.html "trait arrow::array::ArrayAccessor") , <[&'a V](https://doc.rust-lang.org/nightly/std/primitive.reference.html) as [ArrayAccessor](https://docs.rs/arrow/latest/arrow/array/trait.ArrayAccessor.html "trait arrow::array::ArrayAccessor") \>::[Item](https://docs.rs/arrow/latest/arrow/array/trait.ArrayAccessor.html#associatedtype.Item "type arrow::array::ArrayAccessor::Item") : [Default](https://doc.rust-lang.org/nightly/core/default/trait.Default.html "trait core::default::Default") , [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/dictionary_array.rs.html#947) [§](https://docs.rs/arrow/latest/arrow/array/trait.ArrayAccessor.html#associatedtype.Item-6) #### type [Item](https://docs.rs/arrow/latest/arrow/array/trait.ArrayAccessor.html#associatedtype.Item) = <[&'a V](https://doc.rust-lang.org/nightly/std/primitive.reference.html) as [ArrayAccessor](https://docs.rs/arrow/latest/arrow/array/trait.ArrayAccessor.html "trait arrow::array::ArrayAccessor") \>::[Item](https://docs.rs/arrow/latest/arrow/array/trait.ArrayAccessor.html#associatedtype.Item "type arrow::array::ArrayAccessor::Item") [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/run_array.rs.html#686-691) [§](https://docs.rs/arrow/latest/arrow/array/trait.ArrayAccessor.html#impl-ArrayAccessor-for-TypedRunArray%3C'a,+R,+V%3E) ### impl<'a, R, V> [ArrayAccessor](https://docs.rs/arrow/latest/arrow/array/trait.ArrayAccessor.html "trait arrow::array::ArrayAccessor") for [TypedRunArray](https://docs.rs/arrow/latest/arrow/array/struct.TypedRunArray.html "struct arrow::array::TypedRunArray") <'a, R, V> where R: [RunEndIndexType](https://docs.rs/arrow/latest/arrow/datatypes/trait.RunEndIndexType.html "trait arrow::datatypes::RunEndIndexType") , V: [Sync](https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html "trait core::marker::Sync") + [Send](https://doc.rust-lang.org/nightly/core/marker/trait.Send.html "trait core::marker::Send") , [&'a V](https://doc.rust-lang.org/nightly/std/primitive.reference.html) : [ArrayAccessor](https://docs.rs/arrow/latest/arrow/array/trait.ArrayAccessor.html "trait arrow::array::ArrayAccessor") , <[&'a V](https://doc.rust-lang.org/nightly/std/primitive.reference.html) as [ArrayAccessor](https://docs.rs/arrow/latest/arrow/array/trait.ArrayAccessor.html "trait arrow::array::ArrayAccessor") \>::[Item](https://docs.rs/arrow/latest/arrow/array/trait.ArrayAccessor.html#associatedtype.Item "type arrow::array::ArrayAccessor::Item") : [Default](https://doc.rust-lang.org/nightly/core/default/trait.Default.html "trait core::default::Default") , [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/run_array.rs.html#693) [§](https://docs.rs/arrow/latest/arrow/array/trait.ArrayAccessor.html#associatedtype.Item-7) #### type [Item](https://docs.rs/arrow/latest/arrow/array/trait.ArrayAccessor.html#associatedtype.Item) = <[&'a V](https://doc.rust-lang.org/nightly/std/primitive.reference.html) as [ArrayAccessor](https://docs.rs/arrow/latest/arrow/array/trait.ArrayAccessor.html "trait arrow::array::ArrayAccessor") \>::[Item](https://docs.rs/arrow/latest/arrow/array/trait.ArrayAccessor.html#associatedtype.Item "type arrow::array::ArrayAccessor::Item") [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/byte_array.rs.html#539) [§](https://docs.rs/arrow/latest/arrow/array/trait.ArrayAccessor.html#impl-ArrayAccessor-for-%26GenericByteArray%3CT%3E) ### impl<'a, T> [ArrayAccessor](https://docs.rs/arrow/latest/arrow/array/trait.ArrayAccessor.html "trait arrow::array::ArrayAccessor") for &'a [GenericByteArray](https://docs.rs/arrow/latest/arrow/array/struct.GenericByteArray.html "struct arrow::array::GenericByteArray") where T: [ByteArrayType](https://docs.rs/arrow/latest/arrow/datatypes/trait.ByteArrayType.html "trait arrow::datatypes::ByteArrayType") , [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/byte_array.rs.html#540) [§](https://docs.rs/arrow/latest/arrow/array/trait.ArrayAccessor.html#associatedtype.Item-8) #### type [Item](https://docs.rs/arrow/latest/arrow/array/trait.ArrayAccessor.html#associatedtype.Item) = &'a ::[Native](https://docs.rs/arrow/latest/arrow/datatypes/trait.ByteArrayType.html#associatedtype.Native "type arrow::datatypes::ByteArrayType::Native") [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/byte_view_array.rs.html#913) [§](https://docs.rs/arrow/latest/arrow/array/trait.ArrayAccessor.html#impl-ArrayAccessor-for-%26GenericByteViewArray%3CT%3E) ### impl<'a, T> [ArrayAccessor](https://docs.rs/arrow/latest/arrow/array/trait.ArrayAccessor.html "trait arrow::array::ArrayAccessor") for &'a [GenericByteViewArray](https://docs.rs/arrow/latest/arrow/array/struct.GenericByteViewArray.html "struct arrow::array::GenericByteViewArray") where T: [ByteViewType](https://docs.rs/arrow/latest/arrow/datatypes/trait.ByteViewType.html "trait arrow::datatypes::ByteViewType") + ?[Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/byte_view_array.rs.html#914) [§](https://docs.rs/arrow/latest/arrow/array/trait.ArrayAccessor.html#associatedtype.Item-9) #### type [Item](https://docs.rs/arrow/latest/arrow/array/trait.ArrayAccessor.html#associatedtype.Item) = &'a ::[Native](https://docs.rs/arrow/latest/arrow/datatypes/trait.ByteViewType.html#associatedtype.Native "type arrow::datatypes::ByteViewType::Native") [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/list_array.rs.html#647) [§](https://docs.rs/arrow/latest/arrow/array/trait.ArrayAccessor.html#impl-ArrayAccessor-for-%26GenericListArray%3COffsetSize%3E) ### impl [ArrayAccessor](https://docs.rs/arrow/latest/arrow/array/trait.ArrayAccessor.html "trait arrow::array::ArrayAccessor") for &[GenericListArray](https://docs.rs/arrow/latest/arrow/array/struct.GenericListArray.html "struct arrow::array::GenericListArray") where OffsetSize: [OffsetSizeTrait](https://docs.rs/arrow/latest/arrow/array/trait.OffsetSizeTrait.html "trait arrow::array::OffsetSizeTrait") , [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/list_array.rs.html#648) [§](https://docs.rs/arrow/latest/arrow/array/trait.ArrayAccessor.html#associatedtype.Item-10) #### type [Item](https://docs.rs/arrow/latest/arrow/array/trait.ArrayAccessor.html#associatedtype.Item) = [Arc](https://doc.rust-lang.org/nightly/alloc/sync/struct.Arc.html "struct alloc::sync::Arc") [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/list_view_array.rs.html#406) [§](https://docs.rs/arrow/latest/arrow/array/trait.ArrayAccessor.html#impl-ArrayAccessor-for-%26GenericListViewArray%3COffsetSize%3E) ### impl [ArrayAccessor](https://docs.rs/arrow/latest/arrow/array/trait.ArrayAccessor.html "trait arrow::array::ArrayAccessor") for &[GenericListViewArray](https://docs.rs/arrow/latest/arrow/array/struct.GenericListViewArray.html "struct arrow::array::GenericListViewArray") where OffsetSize: [OffsetSizeTrait](https://docs.rs/arrow/latest/arrow/array/trait.OffsetSizeTrait.html "trait arrow::array::OffsetSizeTrait") , [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/list_view_array.rs.html#407) [§](https://docs.rs/arrow/latest/arrow/array/trait.ArrayAccessor.html#associatedtype.Item-11) #### type [Item](https://docs.rs/arrow/latest/arrow/array/trait.ArrayAccessor.html#associatedtype.Item) = [Arc](https://doc.rust-lang.org/nightly/alloc/sync/struct.Arc.html "struct alloc::sync::Arc") [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/primitive_array.rs.html#1259) [§](https://docs.rs/arrow/latest/arrow/array/trait.ArrayAccessor.html#impl-ArrayAccessor-for-%26PrimitiveArray%3CT%3E) ### impl [ArrayAccessor](https://docs.rs/arrow/latest/arrow/array/trait.ArrayAccessor.html "trait arrow::array::ArrayAccessor") for &[PrimitiveArray](https://docs.rs/arrow/latest/arrow/array/struct.PrimitiveArray.html "struct arrow::array::PrimitiveArray") where T: [ArrowPrimitiveType](https://docs.rs/arrow/latest/arrow/array/trait.ArrowPrimitiveType.html "trait arrow::array::ArrowPrimitiveType") , [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/primitive_array.rs.html#1260) [§](https://docs.rs/arrow/latest/arrow/array/trait.ArrayAccessor.html#associatedtype.Item-12) #### type [Item](https://docs.rs/arrow/latest/arrow/array/trait.ArrayAccessor.html#associatedtype.Item) = ::[Native](https://docs.rs/arrow/latest/arrow/array/trait.ArrowPrimitiveType.html#associatedtype.Native "type arrow::array::ArrowPrimitiveType::Native") --- # arrow_array - Rust [Docs.rs](https://docs.rs/) * [arrow-array-58.1.0](https://docs.rs/arrow-array/58.1.0/arrow_array/# "Array abstractions for Apache Arrow") * arrow-array 58.1.0 * [Docs.rs crate page](https://docs.rs/crate/arrow-array/58.1.0 "See arrow-array in docs.rs") * [Apache-2.0](https://spdx.org/licenses/Apache-2.0) * Links * [Homepage](https://github.com/apache/arrow-rs) * [Repository](https://github.com/apache/arrow-rs) * [crates.io](https://crates.io/crates/arrow-array "See arrow-array in crates.io") * [Source](https://docs.rs/crate/arrow-array/58.1.0/source/ "Browse source of arrow-array-58.1.0") * Owners * [andygrove](https://crates.io/users/andygrove) * [xhochy](https://crates.io/users/xhochy) * [nevi-me](https://crates.io/users/nevi-me) * [alamb](https://crates.io/users/alamb) * [tustvold](https://crates.io/users/tustvold) * Dependencies * * [arrow-buffer ^58.1.0 _normal_](https://docs.rs/arrow-buffer/^58.1.0/) * [arrow-data ^58.1.0 _normal_](https://docs.rs/arrow-data/^58.1.0/) * [arrow-schema ^58.1.0 _normal_](https://docs.rs/arrow-schema/^58.1.0/) * [chrono ^0.4.40 _normal_](https://docs.rs/chrono/^0.4.40/) * [chrono-tz ^0.10 _normal_ _optional_](https://docs.rs/chrono-tz/^0.10/) * [futures ^0.3 _normal_ _optional_](https://docs.rs/futures/^0.3/) * [half ^2.1 _normal_](https://docs.rs/half/^2.1/) * [hashbrown ^0.16.0 _normal_](https://docs.rs/hashbrown/^0.16.0/) * [num-complex ^0.4.6 _normal_](https://docs.rs/num-complex/^0.4.6/) * [num-integer ^0.1.46 _normal_](https://docs.rs/num-integer/^0.1.46/) * [num-traits ^0.2.19 _normal_](https://docs.rs/num-traits/^0.2.19/) * [criterion ^0.8.0 _dev_](https://docs.rs/criterion/^0.8.0/) * [rand ^0.9 _dev_](https://docs.rs/rand/^0.9/) * [ahash ^0.8 _normal_](https://docs.rs/ahash/^0.8/) * [ahash ^0.8 _normal_](https://docs.rs/ahash/^0.8/) * Versions * [**100%** of the crate is documented](https://docs.rs/crate/arrow-array/58.1.0) * [Platform](https://docs.rs/arrow-array/58.1.0/arrow_array/#) * [aarch64-apple-darwin](https://docs.rs/crate/arrow-array/58.1.0/target-redirect/aarch64-apple-darwin/arrow_array/) * [aarch64-unknown-linux-gnu](https://docs.rs/crate/arrow-array/58.1.0/target-redirect/aarch64-unknown-linux-gnu/arrow_array/) * [i686-pc-windows-msvc](https://docs.rs/crate/arrow-array/58.1.0/target-redirect/i686-pc-windows-msvc/arrow_array/) * [x86\_64-pc-windows-msvc](https://docs.rs/crate/arrow-array/58.1.0/target-redirect/x86_64-pc-windows-msvc/arrow_array/) * [x86\_64-unknown-linux-gnu](https://docs.rs/crate/arrow-array/58.1.0/target-redirect/arrow_array/) * [Feature flags](https://docs.rs/crate/arrow-array/58.1.0/features "Browse available feature flags of arrow-array-58.1.0") * [docs.rs](https://docs.rs/arrow-array/58.1.0/arrow_array/#) * [About docs.rs](https://docs.rs/about) * [Badges](https://docs.rs/about/badges) * [Builds](https://docs.rs/about/builds) * [Metadata](https://docs.rs/about/metadata) * [Shorthand URLs](https://docs.rs/about/redirections) * [Download](https://docs.rs/about/download) * [Rustdoc JSON](https://docs.rs/about/rustdoc-json) * [Build queue](https://docs.rs/releases/queue) * [Privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#docs.rs) * [Rust](https://docs.rs/arrow-array/58.1.0/arrow_array/#) * [Rust website](https://www.rust-lang.org/) * [The Book](https://doc.rust-lang.org/book/) * [Standard Library API Reference](https://doc.rust-lang.org/std/) * [Rust by Example](https://doc.rust-lang.org/rust-by-example/) * [The Cargo Guide](https://doc.rust-lang.org/cargo/guide/) * [Clippy Documentation](https://doc.rust-lang.org/nightly/clippy) [Skip to main content](https://docs.rs/arrow-array/58.1.0/arrow_array/#main-content) [Crate arrow\_array](https://docs.rs/arrow-array/58.1.0/arrow_array/#) ----------------------------------------------------------------------- Crate arrow\_array Copy item path ================================= [Source](https://docs.rs/arrow-array/58.1.0/src/arrow_array/lib.rs.html#18-297) Expand description The central type in Apache Arrow are arrays, which are a known-length sequence of values all having the same type. This crate provides concrete implementations of each type, as well as an [`Array`](https://docs.rs/arrow-array/58.1.0/arrow_array/array/trait.Array.html "trait arrow_array::array::Array") trait that can be used for type-erasure. [§](https://docs.rs/arrow-array/58.1.0/arrow_array/#building-an-array) Building an Array ---------------------------------------------------------------------------------------- Most [`Array`](https://docs.rs/arrow-array/58.1.0/arrow_array/array/trait.Array.html "trait arrow_array::array::Array") implementations can be constructed directly from iterators or [`Vec`](https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html "struct alloc::vec::Vec") Int32Array::from(vec![1, 2]); Int32Array::from(vec![Some(1), None]); Int32Array::from_iter([1, 2, 3, 4]); Int32Array::from_iter([Some(1), Some(2), None, Some(4)]); StringArray::from(vec!["foo", "bar"]); StringArray::from(vec![Some("foo"), None]); StringArray::from_iter([Some("foo"), None]); StringArray::from_iter_values(["foo", "bar"]); ListArray::from_iter_primitive::([\ Some(vec![Some(1), None, Some(3)]),\ None,\ Some(vec![])\ ]); Additionally [`ArrayBuilder`](https://docs.rs/arrow-array/58.1.0/arrow_array/builder/trait.ArrayBuilder.html "trait arrow_array::builder::ArrayBuilder") implementations can be used to construct arrays with a push-based interface // Create a new builder with a capacity of 100 let mut builder = Int16Array::builder(100); // Append a single primitive value builder.append_value(1); // Append a null value builder.append_null(); // Append a slice of primitive values builder.append_slice(&[2, 3, 4]); // Build the array let array = builder.finish(); assert_eq!(5, array.len()); assert_eq!(2, array.value(2)); assert_eq!(&array.values()[3..5], &[3, 4]) [§](https://docs.rs/arrow-array/58.1.0/arrow_array/#low-level-api) Low-level API -------------------------------------------------------------------------------- Internally, arrays consist of one or more shared memory regions backed by a [`Buffer`](https://docs.rs/arrow-buffer/58.1.0/x86_64-unknown-linux-gnu/arrow_buffer/buffer/immutable/struct.Buffer.html "struct arrow_buffer::buffer::immutable::Buffer") , the number and meaning of which depend on the array’s data type, as documented in the [Arrow specification](https://arrow.apache.org/docs/format/Columnar.html) . For example, the type [`Int16Array`](https://docs.rs/arrow-array/58.1.0/arrow_array/array/type.Int16Array.html "type arrow_array::array::Int16Array") represents an array of 16-bit integers and consists of: * An optional [`NullBuffer`](https://docs.rs/arrow-buffer/58.1.0/x86_64-unknown-linux-gnu/arrow_buffer/buffer/null/struct.NullBuffer.html "struct arrow_buffer::buffer::null::NullBuffer") identifying any null values * A contiguous [`ScalarBuffer`](https://docs.rs/arrow-buffer/58.1.0/x86_64-unknown-linux-gnu/arrow_buffer/buffer/scalar/struct.ScalarBuffer.html "struct arrow_buffer::buffer::scalar::ScalarBuffer") of values Similarly, the type [`StringArray`](https://docs.rs/arrow-array/58.1.0/arrow_array/array/type.StringArray.html "type arrow_array::array::StringArray") represents an array of UTF-8 strings and consists of: * An optional [`NullBuffer`](https://docs.rs/arrow-buffer/58.1.0/x86_64-unknown-linux-gnu/arrow_buffer/buffer/null/struct.NullBuffer.html "struct arrow_buffer::buffer::null::NullBuffer") identifying any null values * An offsets [`OffsetBuffer`](https://docs.rs/arrow-buffer/58.1.0/x86_64-unknown-linux-gnu/arrow_buffer/buffer/offset/struct.OffsetBuffer.html "struct arrow_buffer::buffer::offset::OffsetBuffer") identifying valid UTF-8 sequences within the values buffer * A values [`Buffer`](https://docs.rs/arrow-buffer/58.1.0/x86_64-unknown-linux-gnu/arrow_buffer/buffer/immutable/struct.Buffer.html "struct arrow_buffer::buffer::immutable::Buffer") of UTF-8 encoded string data Array constructors such as [`PrimitiveArray::try_new`](https://docs.rs/arrow-array/58.1.0/arrow_array/array/struct.PrimitiveArray.html#method.try_new "associated function arrow_array::array::PrimitiveArray::try_new") provide the ability to cheaply construct an array from these parts, with functions such as [`PrimitiveArray::into_parts`](https://docs.rs/arrow-array/58.1.0/arrow_array/array/struct.PrimitiveArray.html#method.into_parts "method arrow_array::array::PrimitiveArray::into_parts") providing the reverse operation. // Create a Int32Array from Vec without copying let array = Int32Array::new(vec![1, 2, 3].into(), None); assert_eq!(array.values(), &[1, 2, 3]); assert_eq!(array.null_count(), 0); // Create a StringArray from parts let offsets = OffsetBuffer::new(vec![0, 5, 10].into()); let array = StringArray::new(offsets, b"helloworld".into(), None); let values: Vec<_> = array.iter().map(|x| x.unwrap()).collect(); assert_eq!(values, &["hello", "world"]); As [`Buffer`](https://docs.rs/arrow-buffer/58.1.0/x86_64-unknown-linux-gnu/arrow_buffer/buffer/immutable/struct.Buffer.html "struct arrow_buffer::buffer::immutable::Buffer") , and its derivatives, can be created from [`Vec`](https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html "struct alloc::vec::Vec") without copying, this provides an efficient way to not only interoperate with other Rust code, but also implement kernels optimised for the arrow data layout - e.g. by handling buffers instead of values. [§](https://docs.rs/arrow-array/58.1.0/arrow_array/#zero-copy-slicing) Zero-Copy Slicing ---------------------------------------------------------------------------------------- Given an [`Array`](https://docs.rs/arrow-array/58.1.0/arrow_array/array/trait.Array.html "trait arrow_array::array::Array") of arbitrary length, it is possible to create an owned slice of this data. Internally this just increments some ref-counts, and so is incredibly cheap let array = Int32Array::from_iter([1, 2, 3]); // Slice with offset 1 and length 2 let sliced = array.slice(1, 2); assert_eq!(sliced.values(), &[2, 3]); [§](https://docs.rs/arrow-array/58.1.0/arrow_array/#downcasting-an-array) Downcasting an Array ---------------------------------------------------------------------------------------------- Arrays are often passed around as a dynamically typed [`&dyn Array`](https://docs.rs/arrow-array/58.1.0/arrow_array/array/trait.Array.html "trait arrow_array::array::Array") or [`ArrayRef`](https://docs.rs/arrow-array/58.1.0/arrow_array/array/type.ArrayRef.html "type arrow_array::array::ArrayRef") . For example, [`RecordBatch`](https://docs.rs/arrow-array/58.1.0/arrow_array/struct.RecordBatch.html "struct arrow_array::RecordBatch") stores columns as [`ArrayRef`](https://docs.rs/arrow-array/58.1.0/arrow_array/array/type.ArrayRef.html "type arrow_array::array::ArrayRef") . Whilst these arrays can be passed directly to the [`compute`](https://docs.rs/arrow/latest/arrow/compute/index.html) , [`csv`](https://docs.rs/arrow/latest/arrow/csv/index.html) , [`json`](https://docs.rs/arrow/latest/arrow/json/index.html) , etc… APIs, it is often the case that you wish to interact with the concrete arrays directly. This requires downcasting to the concrete type of the array: // Safely downcast an `Array` to an `Int32Array` and compute the sum // using native i32 values fn sum_int32(array: &dyn Array) -> i32 { let integers: &Int32Array = array.as_any().downcast_ref().unwrap(); integers.iter().map(|val| val.unwrap_or_default()).sum() } // Safely downcasts the array to a `Float32Array` and returns a &[f32] view of the data // Note: the values for positions corresponding to nulls will be arbitrary (but still valid f32) fn as_f32_slice(array: &dyn Array) -> &[f32] { array.as_any().downcast_ref::().unwrap().values() } The [`cast::AsArray`](https://docs.rs/arrow-array/58.1.0/arrow_array/cast/trait.AsArray.html "trait arrow_array::cast::AsArray") extension trait can make this more ergonomic fn as_f32_slice(array: &dyn Array) -> &[f32] { array.as_primitive::().values() } [§](https://docs.rs/arrow-array/58.1.0/arrow_array/#alternatives-to-chunkedarray-support) Alternatives to ChunkedArray Support ------------------------------------------------------------------------------------------------------------------------------ The Rust implementation does not provide the ChunkedArray abstraction implemented by the Python and C++ Arrow implementations. The recommended alternative is to use one of the following: * `Vec` a simple, eager version of a `ChunkedArray` * `impl Iterator` a lazy version of a `ChunkedArray` * `impl Stream` a lazy async version of a `ChunkedArray` Similar patterns can be applied at the `RecordBatch` level. For example, [DataFusion](https://github.com/apache/arrow-datafusion) makes extensive use of [RecordBatchStream](https://docs.rs/datafusion/latest/datafusion/execution/trait.RecordBatchStream.html) . This approach integrates well into the Rust ecosystem, simplifies the implementation and encourages the use of performant lazy and async patterns. use std::sync::Arc; use arrow_array::{ArrayRef, Float32Array, RecordBatch, StringArray}; use arrow_array::cast::AsArray; use arrow_array::types::Float32Type; use arrow_schema::DataType; let batches = [\ RecordBatch::try_from_iter(vec![\ ("label", Arc::new(StringArray::from(vec!["A", "B", "C"])) as ArrayRef),\ ("value", Arc::new(Float32Array::from(vec![0.1, 0.2, 0.3])) as ArrayRef),\ ]).unwrap(),\ RecordBatch::try_from_iter(vec![\ ("label", Arc::new(StringArray::from(vec!["D", "E"])) as ArrayRef),\ ("value", Arc::new(Float32Array::from(vec![0.4, 0.5])) as ArrayRef),\ ]).unwrap(),\ ]; let labels: Vec<&str> = batches .iter() .flat_map(|batch| batch.column(0).as_string::()) .map(Option::unwrap) .collect(); let values: Vec = batches .iter() .flat_map(|batch| batch.column(1).as_primitive::().values()) .copied() .collect(); assert_eq!(labels, ["A", "B", "C", "D", "E"]); assert_eq!(values, [0.1, 0.2, 0.3, 0.4, 0.5]); Re-exports[§](https://docs.rs/arrow-array/58.1.0/arrow_array/#reexports) ------------------------------------------------------------------------- `pub use [array](https://docs.rs/arrow-array/58.1.0/arrow_array/array/index.html "mod arrow_array::array") ::*;` Modules[§](https://docs.rs/arrow-array/58.1.0/arrow_array/#modules) -------------------------------------------------------------------- [array](https://docs.rs/arrow-array/58.1.0/arrow_array/array/index.html "mod arrow_array::array") The concrete array definitions [builder](https://docs.rs/arrow-array/58.1.0/arrow_array/builder/index.html "mod arrow_array::builder") Defines push-based APIs for constructing arrays [cast](https://docs.rs/arrow-array/58.1.0/arrow_array/cast/index.html "mod arrow_array::cast") Defines helper functions for downcasting [`dyn Array`](https://docs.rs/arrow-array/58.1.0/arrow_array/array/trait.Array.html "trait arrow_array::array::Array") to concrete types [ffi](https://docs.rs/arrow-array/58.1.0/arrow_array/ffi/index.html "mod arrow_array::ffi") `ffi` Contains declarations to bind to the [C Data Interface](https://arrow.apache.org/docs/format/CDataInterface.html) . [ffi\_stream](https://docs.rs/arrow-array/58.1.0/arrow_array/ffi_stream/index.html "mod arrow_array::ffi_stream") `ffi` Contains declarations to bind to the [C Stream Interface](https://arrow.apache.org/docs/format/CStreamInterface.html) . [iterator](https://docs.rs/arrow-array/58.1.0/arrow_array/iterator/index.html "mod arrow_array::iterator") Idiomatic iterators for [`Array`](https://docs.rs/arrow-array/58.1.0/arrow_array/array/trait.Array.html "trait arrow_array::array::Array") [nonblocking](https://docs.rs/arrow-array/58.1.0/arrow_array/nonblocking/index.html "mod arrow_array::nonblocking") `async` Trait definitions specific to using Arrow with async. [run\_iterator](https://docs.rs/arrow-array/58.1.0/arrow_array/run_iterator/index.html "mod arrow_array::run_iterator") Idiomatic iterator for [`RunArray`](https://docs.rs/arrow-array/58.1.0/arrow_array/array/struct.RunArray.html "struct arrow_array::array::RunArray") [temporal\_conversions](https://docs.rs/arrow-array/58.1.0/arrow_array/temporal_conversions/index.html "mod arrow_array::temporal_conversions") Conversion methods for dates and times. [timezone](https://docs.rs/arrow-array/58.1.0/arrow_array/timezone/index.html "mod arrow_array::timezone") Timezone for timestamp arrays [types](https://docs.rs/arrow-array/58.1.0/arrow_array/types/index.html "mod arrow_array::types") Zero-sized types used to parameterize generic array implementations Macros[§](https://docs.rs/arrow-array/58.1.0/arrow_array/#macros) ------------------------------------------------------------------ [create\_array](https://docs.rs/arrow-array/58.1.0/arrow_array/macro.create_array.html "macro arrow_array::create_array") Creates an array from a literal slice of values, suitable for rapid testing and development. [downcast\_dictionary\_array](https://docs.rs/arrow-array/58.1.0/arrow_array/macro.downcast_dictionary_array.html "macro arrow_array::downcast_dictionary_array") Downcast an [`Array`](https://docs.rs/arrow-array/58.1.0/arrow_array/array/trait.Array.html "trait arrow_array::array::Array") to a [`DictionaryArray`](https://docs.rs/arrow-array/58.1.0/arrow_array/array/struct.DictionaryArray.html "struct arrow_array::array::DictionaryArray") based on its [`DataType`](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/arrow_schema/datatype/enum.DataType.html "enum arrow_schema::datatype::DataType") , accepts a number of subsequent patterns to match the data type [downcast\_integer](https://docs.rs/arrow-array/58.1.0/arrow_array/macro.downcast_integer.html "macro arrow_array::downcast_integer") Given one or more expressions evaluating to an integer [`DataType`](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/arrow_schema/datatype/enum.DataType.html "enum arrow_schema::datatype::DataType") invokes the provided macro `m` with the corresponding integer [`ArrowPrimitiveType`](https://docs.rs/arrow-array/58.1.0/arrow_array/types/trait.ArrowPrimitiveType.html "trait arrow_array::types::ArrowPrimitiveType") , followed by any additional arguments [downcast\_integer\_array](https://docs.rs/arrow-array/58.1.0/arrow_array/macro.downcast_integer_array.html "macro arrow_array::downcast_integer_array") Given one or more expressions evaluating to an integer [`PrimitiveArray`](https://docs.rs/arrow-array/58.1.0/arrow_array/array/struct.PrimitiveArray.html "struct arrow_array::array::PrimitiveArray") invokes the provided macro with the corresponding array, along with match statements for any non integer array types [downcast\_primitive](https://docs.rs/arrow-array/58.1.0/arrow_array/macro.downcast_primitive.html "macro arrow_array::downcast_primitive") Given one or more expressions evaluating to primitive [`DataType`](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/arrow_schema/datatype/enum.DataType.html "enum arrow_schema::datatype::DataType") invokes the provided macro `m` with the corresponding [`ArrowPrimitiveType`](https://docs.rs/arrow-array/58.1.0/arrow_array/types/trait.ArrowPrimitiveType.html "trait arrow_array::types::ArrowPrimitiveType") , followed by any additional arguments [downcast\_primitive\_array](https://docs.rs/arrow-array/58.1.0/arrow_array/macro.downcast_primitive_array.html "macro arrow_array::downcast_primitive_array") Downcast an [`Array`](https://docs.rs/arrow-array/58.1.0/arrow_array/array/trait.Array.html "trait arrow_array::array::Array") to a [`PrimitiveArray`](https://docs.rs/arrow-array/58.1.0/arrow_array/array/struct.PrimitiveArray.html "struct arrow_array::array::PrimitiveArray") based on its [`DataType`](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/arrow_schema/datatype/enum.DataType.html "enum arrow_schema::datatype::DataType") accepts a number of subsequent patterns to match the data type [downcast\_run\_array](https://docs.rs/arrow-array/58.1.0/arrow_array/macro.downcast_run_array.html "macro arrow_array::downcast_run_array") Downcast an [`Array`](https://docs.rs/arrow-array/58.1.0/arrow_array/array/trait.Array.html "trait arrow_array::array::Array") to a [`RunArray`](https://docs.rs/arrow-array/58.1.0/arrow_array/array/struct.RunArray.html "struct arrow_array::array::RunArray") based on its [`DataType`](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/arrow_schema/datatype/enum.DataType.html "enum arrow_schema::datatype::DataType") , accepts a number of subsequent patterns to match the data type [downcast\_run\_end\_index](https://docs.rs/arrow-array/58.1.0/arrow_array/macro.downcast_run_end_index.html "macro arrow_array::downcast_run_end_index") Given one or more expressions evaluating to an integer [`DataType`](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/arrow_schema/datatype/enum.DataType.html "enum arrow_schema::datatype::DataType") invokes the provided macro `m` with the corresponding integer [`RunEndIndexType`](https://docs.rs/arrow-array/58.1.0/arrow_array/types/trait.RunEndIndexType.html "trait arrow_array::types::RunEndIndexType") , followed by any additional arguments [downcast\_temporal](https://docs.rs/arrow-array/58.1.0/arrow_array/macro.downcast_temporal.html "macro arrow_array::downcast_temporal") Given one or more expressions evaluating to primitive [`DataType`](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/arrow_schema/datatype/enum.DataType.html "enum arrow_schema::datatype::DataType") invokes the provided macro `m` with the corresponding [`ArrowPrimitiveType`](https://docs.rs/arrow-array/58.1.0/arrow_array/types/trait.ArrowPrimitiveType.html "trait arrow_array::types::ArrowPrimitiveType") , followed by any additional arguments [downcast\_temporal\_array](https://docs.rs/arrow-array/58.1.0/arrow_array/macro.downcast_temporal_array.html "macro arrow_array::downcast_temporal_array") Downcast an [`Array`](https://docs.rs/arrow-array/58.1.0/arrow_array/array/trait.Array.html "trait arrow_array::array::Array") to a temporal [`PrimitiveArray`](https://docs.rs/arrow-array/58.1.0/arrow_array/array/struct.PrimitiveArray.html "struct arrow_array::array::PrimitiveArray") based on its [`DataType`](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/arrow_schema/datatype/enum.DataType.html "enum arrow_schema::datatype::DataType") accepts a number of subsequent patterns to match the data type [record\_batch](https://docs.rs/arrow-array/58.1.0/arrow_array/macro.record_batch.html "macro arrow_array::record_batch") Creates a record batch from literal slice of values, suitable for rapid testing and development. Structs[§](https://docs.rs/arrow-array/58.1.0/arrow_array/#structs) -------------------------------------------------------------------- [RecordBatch](https://docs.rs/arrow-array/58.1.0/arrow_array/struct.RecordBatch.html "struct arrow_array::RecordBatch") A two-dimensional batch of column-oriented data with a defined [schema](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/arrow_schema/schema/struct.Schema.html "struct arrow_schema::schema::Schema") . [RecordBatchIterator](https://docs.rs/arrow-array/58.1.0/arrow_array/struct.RecordBatchIterator.html "struct arrow_array::RecordBatchIterator") Generic implementation of [RecordBatchReader](https://docs.rs/arrow-array/58.1.0/arrow_array/trait.RecordBatchReader.html "trait arrow_array::RecordBatchReader") that wraps an iterator. [RecordBatchOptions](https://docs.rs/arrow-array/58.1.0/arrow_array/struct.RecordBatchOptions.html "struct arrow_array::RecordBatchOptions") Options that control the behaviour used when creating a [`RecordBatch`](https://docs.rs/arrow-array/58.1.0/arrow_array/struct.RecordBatch.html "struct arrow_array::RecordBatch") . [Scalar](https://docs.rs/arrow-array/58.1.0/arrow_array/struct.Scalar.html "struct arrow_array::Scalar") A wrapper around a single value [`Array`](https://docs.rs/arrow-array/58.1.0/arrow_array/array/trait.Array.html "trait arrow_array::array::Array") that implements [`Datum`](https://docs.rs/arrow-array/58.1.0/arrow_array/trait.Datum.html "trait arrow_array::Datum") and indicates [compute](https://docs.rs/arrow/latest/arrow/compute/index.html) kernels should treat this array as a scalar value (a single value). Traits[§](https://docs.rs/arrow-array/58.1.0/arrow_array/#traits) ------------------------------------------------------------------ [ArrowNativeTypeOp](https://docs.rs/arrow-array/58.1.0/arrow_array/trait.ArrowNativeTypeOp.html "trait arrow_array::ArrowNativeTypeOp") Trait for [`ArrowNativeType`](https://docs.rs/arrow-buffer/58.1.0/x86_64-unknown-linux-gnu/arrow_buffer/native/trait.ArrowNativeType.html "trait arrow_buffer::native::ArrowNativeType") that adds checked and unchecked arithmetic operations, and totally ordered comparison operations [ArrowNumericType](https://docs.rs/arrow-array/58.1.0/arrow_array/trait.ArrowNumericType.html "trait arrow_array::ArrowNumericType") A subtype of primitive type that represents numeric values. [Datum](https://docs.rs/arrow-array/58.1.0/arrow_array/trait.Datum.html "trait arrow_array::Datum") A possibly [`Scalar`](https://docs.rs/arrow-array/58.1.0/arrow_array/struct.Scalar.html "struct arrow_array::Scalar") [`Array`](https://docs.rs/arrow-array/58.1.0/arrow_array/array/trait.Array.html "trait arrow_array::array::Array") [RecordBatchReader](https://docs.rs/arrow-array/58.1.0/arrow_array/trait.RecordBatchReader.html "trait arrow_array::RecordBatchReader") Trait for types that can read `RecordBatch`’s. [RecordBatchWriter](https://docs.rs/arrow-array/58.1.0/arrow_array/trait.RecordBatchWriter.html "trait arrow_array::RecordBatchWriter") Trait for types that can write `RecordBatch`’s. --- # DataType in arrow::datatypes - Rust [Docs.rs](https://docs.rs/) * [arrow-58.1.0](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html# "Rust implementation of Apache Arrow") * arrow 58.1.0 * [Permalink](https://docs.rs/arrow/58.1.0/arrow/datatypes/enum.DataType.html "Get a link to this specific version") * [Docs.rs crate page](https://docs.rs/crate/arrow/latest "See arrow in docs.rs") * [Apache-2.0](https://spdx.org/licenses/Apache-2.0) * Links * [Homepage](https://github.com/apache/arrow-rs) * [Repository](https://github.com/apache/arrow-rs) * [crates.io](https://crates.io/crates/arrow "See arrow in crates.io") * [Source](https://docs.rs/crate/arrow/latest/source/ "Browse source of arrow-58.1.0") * Owners * [andygrove](https://crates.io/users/andygrove) * [kou](https://crates.io/users/kou) * [kszucs](https://crates.io/users/kszucs) * [xhochy](https://crates.io/users/xhochy) * [nevi-me](https://crates.io/users/nevi-me) * [alamb](https://crates.io/users/alamb) * [tustvold](https://crates.io/users/tustvold) * Dependencies * * [arrow-arith ^58.1.0 _normal_](https://docs.rs/arrow-arith/^58.1.0/) * [arrow-array ^58.1.0 _normal_](https://docs.rs/arrow-array/^58.1.0/) * [arrow-buffer ^58.1.0 _normal_](https://docs.rs/arrow-buffer/^58.1.0/) * [arrow-cast ^58.1.0 _normal_](https://docs.rs/arrow-cast/^58.1.0/) * [arrow-csv ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-csv/^58.1.0/) * [arrow-data ^58.1.0 _normal_](https://docs.rs/arrow-data/^58.1.0/) * [arrow-ipc ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-ipc/^58.1.0/) * [arrow-json ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-json/^58.1.0/) * [arrow-ord ^58.1.0 _normal_](https://docs.rs/arrow-ord/^58.1.0/) * [arrow-pyarrow ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-pyarrow/^58.1.0/) * [arrow-row ^58.1.0 _normal_](https://docs.rs/arrow-row/^58.1.0/) * [arrow-schema ^58.1.0 _normal_](https://docs.rs/arrow-schema/^58.1.0/) * [arrow-select ^58.1.0 _normal_](https://docs.rs/arrow-select/^58.1.0/) * [arrow-string ^58.1.0 _normal_](https://docs.rs/arrow-string/^58.1.0/) * [half ^2.1 _normal_ _optional_](https://docs.rs/half/^2.1/) * [rand ^0.9 _normal_ _optional_](https://docs.rs/rand/^0.9/) * [bytes ^1.9 _dev_](https://docs.rs/bytes/^1.9/) * [chrono ^0.4.40 _dev_](https://docs.rs/chrono/^0.4.40/) * [criterion ^0.8.0 _dev_](https://docs.rs/criterion/^0.8.0/) * [half ^2.1 _dev_](https://docs.rs/half/^2.1/) * [memmap2 ^0.9.3 _dev_](https://docs.rs/memmap2/^0.9.3/) * [rand ^0.9 _dev_](https://docs.rs/rand/^0.9/) * [serde ^1.0 _dev_](https://docs.rs/serde/^1.0/) * Versions * [**100%** of the crate is documented](https://docs.rs/crate/arrow/latest) * [Platform](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#) * [x86\_64-unknown-linux-gnu](https://docs.rs/crate/arrow/latest/target-redirect/arrow/datatypes/enum.DataType.html) * [Feature flags](https://docs.rs/crate/arrow/latest/features "Browse available feature flags of arrow-58.1.0") * [docs.rs](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#) * [About docs.rs](https://docs.rs/about) * [Badges](https://docs.rs/about/badges) * [Builds](https://docs.rs/about/builds) * [Metadata](https://docs.rs/about/metadata) * [Shorthand URLs](https://docs.rs/about/redirections) * [Download](https://docs.rs/about/download) * [Rustdoc JSON](https://docs.rs/about/rustdoc-json) * [Build queue](https://docs.rs/releases/queue) * [Privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#docs.rs) * [Rust](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#) * [Rust website](https://www.rust-lang.org/) * [The Book](https://doc.rust-lang.org/book/) * [Standard Library API Reference](https://doc.rust-lang.org/std/) * [Rust by Example](https://doc.rust-lang.org/rust-by-example/) * [The Cargo Guide](https://doc.rust-lang.org/cargo/guide/) * [Clippy Documentation](https://doc.rust-lang.org/nightly/clippy) [Skip to main content](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#main-content) [DataType](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#) ----------------------------------------------------------------------------- [arrow](https://docs.rs/arrow/latest/arrow/index.html) ::[datatypes](https://docs.rs/arrow/latest/arrow/datatypes/index.html) Enum DataType Copy item path ============================ [Source](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/src/arrow_schema/datatype.rs.html#96) pub enum DataType { Show 41 variants Null, Boolean, Int8, Int16, Int32, Int64, UInt8, UInt16, UInt32, UInt64, Float16, Float32, Float64, Timestamp(TimeUnit, Option>), Date32, Date64, Time32(TimeUnit), Time64(TimeUnit), Duration(TimeUnit), Interval(IntervalUnit), Binary, FixedSizeBinary(i32), LargeBinary, BinaryView, Utf8, LargeUtf8, Utf8View, List(Arc), ListView(Arc), FixedSizeList(Arc, i32), LargeList(Arc), LargeListView(Arc), Struct(Fields), Union(UnionFields, UnionMode), Dictionary(Box, Box), Decimal32(u8, i8), Decimal64(u8, i8), Decimal128(u8, i8), Decimal256(u8, i8), Map(Arc, bool), RunEndEncoded(Arc, Arc), } Expand description Datatypes supported by this implementation of Apache Arrow. The variants of this enum include primitive fixed size types as well as parametric or nested types. See [`Schema.fbs`](https://github.com/apache/arrow/blob/main/format/Schema.fbs) for Arrow’s specification. [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#examples) Examples -------------------------------------------------------------------------------------- Primitive types // create a new 32-bit signed integer let data_type = DataType::Int32; Nested Types // create a new list of 32-bit signed integers directly let list_data_type = DataType::List(Arc::new(Field::new_list_field(DataType::Int32, true))); // Create the same list type with constructor let list_data_type2 = DataType::new_list(DataType::Int32, true); assert_eq!(list_data_type, list_data_type2); Dictionary Types // String Dictionary (key type Int32 and value type Utf8) let data_type = DataType::Dictionary(Box::new(DataType::Int32), Box::new(DataType::Utf8)); Timestamp Types // timestamp with millisecond precision without timezone specified let data_type = DataType::Timestamp(TimeUnit::Millisecond, None); // timestamp with nanosecond precision in UTC timezone let data_type = DataType::Timestamp(TimeUnit::Nanosecond, Some("UTC".into())); [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#display-and-fromstr) Display and FromStr ------------------------------------------------------------------------------------------------------------ The `Display` and `FromStr` implementations for `DataType` are human-readable, parseable, and reversible. let data_type = DataType::Dictionary(Box::new(DataType::Int32), Box::new(DataType::Utf8)); let data_type_string = data_type.to_string(); assert_eq!(data_type_string, "Dictionary(Int32, Utf8)"); // display can be parsed back into the original type let parsed_data_type: DataType = data_type.to_string().parse().unwrap(); assert_eq!(data_type, parsed_data_type); [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#nested-support) Nested Support -------------------------------------------------------------------------------------------------- Currently, the Rust implementation supports the following nested types: * `List` * `LargeList` * `FixedSizeList` * `Struct` * `Union` * `Map` Nested types can themselves be nested within other arrays. For more information on these types please see [the physical memory layout of Apache Arrow](https://arrow.apache.org/docs/format/Columnar.html#physical-memory-layout) Variants[§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#variants) -------------------------------------------------------------------------------------- [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#variant.Null) ### Null Null type [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#variant.Boolean) ### Boolean A boolean datatype representing the values `true` and `false`. [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#variant.Int8) ### Int8 A signed 8-bit integer. [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#variant.Int16) ### Int16 A signed 16-bit integer. [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#variant.Int32) ### Int32 A signed 32-bit integer. [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#variant.Int64) ### Int64 A signed 64-bit integer. [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#variant.UInt8) ### UInt8 An unsigned 8-bit integer. [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#variant.UInt16) ### UInt16 An unsigned 16-bit integer. [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#variant.UInt32) ### UInt32 An unsigned 32-bit integer. [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#variant.UInt64) ### UInt64 An unsigned 64-bit integer. [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#variant.Float16) ### Float16 A 16-bit floating point number. [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#variant.Float32) ### Float32 A 32-bit floating point number. [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#variant.Float64) ### Float64 A 64-bit floating point number. [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#variant.Timestamp) ### Timestamp([TimeUnit](https://docs.rs/arrow/latest/arrow/datatypes/enum.TimeUnit.html "enum arrow::datatypes::TimeUnit") , [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <[Arc](https://doc.rust-lang.org/nightly/alloc/sync/struct.Arc.html "struct alloc::sync::Arc") <[str](https://doc.rust-lang.org/nightly/std/primitive.str.html) \>>) A timestamp with an optional timezone. Time is measured as a Unix epoch, counting the seconds from 00:00:00.000 on 1 January 1970, excluding leap seconds, as a signed 64-bit integer. The time zone is a string indicating the name of a time zone, one of: * As used in the Olson time zone database (the “tz database” or “tzdata”), such as “America/New\_York” * An absolute time zone offset of the form +XX:XX or -XX:XX, such as +07:30 ##### [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#timestamps-with-a-non-empty-timezone) Timestamps with a non-empty timezone If a Timestamp column has a non-empty timezone value, its epoch is 1970-01-01 00:00:00 (January 1st 1970, midnight) in the _UTC_ timezone (the Unix epoch), regardless of the Timestamp’s own timezone. Therefore, timestamp values with a non-empty timezone correspond to physical points in time together with some additional information about how the data was obtained and/or how to display it (the timezone). For example, the timestamp value 0 with the timezone string “Europe/Paris” corresponds to “January 1st 1970, 00h00” in the UTC timezone, but the application may prefer to display it as “January 1st 1970, 01h00” in the Europe/Paris timezone (which is the same physical point in time). One consequence is that timestamp values with a non-empty timezone can be compared and ordered directly, since they all share the same well-known point of reference (the Unix epoch). ##### [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#timestamps-with-an-unset--empty-timezone) Timestamps with an unset / empty timezone If a Timestamp column has no timezone value, its epoch is 1970-01-01 00:00:00 (January 1st 1970, midnight) in an _unknown_ timezone. Therefore, timestamp values without a timezone cannot be meaningfully interpreted as physical points in time, but only as calendar / clock indications (“wall clock time”) in an unspecified timezone. For example, the timestamp value 0 with an empty timezone string corresponds to “January 1st 1970, 00h00” in an unknown timezone: there is not enough information to interpret it as a well-defined physical point in time. One consequence is that timestamp values without a timezone cannot be reliably compared or ordered, since they may have different points of reference. In particular, it is _not_ possible to interpret an unset or empty timezone as the same as “UTC”. ##### [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#conversion-between-timezones) Conversion between timezones If a Timestamp column has a non-empty timezone, changing the timezone to a different non-empty value is a metadata-only operation: the timestamp values need not change as their point of reference remains the same (the Unix epoch). However, if a Timestamp column has no timezone value, changing it to a non-empty value requires to think about the desired semantics. One possibility is to assume that the original timestamp values are relative to the epoch of the timezone being set; timestamp values should then adjusted to the Unix epoch (for example, changing the timezone from empty to “Europe/Paris” would require converting the timestamp values from “Europe/Paris” to “UTC”, which seems counter-intuitive but is nevertheless correct). DataType::Timestamp(TimeUnit::Second, None); DataType::Timestamp(TimeUnit::Second, Some("literal".into())); DataType::Timestamp(TimeUnit::Second, Some("string".to_string().into())); #### [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#timezone-representation) Timezone representation * * * It is possible to use either the timezone string representation, such as “UTC”, or the absolute time zone offset “+00:00”. For timezones with fixed offsets, such as “UTC” or “JST”, the offset representation is recommended, as it is more explicit and less ambiguous. Most arrow-rs functionalities use the absolute offset representation, such as [`PrimitiveArray::with_timezone_utc`](https://docs.rs/arrow/latest/arrow/array/struct.PrimitiveArray.html#method.with_timezone_utc) that applies a UTC timezone to timestamp arrays. ##### [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#timezone-string-parsing) Timezone string parsing When feature `chrono-tz` is not enabled, allowed timezone strings are fixed offsets of the form “+09:00”, “-09” or “+0930”. When feature `chrono-tz` is enabled, additional strings supported by [chrono\_tz](https://docs.rs/chrono-tz/latest/chrono_tz/) are also allowed, which include [IANA database](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones) timezones. [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#variant.Date32) ### Date32 A signed 32-bit date representing the elapsed time since UNIX epoch (1970-01-01) in days. [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#variant.Date64) ### Date64 A signed 64-bit date representing the elapsed time since UNIX epoch (1970-01-01) in milliseconds. #### [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#valid-ranges) Valid Ranges According to the Arrow specification ([Schema.fbs](https://github.com/apache/arrow/blob/main/format/Schema.fbs) ), values of Date64 are treated as the number of _days_, in milliseconds, since the UNIX epoch. Therefore, values of this type must be evenly divisible by `86_400_000`, the number of milliseconds in a standard day. It is not valid to store milliseconds that do not represent an exact day. The reason for this restriction is compatibility with other language’s native libraries (specifically Java), which historically lacked a dedicated date type and only supported timestamps. #### [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#validation) Validation This library does not validate or enforce that Date64 values are evenly divisible by `86_400_000` for performance and usability reasons. Date64 values are treated similarly to `Timestamp(TimeUnit::Millisecond, None)`: values will be displayed with a time of day if the value does not represent an exact day, and arithmetic will be done at the millisecond granularity. #### [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#recommendation) Recommendation Users should prefer [`Date32`](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#variant.Date32 "variant arrow::datatypes::DataType::Date32") to cleanly represent the number of days, or one of the Timestamp variants to include time as part of the representation, depending on their use case. #### [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#further-reading) Further Reading For more details, see [#5288](https://github.com/apache/arrow-rs/issues/5288) . [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#variant.Time32) ### Time32([TimeUnit](https://docs.rs/arrow/latest/arrow/datatypes/enum.TimeUnit.html "enum arrow::datatypes::TimeUnit") ) A signed 32-bit time representing the elapsed time since midnight in the unit of `TimeUnit`. Must be either seconds or milliseconds. [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#variant.Time64) ### Time64([TimeUnit](https://docs.rs/arrow/latest/arrow/datatypes/enum.TimeUnit.html "enum arrow::datatypes::TimeUnit") ) A signed 64-bit time representing the elapsed time since midnight in the unit of `TimeUnit`. Must be either microseconds or nanoseconds. [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#variant.Duration) ### Duration([TimeUnit](https://docs.rs/arrow/latest/arrow/datatypes/enum.TimeUnit.html "enum arrow::datatypes::TimeUnit") ) Measure of elapsed time in either seconds, milliseconds, microseconds or nanoseconds. [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#variant.Interval) ### Interval([IntervalUnit](https://docs.rs/arrow/latest/arrow/datatypes/enum.IntervalUnit.html "enum arrow::datatypes::IntervalUnit") ) A “calendar” interval which models types that don’t necessarily have a precise duration without the context of a base timestamp (e.g. days can differ in length during day light savings time transitions). [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#variant.Binary) ### Binary Opaque binary data of variable length. A single Binary array can store up to [`i32::MAX`](https://doc.rust-lang.org/nightly/std/primitive.i32.html#associatedconstant.MAX "associated constant i32::MAX") bytes of binary data in total. [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#variant.FixedSizeBinary) ### FixedSizeBinary([i32](https://doc.rust-lang.org/nightly/std/primitive.i32.html) ) Opaque binary data of fixed size. Enum parameter specifies the number of bytes per value. [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#variant.LargeBinary) ### LargeBinary Opaque binary data of variable length and 64-bit offsets. A single LargeBinary array can store up to [`i64::MAX`](https://doc.rust-lang.org/nightly/std/primitive.i64.html#associatedconstant.MAX "associated constant i64::MAX") bytes of binary data in total. [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#variant.BinaryView) ### BinaryView Opaque binary data of variable length. Logically the same as [`Binary`](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#variant.Binary "variant arrow::datatypes::DataType::Binary") , but the internal representation uses a view struct that contains the string length and either the string’s entire data inline (for small strings) or an inlined prefix, an index of another buffer, and an offset pointing to a slice in that buffer (for non-small strings). [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#variant.Utf8) ### Utf8 A variable-length string in Unicode with UTF-8 encoding. A single Utf8 array can store up to [`i32::MAX`](https://doc.rust-lang.org/nightly/std/primitive.i32.html#associatedconstant.MAX "associated constant i32::MAX") bytes of string data in total. [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#variant.LargeUtf8) ### LargeUtf8 A variable-length string in Unicode with UFT-8 encoding and 64-bit offsets. A single LargeUtf8 array can store up to [`i64::MAX`](https://doc.rust-lang.org/nightly/std/primitive.i64.html#associatedconstant.MAX "associated constant i64::MAX") bytes of string data in total. [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#variant.Utf8View) ### Utf8View A variable-length string in Unicode with UTF-8 encoding Logically the same as [`Utf8`](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#variant.Utf8 "variant arrow::datatypes::DataType::Utf8") , but the internal representation uses a view struct that contains the string length and either the string’s entire data inline (for small strings) or an inlined prefix, an index of another buffer, and an offset pointing to a slice in that buffer (for non-small strings). [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#variant.List) ### List([Arc](https://doc.rust-lang.org/nightly/alloc/sync/struct.Arc.html "struct alloc::sync::Arc") <[Field](https://docs.rs/arrow/latest/arrow/datatypes/struct.Field.html "struct arrow::datatypes::Field") \>) A list of some logical data type with variable length. A single List array can store up to [`i32::MAX`](https://doc.rust-lang.org/nightly/std/primitive.i32.html#associatedconstant.MAX "associated constant i32::MAX") elements in total. [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#variant.ListView) ### ListView([Arc](https://doc.rust-lang.org/nightly/alloc/sync/struct.Arc.html "struct alloc::sync::Arc") <[Field](https://docs.rs/arrow/latest/arrow/datatypes/struct.Field.html "struct arrow::datatypes::Field") \>) A list of some logical data type with variable length. Logically the same as [`List`](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#variant.List "variant arrow::datatypes::DataType::List") , but the internal representation differs in how child data is referenced, allowing flexibility in how data is layed out. [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#variant.FixedSizeList) ### FixedSizeList([Arc](https://doc.rust-lang.org/nightly/alloc/sync/struct.Arc.html "struct alloc::sync::Arc") <[Field](https://docs.rs/arrow/latest/arrow/datatypes/struct.Field.html "struct arrow::datatypes::Field") \>, [i32](https://doc.rust-lang.org/nightly/std/primitive.i32.html) ) A list of some logical data type with fixed length. [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#variant.LargeList) ### LargeList([Arc](https://doc.rust-lang.org/nightly/alloc/sync/struct.Arc.html "struct alloc::sync::Arc") <[Field](https://docs.rs/arrow/latest/arrow/datatypes/struct.Field.html "struct arrow::datatypes::Field") \>) A list of some logical data type with variable length and 64-bit offsets. A single LargeList array can store up to [`i64::MAX`](https://doc.rust-lang.org/nightly/std/primitive.i64.html#associatedconstant.MAX "associated constant i64::MAX") elements in total. [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#variant.LargeListView) ### LargeListView([Arc](https://doc.rust-lang.org/nightly/alloc/sync/struct.Arc.html "struct alloc::sync::Arc") <[Field](https://docs.rs/arrow/latest/arrow/datatypes/struct.Field.html "struct arrow::datatypes::Field") \>) A list of some logical data type with variable length and 64-bit offsets. Logically the same as [`LargeList`](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#variant.LargeList "variant arrow::datatypes::DataType::LargeList") , but the internal representation differs in how child data is referenced, allowing flexibility in how data is layed out. [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#variant.Struct) ### Struct([Fields](https://docs.rs/arrow/latest/arrow/datatypes/struct.Fields.html "struct arrow::datatypes::Fields") ) A nested datatype that contains a number of sub-fields. [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#variant.Union) ### Union([UnionFields](https://docs.rs/arrow/latest/arrow/datatypes/struct.UnionFields.html "struct arrow::datatypes::UnionFields") , [UnionMode](https://docs.rs/arrow/latest/arrow/datatypes/enum.UnionMode.html "enum arrow::datatypes::UnionMode") ) A nested datatype that can represent slots of differing types. Components: 1. [`UnionFields`](https://docs.rs/arrow/latest/arrow/datatypes/struct.UnionFields.html "struct arrow::datatypes::UnionFields") 2. The type of union (Sparse or Dense) [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#variant.Dictionary) ### Dictionary([Box](https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html "struct alloc::boxed::Box") <[DataType](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html "enum arrow::datatypes::DataType") \>, [Box](https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html "struct alloc::boxed::Box") <[DataType](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html "enum arrow::datatypes::DataType") \>) A dictionary encoded array (`key_type`, `value_type`), where each array element is an index of `key_type` into an associated dictionary of `value_type`. Dictionary arrays are used to store columns of `value_type` that contain many repeated values using less memory, but with a higher CPU overhead for some operations. This type mostly used to represent low cardinality string arrays or a limited set of primitive types as integers. [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#variant.Decimal32) ### Decimal32([u8](https://doc.rust-lang.org/nightly/std/primitive.u8.html) , [i8](https://doc.rust-lang.org/nightly/std/primitive.i8.html) ) Exact 32-bit width decimal value with precision and scale * precision is the total number of digits * scale is the number of digits past the decimal For example the number 123.45 has precision 5 and scale 2. In certain situations, scale could be negative number. For negative scale, it is the number of padding 0 to the right of the digits. For example the number 12300 could be treated as a decimal has precision 3 and scale -2. [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#variant.Decimal64) ### Decimal64([u8](https://doc.rust-lang.org/nightly/std/primitive.u8.html) , [i8](https://doc.rust-lang.org/nightly/std/primitive.i8.html) ) Exact 64-bit width decimal value with precision and scale * precision is the total number of digits * scale is the number of digits past the decimal For example the number 123.45 has precision 5 and scale 2. In certain situations, scale could be negative number. For negative scale, it is the number of padding 0 to the right of the digits. For example the number 12300 could be treated as a decimal has precision 3 and scale -2. [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#variant.Decimal128) ### Decimal128([u8](https://doc.rust-lang.org/nightly/std/primitive.u8.html) , [i8](https://doc.rust-lang.org/nightly/std/primitive.i8.html) ) Exact 128-bit width decimal value with precision and scale * precision is the total number of digits * scale is the number of digits past the decimal For example the number 123.45 has precision 5 and scale 2. In certain situations, scale could be negative number. For negative scale, it is the number of padding 0 to the right of the digits. For example the number 12300 could be treated as a decimal has precision 3 and scale -2. [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#variant.Decimal256) ### Decimal256([u8](https://doc.rust-lang.org/nightly/std/primitive.u8.html) , [i8](https://doc.rust-lang.org/nightly/std/primitive.i8.html) ) Exact 256-bit width decimal value with precision and scale * precision is the total number of digits * scale is the number of digits past the decimal For example the number 123.45 has precision 5 and scale 2. In certain situations, scale could be negative number. For negative scale, it is the number of padding 0 to the right of the digits. For example the number 12300 could be treated as a decimal has precision 3 and scale -2. [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#variant.Map) ### Map([Arc](https://doc.rust-lang.org/nightly/alloc/sync/struct.Arc.html "struct alloc::sync::Arc") <[Field](https://docs.rs/arrow/latest/arrow/datatypes/struct.Field.html "struct arrow::datatypes::Field") \>, [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) ) A Map is a logical nested type that is represented as `List>` The keys and values are each respectively contiguous. The key and value types are not constrained, but keys should be hashable and unique. Whether the keys are sorted can be set in the `bool` after the `Field`. In a field with Map type, the field has a child Struct field, which then has two children: key type and the second the value type. The names of the child fields may be respectively “entries”, “key”, and “value”, but this is not enforced. [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#variant.RunEndEncoded) ### RunEndEncoded([Arc](https://doc.rust-lang.org/nightly/alloc/sync/struct.Arc.html "struct alloc::sync::Arc") <[Field](https://docs.rs/arrow/latest/arrow/datatypes/struct.Field.html "struct arrow::datatypes::Field") \>, [Arc](https://doc.rust-lang.org/nightly/alloc/sync/struct.Arc.html "struct alloc::sync::Arc") <[Field](https://docs.rs/arrow/latest/arrow/datatypes/struct.Field.html "struct arrow::datatypes::Field") \>) A run-end encoding (REE) is a variation of run-length encoding (RLE). These encodings are well-suited for representing data containing sequences of the same value, called runs. Each run is represented as a value and an integer giving the index in the array where the run ends. A run-end encoded array has no buffers by itself, but has two child arrays. The first child array, called the run ends array, holds either 16, 32, or 64-bit signed integers. The actual values of each run are held in the second child array. These child arrays are prescribed the standard names of “run\_ends” and “values” respectively. Implementations[§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#implementations) ---------------------------------------------------------------------------------------------------- [Source](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/src/arrow_schema/datatype.rs.html#522) [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#impl-DataType) ### impl [DataType](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html "enum arrow::datatypes::DataType") [Source](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/src/arrow_schema/datatype.rs.html#525) #### pub fn [is\_primitive](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#method.is_primitive) (&self) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) Returns true if the type is primitive: (numeric, temporal). [Source](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/src/arrow_schema/datatype.rs.html#531) #### pub fn [is\_numeric](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#method.is_numeric) (&self) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) Returns true if this type is numeric: (UInt\*, Int\*, Float\*, Decimal\*). [Source](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/src/arrow_schema/datatype.rs.html#555) #### pub fn [is\_temporal](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#method.is_temporal) (&self) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) Returns true if this type is temporal: (Date\*, Time\*, Duration, or Interval). [Source](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/src/arrow_schema/datatype.rs.html#565) #### pub fn [is\_floating](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#method.is_floating) (&self) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) Returns true if this type is floating: (Float\*). [Source](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/src/arrow_schema/datatype.rs.html#572) #### pub fn [is\_integer](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#method.is_integer) (&self) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) Returns true if this type is integer: (Int\*, UInt\*). [Source](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/src/arrow_schema/datatype.rs.html#578) #### pub fn [is\_signed\_integer](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#method.is_signed_integer) (&self) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) Returns true if this type is signed integer: (Int\*). [Source](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/src/arrow_schema/datatype.rs.html#585) #### pub fn [is\_unsigned\_integer](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#method.is_unsigned_integer) (&self) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) Returns true if this type is unsigned integer: (UInt\*). [Source](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/src/arrow_schema/datatype.rs.html#592) #### pub fn [is\_decimal](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#method.is_decimal) (&self) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) Returns true if this type is decimal: (Decimal\*). [Source](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/src/arrow_schema/datatype.rs.html#602) #### pub fn [is\_dictionary\_key\_type](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#method.is_dictionary_key_type) (&self) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) Returns true if this type is valid as a dictionary key [Source](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/src/arrow_schema/datatype.rs.html#608) #### pub fn [is\_run\_ends\_type](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#method.is_run_ends_type) (&self) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) Returns true if this type is valid for run-ends array in RunArray [Source](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/src/arrow_schema/datatype.rs.html#616) #### pub fn [is\_nested](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#method.is_nested) (&self) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) Returns true if this type is nested (List, FixedSizeList, LargeList, ListView. LargeListView, Struct, Union, or Map), or a dictionary of a nested type [Source](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/src/arrow_schema/datatype.rs.html#635) #### pub fn [is\_null](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#method.is_null) (&self) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) Returns true if this type is DataType::Null. [Source](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/src/arrow_schema/datatype.rs.html#642) #### pub fn [is\_string](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#method.is_string) (&self) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) Returns true if this type is a String type [Source](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/src/arrow_schema/datatype.rs.html#651) #### pub fn [is\_list](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#method.is_list) (&self) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) Returns true if this type is a List type. List types include List, LargeList, FixedSizeList, ListView, and LargeListView. [Source](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/src/arrow_schema/datatype.rs.html#663) #### pub fn [is\_binary](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#method.is_binary) (&self) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) Returns true if this type is a Binary type. Binary types include Binary, LargeBinary, FixedSizeBinary and BinaryView. [Source](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/src/arrow_schema/datatype.rs.html#670) #### pub fn [equals\_datatype](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#method.equals_datatype) (&self, other: &[DataType](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html "enum arrow::datatypes::DataType") ) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) Compares the datatype with another, ignoring nested field names and metadata. [Source](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/src/arrow_schema/datatype.rs.html#731) #### pub fn [primitive\_width](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#method.primitive_width) (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <[usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) \> Returns the byte width of this type if it is a primitive type Returns `None` if not a primitive type [Source](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/src/arrow_schema/datatype.rs.html#769) #### pub fn [size](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#method.size) (&self) -> [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) Return size of this instance in bytes. Includes the size of `Self`. [Source](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/src/arrow_schema/datatype.rs.html#823) #### pub fn [contains](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#method.contains) (&self, other: &[DataType](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html "enum arrow::datatypes::DataType") ) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) Check to see if `self` is a superset of `other` If DataType is a nested type, then it will check to see if the nested type is a superset of the other nested type else it will check to see if the DataType is equal to the other DataType [Source](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/src/arrow_schema/datatype.rs.html#852) #### pub fn [new\_list](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#method.new_list) (data\_type: [DataType](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html "enum arrow::datatypes::DataType") , nullable: [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) ) -> [DataType](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html "enum arrow::datatypes::DataType") Create a [`DataType::List`](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#variant.List "variant arrow::datatypes::DataType::List") with elements of the specified type and nullability, and conventionally named inner [`Field`](https://docs.rs/arrow/latest/arrow/datatypes/struct.Field.html "struct arrow::datatypes::Field") (`"item"`). To specify field level metadata, construct the inner [`Field`](https://docs.rs/arrow/latest/arrow/datatypes/struct.Field.html "struct arrow::datatypes::Field") directly via [`Field::new`](https://docs.rs/arrow/latest/arrow/datatypes/struct.Field.html#method.new "associated function arrow::datatypes::Field::new") or [`Field::new_list_field`](https://docs.rs/arrow/latest/arrow/datatypes/struct.Field.html#method.new_list_field "associated function arrow::datatypes::Field::new_list_field") . [Source](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/src/arrow_schema/datatype.rs.html#861) #### pub fn [new\_large\_list](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#method.new_large_list) (data\_type: [DataType](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html "enum arrow::datatypes::DataType") , nullable: [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) ) -> [DataType](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html "enum arrow::datatypes::DataType") Create a [`DataType::LargeList`](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#variant.LargeList "variant arrow::datatypes::DataType::LargeList") with elements of the specified type and nullability, and conventionally named inner [`Field`](https://docs.rs/arrow/latest/arrow/datatypes/struct.Field.html "struct arrow::datatypes::Field") (`"item"`). To specify field level metadata, construct the inner [`Field`](https://docs.rs/arrow/latest/arrow/datatypes/struct.Field.html "struct arrow::datatypes::Field") directly via [`Field::new`](https://docs.rs/arrow/latest/arrow/datatypes/struct.Field.html#method.new "associated function arrow::datatypes::Field::new") or [`Field::new_list_field`](https://docs.rs/arrow/latest/arrow/datatypes/struct.Field.html#method.new_list_field "associated function arrow::datatypes::Field::new_list_field") . [Source](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/src/arrow_schema/datatype.rs.html#870) #### pub fn [new\_fixed\_size\_list](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#method.new_fixed_size_list) ( data\_type: [DataType](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html "enum arrow::datatypes::DataType") , size: [i32](https://doc.rust-lang.org/nightly/std/primitive.i32.html) , nullable: [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) , ) -> [DataType](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html "enum arrow::datatypes::DataType") Create a [`DataType::FixedSizeList`](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#variant.FixedSizeList "variant arrow::datatypes::DataType::FixedSizeList") with elements of the specified type, size and nullability, and conventionally named inner [`Field`](https://docs.rs/arrow/latest/arrow/datatypes/struct.Field.html "struct arrow::datatypes::Field") (`"item"`). To specify field level metadata, construct the inner [`Field`](https://docs.rs/arrow/latest/arrow/datatypes/struct.Field.html "struct arrow::datatypes::Field") directly via [`Field::new`](https://docs.rs/arrow/latest/arrow/datatypes/struct.Field.html#method.new "associated function arrow::datatypes::Field::new") or [`Field::new_list_field`](https://docs.rs/arrow/latest/arrow/datatypes/struct.Field.html#method.new_list_field "associated function arrow::datatypes::Field::new_list_field") . Trait Implementations[§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#trait-implementations) ---------------------------------------------------------------------------------------------------------------- [Source](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/src/arrow_schema/datatype.rs.html#94) [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#impl-Clone-for-DataType) ### impl [Clone](https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html "trait core::clone::Clone") for [DataType](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html "enum arrow::datatypes::DataType") [Source](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/src/arrow_schema/datatype.rs.html#94) [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#method.clone) #### fn [clone](https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone) (&self) -> [DataType](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html "enum arrow::datatypes::DataType") Returns a duplicate of the value. [Read more](https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone) 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/clone.rs.html#245-247) [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#method.clone_from) #### fn [clone\_from](https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from) (&mut self, source: &Self) Performs copy-assignment from `source`. [Read more](https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from) [Source](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/src/arrow_schema/datatype.rs.html#94) [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#impl-Debug-for-DataType) ### impl [Debug](https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html "trait core::fmt::Debug") for [DataType](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html "enum arrow::datatypes::DataType") [Source](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/src/arrow_schema/datatype.rs.html#94) [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#method.fmt) #### fn [fmt](https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt) (&self, f: &mut [Formatter](https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html "struct core::fmt::Formatter") <'\_>) -> [Result](https://doc.rust-lang.org/nightly/core/result/enum.Result.html "enum core::result::Result") <[()](https://doc.rust-lang.org/nightly/std/primitive.unit.html) , [Error](https://doc.rust-lang.org/nightly/core/fmt/struct.Error.html "struct core::fmt::Error") \> Formats the value using the given formatter. [Read more](https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt) [Source](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/src/arrow_schema/datatype_display.rs.html#22) [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#impl-Display-for-DataType) ### impl [Display](https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html "trait core::fmt::Display") for [DataType](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html "enum arrow::datatypes::DataType") [Source](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/src/arrow_schema/datatype_display.rs.html#23) [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#method.fmt-1) #### fn [fmt](https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html#tymethod.fmt) (&self, f: &mut [Formatter](https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html "struct core::fmt::Formatter") <'\_>) -> [Result](https://doc.rust-lang.org/nightly/core/result/enum.Result.html "enum core::result::Result") <[()](https://doc.rust-lang.org/nightly/std/primitive.unit.html) , [Error](https://doc.rust-lang.org/nightly/core/fmt/struct.Error.html "struct core::fmt::Error") \> Formats the value using the given formatter. [Read more](https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html#tymethod.fmt) [Source](https://docs.rs/arrow-pyarrow/58.1.0/x86_64-unknown-linux-gnu/src/arrow_pyarrow/lib.rs.html#153) [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#impl-FromPyArrow-for-DataType) ### impl [FromPyArrow](https://docs.rs/arrow-pyarrow/58.1.0/x86_64-unknown-linux-gnu/arrow_pyarrow/trait.FromPyArrow.html "trait arrow_pyarrow::FromPyArrow") for [DataType](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html "enum arrow::datatypes::DataType") [Source](https://docs.rs/arrow-pyarrow/58.1.0/x86_64-unknown-linux-gnu/src/arrow_pyarrow/lib.rs.html#154) [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#method.from_pyarrow_bound) #### fn [from\_pyarrow\_bound](https://docs.rs/arrow-pyarrow/58.1.0/x86_64-unknown-linux-gnu/arrow_pyarrow/trait.FromPyArrow.html#tymethod.from_pyarrow_bound) (value: &[Bound](https://docs.rs/pyo3/0.28.2/x86_64-unknown-linux-gnu/pyo3/instance/struct.Bound.html "struct pyo3::instance::Bound") <'\_, [PyAny](https://docs.rs/pyo3/0.28.2/x86_64-unknown-linux-gnu/pyo3/types/any/struct.PyAny.html "struct pyo3::types::any::PyAny") \>) -> [Result](https://doc.rust-lang.org/nightly/core/result/enum.Result.html "enum core::result::Result") <[DataType](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html "enum arrow::datatypes::DataType") , [PyErr](https://docs.rs/pyo3/0.28.2/x86_64-unknown-linux-gnu/pyo3/err/struct.PyErr.html "struct pyo3::err::PyErr") \> Convert a Python object to an arrow-rs type. [Read more](https://docs.rs/arrow-pyarrow/58.1.0/x86_64-unknown-linux-gnu/arrow_pyarrow/trait.FromPyArrow.html#tymethod.from_pyarrow_bound) [Source](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/src/arrow_schema/datatype.rs.html#506) [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#impl-FromStr-for-DataType) ### impl [FromStr](https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html "trait core::str::traits::FromStr") for [DataType](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html "enum arrow::datatypes::DataType") Parses `str` into a `DataType`. This is the reverse of [`DataType`](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html "enum arrow::datatypes::DataType") ’s `Display` impl, and maintains the invariant that `DataType::try_from(&data_type.to_string()).unwrap() == data_type` #### [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#example) Example use arrow_schema::DataType; let data_type: DataType = "Int32".parse().unwrap(); assert_eq!(data_type, DataType::Int32); [Source](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/src/arrow_schema/datatype.rs.html#507) [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#associatedtype.Err) #### type [Err](https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#associatedtype.Err) = [ArrowError](https://docs.rs/arrow/latest/arrow/error/enum.ArrowError.html "enum arrow::error::ArrowError") The associated error which can be returned from parsing. [Source](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/src/arrow_schema/datatype.rs.html#509) [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#method.from_str) #### fn [from\_str](https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#tymethod.from_str) (s: &[str](https://doc.rust-lang.org/nightly/std/primitive.str.html) ) -> [Result](https://doc.rust-lang.org/nightly/core/result/enum.Result.html "enum core::result::Result") <[DataType](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html "enum arrow::datatypes::DataType") , <[DataType](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html "enum arrow::datatypes::DataType") as [FromStr](https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html "trait core::str::traits::FromStr") \>::[Err](https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#associatedtype.Err "type core::str::traits::FromStr::Err") \> Parses a string `s` to return a value of this type. [Read more](https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html#tymethod.from_str) [Source](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/src/arrow_schema/datatype.rs.html#94) [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#impl-Hash-for-DataType) ### impl [Hash](https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html "trait core::hash::Hash") for [DataType](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html "enum arrow::datatypes::DataType") [Source](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/src/arrow_schema/datatype.rs.html#94) [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#method.hash) #### fn [hash](https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#tymethod.hash) <\_\_H>(&self, state: [&mut \_\_H](https://doc.rust-lang.org/nightly/std/primitive.reference.html) ) where \_\_H: [Hasher](https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html "trait core::hash::Hasher") , Feeds this value into the given [`Hasher`](https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html "trait core::hash::Hasher") . [Read more](https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#tymethod.hash) 1.3.0 · [Source](https://doc.rust-lang.org/nightly/src/core/hash/mod.rs.html#234-236) [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#method.hash_slice) #### fn [hash\_slice](https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#method.hash_slice) (data: &\[Self\], state: [&mut H](https://doc.rust-lang.org/nightly/std/primitive.reference.html) ) where H: [Hasher](https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html "trait core::hash::Hasher") , Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , Feeds a slice of this type into the given [`Hasher`](https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html "trait core::hash::Hasher") . [Read more](https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#method.hash_slice) [Source](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/src/arrow_schema/datatype.rs.html#94) [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#impl-Ord-for-DataType) ### impl [Ord](https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html "trait core::cmp::Ord") for [DataType](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html "enum arrow::datatypes::DataType") [Source](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/src/arrow_schema/datatype.rs.html#94) [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#method.cmp) #### fn [cmp](https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#tymethod.cmp) (&self, other: &[DataType](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html "enum arrow::datatypes::DataType") ) -> [Ordering](https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html "enum core::cmp::Ordering") This method returns an [`Ordering`](https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html "enum core::cmp::Ordering") between `self` and `other`. [Read more](https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#tymethod.cmp) 1.21.0 · [Source](https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1034-1036) [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#method.max) #### fn [max](https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.max) (self, other: Self) -> Self where Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , Compares and returns the maximum of two values. [Read more](https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.max) 1.21.0 · [Source](https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1073-1075) [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#method.min) #### fn [min](https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.min) (self, other: Self) -> Self where Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , Compares and returns the minimum of two values. [Read more](https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.min) 1.50.0 · [Source](https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1099-1101) [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#method.clamp) #### fn [clamp](https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.clamp) (self, min: Self, max: Self) -> Self where Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , Restrict a value to a certain interval. [Read more](https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.clamp) [Source](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/src/arrow_schema/datatype.rs.html#94) [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#impl-PartialEq-for-DataType) ### impl [PartialEq](https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html "trait core::cmp::PartialEq") for [DataType](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html "enum arrow::datatypes::DataType") [Source](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/src/arrow_schema/datatype.rs.html#94) [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#method.eq) #### fn [eq](https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq) (&self, other: &[DataType](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html "enum arrow::datatypes::DataType") ) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) Tests for `self` and `other` values to be equal, and is used by `==`. 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#264) [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#method.ne) #### fn [ne](https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne) (&self, other: [&Rhs](https://doc.rust-lang.org/nightly/std/primitive.reference.html) ) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) Tests for `!=`. The default implementation is almost always sufficient, and should not be overridden without very good reason. [Source](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/src/arrow_schema/datatype.rs.html#94) [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#impl-PartialOrd-for-DataType) ### impl [PartialOrd](https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html "trait core::cmp::PartialOrd") for [DataType](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html "enum arrow::datatypes::DataType") [Source](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/src/arrow_schema/datatype.rs.html#94) [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#method.partial_cmp) #### fn [partial\_cmp](https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#tymethod.partial_cmp) (&self, other: &[DataType](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html "enum arrow::datatypes::DataType") ) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <[Ordering](https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html "enum core::cmp::Ordering") \> This method returns an ordering between `self` and `other` values if one exists. [Read more](https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#tymethod.partial_cmp) 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1411) [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#method.lt) #### fn [lt](https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.lt) (&self, other: [&Rhs](https://doc.rust-lang.org/nightly/std/primitive.reference.html) ) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) Tests less than (for `self` and `other`) and is used by the `<` operator. [Read more](https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.lt) 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1429) [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#method.le) #### fn [le](https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.le) (&self, other: [&Rhs](https://doc.rust-lang.org/nightly/std/primitive.reference.html) ) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) Tests less than or equal to (for `self` and `other`) and is used by the `<=` operator. [Read more](https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.le) 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1447) [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#method.gt) #### fn [gt](https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.gt) (&self, other: [&Rhs](https://doc.rust-lang.org/nightly/std/primitive.reference.html) ) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) Tests greater than (for `self` and `other`) and is used by the `>` operator. [Read more](https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.gt) 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1465) [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#method.ge) #### fn [ge](https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.ge) (&self, other: [&Rhs](https://doc.rust-lang.org/nightly/std/primitive.reference.html) ) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) Tests greater than or equal to (for `self` and `other`) and is used by the `>=` operator. [Read more](https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.ge) [Source](https://docs.rs/arrow-pyarrow/58.1.0/x86_64-unknown-linux-gnu/src/arrow_pyarrow/lib.rs.html#182) [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#impl-ToPyArrow-for-DataType) ### impl [ToPyArrow](https://docs.rs/arrow-pyarrow/58.1.0/x86_64-unknown-linux-gnu/arrow_pyarrow/trait.ToPyArrow.html "trait arrow_pyarrow::ToPyArrow") for [DataType](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html "enum arrow::datatypes::DataType") [Source](https://docs.rs/arrow-pyarrow/58.1.0/x86_64-unknown-linux-gnu/src/arrow_pyarrow/lib.rs.html#183) [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#method.to_pyarrow) #### fn [to\_pyarrow](https://docs.rs/arrow-pyarrow/58.1.0/x86_64-unknown-linux-gnu/arrow_pyarrow/trait.ToPyArrow.html#tymethod.to_pyarrow) <'py>(&self, py: [Python](https://docs.rs/pyo3/0.28.2/x86_64-unknown-linux-gnu/pyo3/marker/struct.Python.html "struct pyo3::marker::Python") <'py>) -> [Result](https://doc.rust-lang.org/nightly/core/result/enum.Result.html "enum core::result::Result") <[Bound](https://docs.rs/pyo3/0.28.2/x86_64-unknown-linux-gnu/pyo3/instance/struct.Bound.html "struct pyo3::instance::Bound") <'py, [PyAny](https://docs.rs/pyo3/0.28.2/x86_64-unknown-linux-gnu/pyo3/types/any/struct.PyAny.html "struct pyo3::types::any::PyAny") \>, [PyErr](https://docs.rs/pyo3/0.28.2/x86_64-unknown-linux-gnu/pyo3/err/struct.PyErr.html "struct pyo3::err::PyErr") \> Convert the implemented type into a Python object without consuming it. [Source](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/src/arrow_schema/ffi.rs.html#658) [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#impl-TryFrom%3C%26DataType%3E-for-FFI_ArrowSchema) ### impl [TryFrom](https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html "trait core::convert::TryFrom") <&[DataType](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html "enum arrow::datatypes::DataType") \> for [FFI\_ArrowSchema](https://docs.rs/arrow/latest/arrow/ffi/struct.FFI_ArrowSchema.html "struct arrow::ffi::FFI_ArrowSchema") [Source](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/src/arrow_schema/ffi.rs.html#662) [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#method.try_from-2) #### fn [try\_from](https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from) (dtype: &[DataType](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html "enum arrow::datatypes::DataType") ) -> [Result](https://doc.rust-lang.org/nightly/core/result/enum.Result.html "enum core::result::Result") <[FFI\_ArrowSchema](https://docs.rs/arrow/latest/arrow/ffi/struct.FFI_ArrowSchema.html "struct arrow::ffi::FFI_ArrowSchema") , [ArrowError](https://docs.rs/arrow/latest/arrow/error/enum.ArrowError.html "enum arrow::error::ArrowError") \> See [CDataInterface docs](https://arrow.apache.org/docs/format/CDataInterface.html#data-type-description-format-strings) [Source](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/src/arrow_schema/ffi.rs.html#659) [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#associatedtype.Error-2) #### type [Error](https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error) = [ArrowError](https://docs.rs/arrow/latest/arrow/error/enum.ArrowError.html "enum arrow::error::ArrowError") The type returned in the event of a conversion error. [Source](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/src/arrow_schema/ffi.rs.html#413) [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#impl-TryFrom%3C%26FFI_ArrowSchema%3E-for-DataType) ### impl [TryFrom](https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html "trait core::convert::TryFrom") <&[FFI\_ArrowSchema](https://docs.rs/arrow/latest/arrow/ffi/struct.FFI_ArrowSchema.html "struct arrow::ffi::FFI_ArrowSchema") \> for [DataType](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html "enum arrow::datatypes::DataType") [Source](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/src/arrow_schema/ffi.rs.html#417) [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#method.try_from-1) #### fn [try\_from](https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from) (c\_schema: &[FFI\_ArrowSchema](https://docs.rs/arrow/latest/arrow/ffi/struct.FFI_ArrowSchema.html "struct arrow::ffi::FFI_ArrowSchema") ) -> [Result](https://doc.rust-lang.org/nightly/core/result/enum.Result.html "enum core::result::Result") <[DataType](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html "enum arrow::datatypes::DataType") , [ArrowError](https://docs.rs/arrow/latest/arrow/error/enum.ArrowError.html "enum arrow::error::ArrowError") \> See [CDataInterface docs](https://arrow.apache.org/docs/format/CDataInterface.html#data-type-description-format-strings) [Source](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/src/arrow_schema/ffi.rs.html#414) [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#associatedtype.Error-1) #### type [Error](https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error) = [ArrowError](https://docs.rs/arrow/latest/arrow/error/enum.ArrowError.html "enum arrow::error::ArrowError") The type returned in the event of a conversion error. [Source](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/src/arrow_schema/datatype.rs.html#514) [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#impl-TryFrom%3C%26str%3E-for-DataType) ### impl [TryFrom](https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html "trait core::convert::TryFrom") <&[str](https://doc.rust-lang.org/nightly/std/primitive.str.html) \> for [DataType](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html "enum arrow::datatypes::DataType") [Source](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/src/arrow_schema/datatype.rs.html#515) [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#associatedtype.Error) #### type [Error](https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error) = [ArrowError](https://docs.rs/arrow/latest/arrow/error/enum.ArrowError.html "enum arrow::error::ArrowError") The type returned in the event of a conversion error. [Source](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/src/arrow_schema/datatype.rs.html#517) [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#method.try_from) #### fn [try\_from](https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from) (value: &[str](https://doc.rust-lang.org/nightly/std/primitive.str.html) ) -> [Result](https://doc.rust-lang.org/nightly/core/result/enum.Result.html "enum core::result::Result") <[DataType](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html "enum arrow::datatypes::DataType") , <[DataType](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html "enum arrow::datatypes::DataType") as [TryFrom](https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html "trait core::convert::TryFrom") <&[str](https://doc.rust-lang.org/nightly/std/primitive.str.html) \>>::[Error](https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error "type core::convert::TryFrom::Error") \> Performs the conversion. [Source](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/src/arrow_schema/ffi.rs.html#820) [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#impl-TryFrom%3CDataType%3E-for-FFI_ArrowSchema) ### impl [TryFrom](https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html "trait core::convert::TryFrom") <[DataType](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html "enum arrow::datatypes::DataType") \> for [FFI\_ArrowSchema](https://docs.rs/arrow/latest/arrow/ffi/struct.FFI_ArrowSchema.html "struct arrow::ffi::FFI_ArrowSchema") [Source](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/src/arrow_schema/ffi.rs.html#821) [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#associatedtype.Error-3) #### type [Error](https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error) = [ArrowError](https://docs.rs/arrow/latest/arrow/error/enum.ArrowError.html "enum arrow::error::ArrowError") The type returned in the event of a conversion error. [Source](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/src/arrow_schema/ffi.rs.html#823) [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#method.try_from-3) #### fn [try\_from](https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from) (dtype: [DataType](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html "enum arrow::datatypes::DataType") ) -> [Result](https://doc.rust-lang.org/nightly/core/result/enum.Result.html "enum core::result::Result") <[FFI\_ArrowSchema](https://docs.rs/arrow/latest/arrow/ffi/struct.FFI_ArrowSchema.html "struct arrow::ffi::FFI_ArrowSchema") , [ArrowError](https://docs.rs/arrow/latest/arrow/error/enum.ArrowError.html "enum arrow::error::ArrowError") \> Performs the conversion. [Source](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/src/arrow_schema/datatype.rs.html#94) [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#impl-Eq-for-DataType) ### impl [Eq](https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html "trait core::cmp::Eq") for [DataType](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html "enum arrow::datatypes::DataType") [Source](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/src/arrow_schema/datatype.rs.html#94) [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#impl-StructuralPartialEq-for-DataType) ### impl [StructuralPartialEq](https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html "trait core::marker::StructuralPartialEq") for [DataType](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html "enum arrow::datatypes::DataType") Auto Trait Implementations[§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#synthetic-implementations) ------------------------------------------------------------------------------------------------------------------------- [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#impl-Freeze-for-DataType) ### impl [Freeze](https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html "trait core::marker::Freeze") for [DataType](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html "enum arrow::datatypes::DataType") [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#impl-RefUnwindSafe-for-DataType) ### impl [RefUnwindSafe](https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html "trait core::panic::unwind_safe::RefUnwindSafe") for [DataType](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html "enum arrow::datatypes::DataType") [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#impl-Send-for-DataType) ### impl [Send](https://doc.rust-lang.org/nightly/core/marker/trait.Send.html "trait core::marker::Send") for [DataType](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html "enum arrow::datatypes::DataType") [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#impl-Sync-for-DataType) ### impl [Sync](https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html "trait core::marker::Sync") for [DataType](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html "enum arrow::datatypes::DataType") [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#impl-Unpin-for-DataType) ### impl [Unpin](https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html "trait core::marker::Unpin") for [DataType](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html "enum arrow::datatypes::DataType") [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#impl-UnsafeUnpin-for-DataType) ### impl [UnsafeUnpin](https://doc.rust-lang.org/nightly/core/marker/trait.UnsafeUnpin.html "trait core::marker::UnsafeUnpin") for [DataType](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html "enum arrow::datatypes::DataType") [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#impl-UnwindSafe-for-DataType) ### impl [UnwindSafe](https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html "trait core::panic::unwind_safe::UnwindSafe") for [DataType](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html "enum arrow::datatypes::DataType") Blanket Implementations[§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#blanket-implementations) -------------------------------------------------------------------------------------------------------------------- [Source](https://doc.rust-lang.org/nightly/src/core/any.rs.html#141) [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#impl-Any-for-T) ### impl [Any](https://doc.rust-lang.org/nightly/core/any/trait.Any.html "trait core::any::Any") for T where T: 'static + ?[Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , [Source](https://doc.rust-lang.org/nightly/src/core/any.rs.html#142) [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#method.type_id) #### fn [type\_id](https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id) (&self) -> [TypeId](https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html "struct core::any::TypeId") Gets the `TypeId` of `self`. [Read more](https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id) [Source](https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#212) [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#impl-Borrow%3CT%3E-for-T) ### impl [Borrow](https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html "trait core::borrow::Borrow") for T where T: ?[Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , [Source](https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#214) [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#method.borrow) #### fn [borrow](https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow) (&self) -> [&T](https://doc.rust-lang.org/nightly/std/primitive.reference.html) Immutably borrows from an owned value. [Read more](https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow) [Source](https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#221) [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#impl-BorrowMut%3CT%3E-for-T) ### impl [BorrowMut](https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html "trait core::borrow::BorrowMut") for T where T: ?[Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , [Source](https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#222) [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#method.borrow_mut) #### fn [borrow\_mut](https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut) (&mut self) -> [&mut T](https://doc.rust-lang.org/nightly/std/primitive.reference.html) Mutably borrows from an owned value. [Read more](https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut) [Source](https://doc.rust-lang.org/nightly/src/core/clone.rs.html#547) [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#impl-CloneToUninit-for-T) ### impl [CloneToUninit](https://doc.rust-lang.org/nightly/core/clone/trait.CloneToUninit.html "trait core::clone::CloneToUninit") for T where T: [Clone](https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html "trait core::clone::Clone") , [Source](https://doc.rust-lang.org/nightly/src/core/clone.rs.html#549) [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#method.clone_to_uninit) #### unsafe fn [clone\_to\_uninit](https://doc.rust-lang.org/nightly/core/clone/trait.CloneToUninit.html#tymethod.clone_to_uninit) (&self, dest: [\*mut](https://doc.rust-lang.org/nightly/std/primitive.pointer.html) [u8](https://doc.rust-lang.org/nightly/std/primitive.u8.html) ) 🔬This is a nightly-only experimental API. (`clone_to_uninit`) Performs copy-assignment from `self` to `dest`. [Read more](https://doc.rust-lang.org/nightly/core/clone/trait.CloneToUninit.html#tymethod.clone_to_uninit) [Source](https://docs.rs/equivalent/1.0.2/x86_64-unknown-linux-gnu/src/equivalent/lib.rs.html#104-107) [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#impl-Comparable%3CK%3E-for-Q) ### impl [Comparable](https://docs.rs/equivalent/1.0.2/x86_64-unknown-linux-gnu/equivalent/trait.Comparable.html "trait equivalent::Comparable") for Q where Q: [Ord](https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html "trait core::cmp::Ord") + ?[Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , K: [Borrow](https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html "trait core::borrow::Borrow") + ?[Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , [Source](https://docs.rs/equivalent/1.0.2/x86_64-unknown-linux-gnu/src/equivalent/lib.rs.html#110) [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#method.compare) #### fn [compare](https://docs.rs/equivalent/1.0.2/x86_64-unknown-linux-gnu/equivalent/trait.Comparable.html#tymethod.compare) (&self, key: [&K](https://doc.rust-lang.org/nightly/std/primitive.reference.html) ) -> [Ordering](https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html "enum core::cmp::Ordering") Compare self to `key` and return their ordering. [Source](https://docs.rs/hashbrown/0.16.1/x86_64-unknown-linux-gnu/src/hashbrown/lib.rs.html#168-171) [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#impl-Equivalent%3CK%3E-for-Q) ### impl [Equivalent](https://docs.rs/hashbrown/0.16.1/x86_64-unknown-linux-gnu/hashbrown/trait.Equivalent.html "trait hashbrown::Equivalent") for Q where Q: [Eq](https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html "trait core::cmp::Eq") + ?[Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , K: [Borrow](https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html "trait core::borrow::Borrow") + ?[Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , [Source](https://docs.rs/hashbrown/0.16.1/x86_64-unknown-linux-gnu/src/hashbrown/lib.rs.html#173) [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#method.equivalent) #### fn [equivalent](https://docs.rs/hashbrown/0.16.1/x86_64-unknown-linux-gnu/hashbrown/trait.Equivalent.html#tymethod.equivalent) (&self, key: [&K](https://doc.rust-lang.org/nightly/std/primitive.reference.html) ) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) Checks if this value is equivalent to the given key. [Read more](https://docs.rs/hashbrown/0.16.1/x86_64-unknown-linux-gnu/hashbrown/trait.Equivalent.html#tymethod.equivalent) [Source](https://docs.rs/equivalent/1.0.2/x86_64-unknown-linux-gnu/src/equivalent/lib.rs.html#82-85) [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#impl-Equivalent%3CK%3E-for-Q-1) ### impl [Equivalent](https://docs.rs/equivalent/1.0.2/x86_64-unknown-linux-gnu/equivalent/trait.Equivalent.html "trait equivalent::Equivalent") for Q where Q: [Eq](https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html "trait core::cmp::Eq") + ?[Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , K: [Borrow](https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html "trait core::borrow::Borrow") + ?[Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , [Source](https://docs.rs/equivalent/1.0.2/x86_64-unknown-linux-gnu/src/equivalent/lib.rs.html#88) [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#method.equivalent-1) #### fn [equivalent](https://docs.rs/equivalent/1.0.2/x86_64-unknown-linux-gnu/equivalent/trait.Equivalent.html#tymethod.equivalent) (&self, key: [&K](https://doc.rust-lang.org/nightly/std/primitive.reference.html) ) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) Compare self to `key` and return `true` if they are equal. [Source](https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#785) [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#impl-From%3CT%3E-for-T) ### impl [From](https://doc.rust-lang.org/nightly/core/convert/trait.From.html "trait core::convert::From") for T [Source](https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#788) [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#method.from) #### fn [from](https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from) (t: T) -> T Returns the argument unchanged. [Source](https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#767-769) [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#impl-Into%3CU%3E-for-T) ### impl [Into](https://doc.rust-lang.org/nightly/core/convert/trait.Into.html "trait core::convert::Into") for T where U: [From](https://doc.rust-lang.org/nightly/core/convert/trait.From.html "trait core::convert::From") , [Source](https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#777) [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#method.into) #### fn [into](https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into) (self) -> U Calls `U::from(self)`. That is, this conversion is whatever the implementation of `[From](https://doc.rust-lang.org/nightly/core/convert/trait.From.html "trait core::convert::From") for U` chooses to do. [Source](https://docs.rs/arrow-pyarrow/58.1.0/x86_64-unknown-linux-gnu/src/arrow_pyarrow/lib.rs.html#115) [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#impl-IntoPyArrow-for-T) ### impl [IntoPyArrow](https://docs.rs/arrow-pyarrow/58.1.0/x86_64-unknown-linux-gnu/arrow_pyarrow/trait.IntoPyArrow.html "trait arrow_pyarrow::IntoPyArrow") for T where T: [ToPyArrow](https://docs.rs/arrow-pyarrow/58.1.0/x86_64-unknown-linux-gnu/arrow_pyarrow/trait.ToPyArrow.html "trait arrow_pyarrow::ToPyArrow") , [Source](https://docs.rs/arrow-pyarrow/58.1.0/x86_64-unknown-linux-gnu/src/arrow_pyarrow/lib.rs.html#116) [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#method.into_pyarrow) #### fn [into\_pyarrow](https://docs.rs/arrow-pyarrow/58.1.0/x86_64-unknown-linux-gnu/arrow_pyarrow/trait.IntoPyArrow.html#tymethod.into_pyarrow) <'py>(self, py: [Python](https://docs.rs/pyo3/0.28.2/x86_64-unknown-linux-gnu/pyo3/marker/struct.Python.html "struct pyo3::marker::Python") <'py>) -> [Result](https://doc.rust-lang.org/nightly/core/result/enum.Result.html "enum core::result::Result") <[Bound](https://docs.rs/pyo3/0.28.2/x86_64-unknown-linux-gnu/pyo3/instance/struct.Bound.html "struct pyo3::instance::Bound") <'py, [PyAny](https://docs.rs/pyo3/0.28.2/x86_64-unknown-linux-gnu/pyo3/types/any/struct.PyAny.html "struct pyo3::types::any::PyAny") \>, [PyErr](https://docs.rs/pyo3/0.28.2/x86_64-unknown-linux-gnu/pyo3/err/struct.PyErr.html "struct pyo3::err::PyErr") \> Convert the implemented type into a Python object while consuming it. [Source](https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#72-74) [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#impl-ToOwned-for-T) ### impl [ToOwned](https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html "trait alloc::borrow::ToOwned") for T where T: [Clone](https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html "trait core::clone::Clone") , [Source](https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#76) [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#associatedtype.Owned) #### type [Owned](https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned) = T The resulting type after obtaining ownership. [Source](https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#77) [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#method.to_owned) #### fn [to\_owned](https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned) (&self) -> T Creates owned data from borrowed data, usually by cloning. [Read more](https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned) [Source](https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#81) [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#method.clone_into) #### fn [clone\_into](https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into) (&self, target: [&mut T](https://doc.rust-lang.org/nightly/std/primitive.reference.html) ) Uses borrowed data to replace owned data, usually by cloning. [Read more](https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into) [Source](https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2891) [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#impl-ToString-for-T) ### impl [ToString](https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html "trait alloc::string::ToString") for T where T: [Display](https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html "trait core::fmt::Display") + ?[Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , [Source](https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2893) [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#method.to_string) #### fn [to\_string](https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html#tymethod.to_string) (&self) -> [String](https://doc.rust-lang.org/nightly/alloc/string/struct.String.html "struct alloc::string::String") Converts the given value to a `String`. [Read more](https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html#tymethod.to_string) [Source](https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#827-829) [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#impl-TryFrom%3CU%3E-for-T) ### impl [TryFrom](https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html "trait core::convert::TryFrom") for T where U: [Into](https://doc.rust-lang.org/nightly/core/convert/trait.Into.html "trait core::convert::Into") , [Source](https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#831) [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#associatedtype.Error-5) #### type [Error](https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error) = [Infallible](https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html "enum core::convert::Infallible") The type returned in the event of a conversion error. [Source](https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#834) [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#method.try_from-4) #### fn [try\_from](https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from) (value: U) -> [Result](https://doc.rust-lang.org/nightly/core/result/enum.Result.html "enum core::result::Result") >::[Error](https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error "type core::convert::TryFrom::Error") \> Performs the conversion. [Source](https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#811-813) [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#impl-TryInto%3CU%3E-for-T) ### impl [TryInto](https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html "trait core::convert::TryInto") for T where U: [TryFrom](https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html "trait core::convert::TryFrom") , [Source](https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#815) [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#associatedtype.Error-4) #### type [Error](https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error) = >::[Error](https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error "type core::convert::TryFrom::Error") The type returned in the event of a conversion error. [Source](https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#818) [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#method.try_into) #### fn [try\_into](https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into) (self) -> [Result](https://doc.rust-lang.org/nightly/core/result/enum.Result.html "enum core::result::Result") >::[Error](https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error "type core::convert::TryFrom::Error") \> Performs the conversion. [Source](https://docs.rs/ppv-lite86/0.2.21/x86_64-unknown-linux-gnu/src/ppv_lite86/types.rs.html#221-223) [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#impl-VZip%3CV%3E-for-T) ### impl [VZip](https://docs.rs/ppv-lite86/0.2.21/x86_64-unknown-linux-gnu/ppv_lite86/types/trait.VZip.html "trait ppv_lite86::types::VZip") for T where V: [MultiLane](https://docs.rs/ppv-lite86/0.2.21/x86_64-unknown-linux-gnu/ppv_lite86/types/trait.MultiLane.html "trait ppv_lite86::types::MultiLane") , [Source](https://docs.rs/ppv-lite86/0.2.21/x86_64-unknown-linux-gnu/src/ppv_lite86/types.rs.html#226) [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#method.vzip) #### fn [vzip](https://docs.rs/ppv-lite86/0.2.21/x86_64-unknown-linux-gnu/ppv_lite86/types/trait.VZip.html#tymethod.vzip) (self) -> V [Source](https://docs.rs/arrow-buffer/58.1.0/x86_64-unknown-linux-gnu/src/arrow_buffer/alloc/mod.rs.html#33) [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#impl-Allocation-for-T) ### impl [Allocation](https://docs.rs/arrow/latest/arrow/alloc/trait.Allocation.html "trait arrow::alloc::Allocation") for T where T: [RefUnwindSafe](https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html "trait core::panic::unwind_safe::RefUnwindSafe") + [Send](https://doc.rust-lang.org/nightly/core/marker/trait.Send.html "trait core::marker::Send") + [Sync](https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html "trait core::marker::Sync") , [Source](https://docs.rs/pyo3/0.28.2/x86_64-unknown-linux-gnu/src/pyo3/marker.rs.html#188) [§](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#impl-Ungil-for-T) ### impl [Ungil](https://docs.rs/pyo3/0.28.2/x86_64-unknown-linux-gnu/pyo3/marker/trait.Ungil.html "trait pyo3::marker::Ungil") for T where T: [Send](https://doc.rust-lang.org/nightly/core/marker/trait.Send.html "trait core::marker::Send") , --- # AsArray in arrow::array - Rust [Docs.rs](https://docs.rs/) * [arrow-58.1.0](https://docs.rs/arrow/latest/arrow/array/trait.AsArray.html# "Rust implementation of Apache Arrow") * arrow 58.1.0 * [Permalink](https://docs.rs/arrow/58.1.0/arrow/array/trait.AsArray.html "Get a link to this specific version") * [Docs.rs crate page](https://docs.rs/crate/arrow/latest "See arrow in docs.rs") * [Apache-2.0](https://spdx.org/licenses/Apache-2.0) * Links * [Homepage](https://github.com/apache/arrow-rs) * [Repository](https://github.com/apache/arrow-rs) * [crates.io](https://crates.io/crates/arrow "See arrow in crates.io") * [Source](https://docs.rs/crate/arrow/latest/source/ "Browse source of arrow-58.1.0") * Owners * [andygrove](https://crates.io/users/andygrove) * [kou](https://crates.io/users/kou) * [kszucs](https://crates.io/users/kszucs) * [xhochy](https://crates.io/users/xhochy) * [nevi-me](https://crates.io/users/nevi-me) * [alamb](https://crates.io/users/alamb) * [tustvold](https://crates.io/users/tustvold) * Dependencies * * [arrow-arith ^58.1.0 _normal_](https://docs.rs/arrow-arith/^58.1.0/) * [arrow-array ^58.1.0 _normal_](https://docs.rs/arrow-array/^58.1.0/) * [arrow-buffer ^58.1.0 _normal_](https://docs.rs/arrow-buffer/^58.1.0/) * [arrow-cast ^58.1.0 _normal_](https://docs.rs/arrow-cast/^58.1.0/) * [arrow-csv ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-csv/^58.1.0/) * [arrow-data ^58.1.0 _normal_](https://docs.rs/arrow-data/^58.1.0/) * [arrow-ipc ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-ipc/^58.1.0/) * [arrow-json ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-json/^58.1.0/) * [arrow-ord ^58.1.0 _normal_](https://docs.rs/arrow-ord/^58.1.0/) * [arrow-pyarrow ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-pyarrow/^58.1.0/) * [arrow-row ^58.1.0 _normal_](https://docs.rs/arrow-row/^58.1.0/) * [arrow-schema ^58.1.0 _normal_](https://docs.rs/arrow-schema/^58.1.0/) * [arrow-select ^58.1.0 _normal_](https://docs.rs/arrow-select/^58.1.0/) * [arrow-string ^58.1.0 _normal_](https://docs.rs/arrow-string/^58.1.0/) * [half ^2.1 _normal_ _optional_](https://docs.rs/half/^2.1/) * [rand ^0.9 _normal_ _optional_](https://docs.rs/rand/^0.9/) * [bytes ^1.9 _dev_](https://docs.rs/bytes/^1.9/) * [chrono ^0.4.40 _dev_](https://docs.rs/chrono/^0.4.40/) * [criterion ^0.8.0 _dev_](https://docs.rs/criterion/^0.8.0/) * [half ^2.1 _dev_](https://docs.rs/half/^2.1/) * [memmap2 ^0.9.3 _dev_](https://docs.rs/memmap2/^0.9.3/) * [rand ^0.9 _dev_](https://docs.rs/rand/^0.9/) * [serde ^1.0 _dev_](https://docs.rs/serde/^1.0/) * Versions * [**100%** of the crate is documented](https://docs.rs/crate/arrow/latest) * [Platform](https://docs.rs/arrow/latest/arrow/array/trait.AsArray.html#) * [x86\_64-unknown-linux-gnu](https://docs.rs/crate/arrow/latest/target-redirect/arrow/array/trait.AsArray.html) * [Feature flags](https://docs.rs/crate/arrow/latest/features "Browse available feature flags of arrow-58.1.0") * [docs.rs](https://docs.rs/arrow/latest/arrow/array/trait.AsArray.html#) * [About docs.rs](https://docs.rs/about) * [Badges](https://docs.rs/about/badges) * [Builds](https://docs.rs/about/builds) * [Metadata](https://docs.rs/about/metadata) * [Shorthand URLs](https://docs.rs/about/redirections) * [Download](https://docs.rs/about/download) * [Rustdoc JSON](https://docs.rs/about/rustdoc-json) * [Build queue](https://docs.rs/releases/queue) * [Privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#docs.rs) * [Rust](https://docs.rs/arrow/latest/arrow/array/trait.AsArray.html#) * [Rust website](https://www.rust-lang.org/) * [The Book](https://doc.rust-lang.org/book/) * [Standard Library API Reference](https://doc.rust-lang.org/std/) * [Rust by Example](https://doc.rust-lang.org/rust-by-example/) * [The Cargo Guide](https://doc.rust-lang.org/cargo/guide/) * [Clippy Documentation](https://doc.rust-lang.org/nightly/clippy) [Skip to main content](https://docs.rs/arrow/latest/arrow/array/trait.AsArray.html#main-content) [AsArray](https://docs.rs/arrow/latest/arrow/array/trait.AsArray.html#) ------------------------------------------------------------------------ [arrow](https://docs.rs/arrow/latest/arrow/index.html) ::[array](https://docs.rs/arrow/latest/arrow/array/index.html) Trait AsArray Copy item path ============================ [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#835) pub trait AsArray: Sealed { Show 36 methods // Required methods fn as_boolean_opt(&self) -> Option<&BooleanArray>; fn as_primitive_opt(&self) -> Option<&PrimitiveArray> where T: ArrowPrimitiveType; fn as_bytes_opt(&self) -> Option<&GenericByteArray> where T: ByteArrayType; fn as_byte_view_opt(&self) -> Option<&GenericByteViewArray> where T: ByteViewType; fn as_struct_opt(&self) -> Option<&StructArray>; fn as_union_opt(&self) -> Option<&UnionArray>; fn as_list_opt(&self) -> Option<&GenericListArray> where O: OffsetSizeTrait; fn as_list_view_opt(&self) -> Option<&GenericListViewArray> where O: OffsetSizeTrait; fn as_fixed_size_binary_opt(&self) -> Option<&FixedSizeBinaryArray>; fn as_fixed_size_list_opt(&self) -> Option<&FixedSizeListArray>; fn as_map_opt(&self) -> Option<&MapArray>; fn as_dictionary_opt(&self) -> Option<&DictionaryArray> where K: ArrowDictionaryKeyType; fn as_run_opt(&self) -> Option<&RunArray> where K: RunEndIndexType; fn as_any_dictionary_opt(&self) -> Option<&dyn AnyDictionaryArray>; // Provided methods fn as_boolean(&self) -> &BooleanArray { ... } fn as_primitive(&self) -> &PrimitiveArray where T: ArrowPrimitiveType { ... } fn as_bytes(&self) -> &GenericByteArray where T: ByteArrayType { ... } fn as_string_opt( &self, ) -> Option<&GenericByteArray>> where O: OffsetSizeTrait { ... } fn as_string(&self) -> &GenericByteArray> where O: OffsetSizeTrait { ... } fn as_binary_opt( &self, ) -> Option<&GenericByteArray>> where O: OffsetSizeTrait { ... } fn as_binary(&self) -> &GenericByteArray> where O: OffsetSizeTrait { ... } fn as_string_view_opt( &self, ) -> Option<&GenericByteViewArray> { ... } fn as_string_view(&self) -> &GenericByteViewArray { ... } fn as_binary_view_opt( &self, ) -> Option<&GenericByteViewArray> { ... } fn as_binary_view(&self) -> &GenericByteViewArray { ... } fn as_byte_view(&self) -> &GenericByteViewArray where T: ByteViewType { ... } fn as_struct(&self) -> &StructArray { ... } fn as_union(&self) -> &UnionArray { ... } fn as_list(&self) -> &GenericListArray where O: OffsetSizeTrait { ... } fn as_list_view(&self) -> &GenericListViewArray where O: OffsetSizeTrait { ... } fn as_fixed_size_binary(&self) -> &FixedSizeBinaryArray { ... } fn as_fixed_size_list(&self) -> &FixedSizeListArray { ... } fn as_map(&self) -> &MapArray { ... } fn as_dictionary(&self) -> &DictionaryArray where K: ArrowDictionaryKeyType { ... } fn as_run(&self) -> &RunArray where K: RunEndIndexType { ... } fn as_any_dictionary(&self) -> &dyn AnyDictionaryArray { ... } } Expand description An extension trait for `dyn Array` that provides ergonomic downcasting let col = Arc::new(Int32Array::from(vec![1, 2, 3])) as ArrayRef; assert_eq!(col.as_primitive::().values(), &[1, 2, 3]); Required Methods[§](https://docs.rs/arrow/latest/arrow/array/trait.AsArray.html#required-methods) -------------------------------------------------------------------------------------------------- [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#837) #### fn [as\_boolean\_opt](https://docs.rs/arrow/latest/arrow/array/trait.AsArray.html#tymethod.as_boolean_opt) (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <&[BooleanArray](https://docs.rs/arrow/latest/arrow/array/struct.BooleanArray.html "struct arrow::array::BooleanArray") \> Downcast this to a [`BooleanArray`](https://docs.rs/arrow/latest/arrow/array/struct.BooleanArray.html "struct arrow::array::BooleanArray") returning `None` if not possible [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#845) #### fn [as\_primitive\_opt](https://docs.rs/arrow/latest/arrow/array/trait.AsArray.html#tymethod.as_primitive_opt) (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <&[PrimitiveArray](https://docs.rs/arrow/latest/arrow/array/struct.PrimitiveArray.html "struct arrow::array::PrimitiveArray") > where T: [ArrowPrimitiveType](https://docs.rs/arrow/latest/arrow/array/trait.ArrowPrimitiveType.html "trait arrow::array::ArrowPrimitiveType") , Downcast this to a [`PrimitiveArray`](https://docs.rs/arrow/latest/arrow/array/struct.PrimitiveArray.html "struct arrow::array::PrimitiveArray") returning `None` if not possible [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#853) #### fn [as\_bytes\_opt](https://docs.rs/arrow/latest/arrow/array/trait.AsArray.html#tymethod.as_bytes_opt) (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <&[GenericByteArray](https://docs.rs/arrow/latest/arrow/array/struct.GenericByteArray.html "struct arrow::array::GenericByteArray") > where T: [ByteArrayType](https://docs.rs/arrow/latest/arrow/datatypes/trait.ByteArrayType.html "trait arrow::datatypes::ByteArrayType") , Downcast this to a [`GenericByteArray`](https://docs.rs/arrow/latest/arrow/array/struct.GenericByteArray.html "struct arrow::array::GenericByteArray") returning `None` if not possible [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#901) #### fn [as\_byte\_view\_opt](https://docs.rs/arrow/latest/arrow/array/trait.AsArray.html#tymethod.as_byte_view_opt) (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <&[GenericByteViewArray](https://docs.rs/arrow/latest/arrow/array/struct.GenericByteViewArray.html "struct arrow::array::GenericByteViewArray") > where T: [ByteViewType](https://docs.rs/arrow/latest/arrow/datatypes/trait.ByteViewType.html "trait arrow::datatypes::ByteViewType") , Downcast this to a [`GenericByteViewArray`](https://docs.rs/arrow/latest/arrow/array/struct.GenericByteViewArray.html "struct arrow::array::GenericByteViewArray") returning `None` if not possible [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#909) #### fn [as\_struct\_opt](https://docs.rs/arrow/latest/arrow/array/trait.AsArray.html#tymethod.as_struct_opt) (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <&[StructArray](https://docs.rs/arrow/latest/arrow/array/struct.StructArray.html "struct arrow::array::StructArray") \> Downcast this to a [`StructArray`](https://docs.rs/arrow/latest/arrow/array/struct.StructArray.html "struct arrow::array::StructArray") returning `None` if not possible [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#917) #### fn [as\_union\_opt](https://docs.rs/arrow/latest/arrow/array/trait.AsArray.html#tymethod.as_union_opt) (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <&[UnionArray](https://docs.rs/arrow/latest/arrow/array/struct.UnionArray.html "struct arrow::array::UnionArray") \> Downcast this to a [`UnionArray`](https://docs.rs/arrow/latest/arrow/array/struct.UnionArray.html "struct arrow::array::UnionArray") returning `None` if not possible [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#925) #### fn [as\_list\_opt](https://docs.rs/arrow/latest/arrow/array/trait.AsArray.html#tymethod.as_list_opt) (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <&[GenericListArray](https://docs.rs/arrow/latest/arrow/array/struct.GenericListArray.html "struct arrow::array::GenericListArray") > where O: [OffsetSizeTrait](https://docs.rs/arrow/latest/arrow/array/trait.OffsetSizeTrait.html "trait arrow::array::OffsetSizeTrait") , Downcast this to a [`GenericListArray`](https://docs.rs/arrow/latest/arrow/array/struct.GenericListArray.html "struct arrow::array::GenericListArray") returning `None` if not possible [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#933) #### fn [as\_list\_view\_opt](https://docs.rs/arrow/latest/arrow/array/trait.AsArray.html#tymethod.as_list_view_opt) (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <&[GenericListViewArray](https://docs.rs/arrow/latest/arrow/array/struct.GenericListViewArray.html "struct arrow::array::GenericListViewArray") > where O: [OffsetSizeTrait](https://docs.rs/arrow/latest/arrow/array/trait.OffsetSizeTrait.html "trait arrow::array::OffsetSizeTrait") , Downcast this to a [`GenericListViewArray`](https://docs.rs/arrow/latest/arrow/array/struct.GenericListViewArray.html "struct arrow::array::GenericListViewArray") returning `None` if not possible [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#941) #### fn [as\_fixed\_size\_binary\_opt](https://docs.rs/arrow/latest/arrow/array/trait.AsArray.html#tymethod.as_fixed_size_binary_opt) (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <&[FixedSizeBinaryArray](https://docs.rs/arrow/latest/arrow/array/struct.FixedSizeBinaryArray.html "struct arrow::array::FixedSizeBinaryArray") \> Downcast this to a [`FixedSizeBinaryArray`](https://docs.rs/arrow/latest/arrow/array/struct.FixedSizeBinaryArray.html "struct arrow::array::FixedSizeBinaryArray") returning `None` if not possible [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#950) #### fn [as\_fixed\_size\_list\_opt](https://docs.rs/arrow/latest/arrow/array/trait.AsArray.html#tymethod.as_fixed_size_list_opt) (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <&[FixedSizeListArray](https://docs.rs/arrow/latest/arrow/array/struct.FixedSizeListArray.html "struct arrow::array::FixedSizeListArray") \> Downcast this to a [`FixedSizeListArray`](https://docs.rs/arrow/latest/arrow/array/struct.FixedSizeListArray.html "struct arrow::array::FixedSizeListArray") returning `None` if not possible [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#959) #### fn [as\_map\_opt](https://docs.rs/arrow/latest/arrow/array/trait.AsArray.html#tymethod.as_map_opt) (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <&[MapArray](https://docs.rs/arrow/latest/arrow/array/struct.MapArray.html "struct arrow::array::MapArray") \> Downcast this to a [`MapArray`](https://docs.rs/arrow/latest/arrow/array/struct.MapArray.html "struct arrow::array::MapArray") returning `None` if not possible [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#967) #### fn [as\_dictionary\_opt](https://docs.rs/arrow/latest/arrow/array/trait.AsArray.html#tymethod.as_dictionary_opt) (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <&[DictionaryArray](https://docs.rs/arrow/latest/arrow/array/struct.DictionaryArray.html "struct arrow::array::DictionaryArray") > where K: [ArrowDictionaryKeyType](https://docs.rs/arrow/latest/arrow/datatypes/trait.ArrowDictionaryKeyType.html "trait arrow::datatypes::ArrowDictionaryKeyType") , Downcast this to a [`DictionaryArray`](https://docs.rs/arrow/latest/arrow/array/struct.DictionaryArray.html "struct arrow::array::DictionaryArray") returning `None` if not possible [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#975) #### fn [as\_run\_opt](https://docs.rs/arrow/latest/arrow/array/trait.AsArray.html#tymethod.as_run_opt) (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <&[RunArray](https://docs.rs/arrow/latest/arrow/array/struct.RunArray.html "struct arrow::array::RunArray") > where K: [RunEndIndexType](https://docs.rs/arrow/latest/arrow/datatypes/trait.RunEndIndexType.html "trait arrow::datatypes::RunEndIndexType") , Downcast this to a [`RunArray`](https://docs.rs/arrow/latest/arrow/array/struct.RunArray.html "struct arrow::array::RunArray") returning `None` if not possible [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#983) #### fn [as\_any\_dictionary\_opt](https://docs.rs/arrow/latest/arrow/array/trait.AsArray.html#tymethod.as_any_dictionary_opt) (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <&dyn [AnyDictionaryArray](https://docs.rs/arrow/latest/arrow/array/trait.AnyDictionaryArray.html "trait arrow::array::AnyDictionaryArray") \> Downcasts this to a [`AnyDictionaryArray`](https://docs.rs/arrow/latest/arrow/array/trait.AnyDictionaryArray.html "trait arrow::array::AnyDictionaryArray") returning `None` if not possible Provided Methods[§](https://docs.rs/arrow/latest/arrow/array/trait.AsArray.html#provided-methods) -------------------------------------------------------------------------------------------------- [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#840) #### fn [as\_boolean](https://docs.rs/arrow/latest/arrow/array/trait.AsArray.html#method.as_boolean) (&self) -> &[BooleanArray](https://docs.rs/arrow/latest/arrow/array/struct.BooleanArray.html "struct arrow::array::BooleanArray") Downcast this to a [`BooleanArray`](https://docs.rs/arrow/latest/arrow/array/struct.BooleanArray.html "struct arrow::array::BooleanArray") panicking if not possible [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#848) #### fn [as\_primitive](https://docs.rs/arrow/latest/arrow/array/trait.AsArray.html#method.as_primitive) (&self) -> &[PrimitiveArray](https://docs.rs/arrow/latest/arrow/array/struct.PrimitiveArray.html "struct arrow::array::PrimitiveArray") where T: [ArrowPrimitiveType](https://docs.rs/arrow/latest/arrow/array/trait.ArrowPrimitiveType.html "trait arrow::array::ArrowPrimitiveType") , Downcast this to a [`PrimitiveArray`](https://docs.rs/arrow/latest/arrow/array/struct.PrimitiveArray.html "struct arrow::array::PrimitiveArray") panicking if not possible [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#856) #### fn [as\_bytes](https://docs.rs/arrow/latest/arrow/array/trait.AsArray.html#method.as_bytes) (&self) -> &[GenericByteArray](https://docs.rs/arrow/latest/arrow/array/struct.GenericByteArray.html "struct arrow::array::GenericByteArray") where T: [ByteArrayType](https://docs.rs/arrow/latest/arrow/datatypes/trait.ByteArrayType.html "trait arrow::datatypes::ByteArrayType") , Downcast this to a [`GenericByteArray`](https://docs.rs/arrow/latest/arrow/array/struct.GenericByteArray.html "struct arrow::array::GenericByteArray") panicking if not possible [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#861) #### fn [as\_string\_opt](https://docs.rs/arrow/latest/arrow/array/trait.AsArray.html#method.as_string_opt) (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <&[GenericByteArray](https://docs.rs/arrow/latest/arrow/array/struct.GenericByteArray.html "struct arrow::array::GenericByteArray") <[GenericStringType](https://docs.rs/arrow/latest/arrow/datatypes/struct.GenericStringType.html "struct arrow::datatypes::GenericStringType") >> where O: [OffsetSizeTrait](https://docs.rs/arrow/latest/arrow/array/trait.OffsetSizeTrait.html "trait arrow::array::OffsetSizeTrait") , Downcast this to a [`GenericStringArray`](https://docs.rs/arrow/latest/arrow/array/type.GenericStringArray.html "type arrow::array::GenericStringArray") returning `None` if not possible [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#866) #### fn [as\_string](https://docs.rs/arrow/latest/arrow/array/trait.AsArray.html#method.as_string) (&self) -> &[GenericByteArray](https://docs.rs/arrow/latest/arrow/array/struct.GenericByteArray.html "struct arrow::array::GenericByteArray") <[GenericStringType](https://docs.rs/arrow/latest/arrow/datatypes/struct.GenericStringType.html "struct arrow::datatypes::GenericStringType") > where O: [OffsetSizeTrait](https://docs.rs/arrow/latest/arrow/array/trait.OffsetSizeTrait.html "trait arrow::array::OffsetSizeTrait") , Downcast this to a [`GenericStringArray`](https://docs.rs/arrow/latest/arrow/array/type.GenericStringArray.html "type arrow::array::GenericStringArray") panicking if not possible [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#871) #### fn [as\_binary\_opt](https://docs.rs/arrow/latest/arrow/array/trait.AsArray.html#method.as_binary_opt) (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <&[GenericByteArray](https://docs.rs/arrow/latest/arrow/array/struct.GenericByteArray.html "struct arrow::array::GenericByteArray") <[GenericBinaryType](https://docs.rs/arrow/latest/arrow/datatypes/struct.GenericBinaryType.html "struct arrow::datatypes::GenericBinaryType") >> where O: [OffsetSizeTrait](https://docs.rs/arrow/latest/arrow/array/trait.OffsetSizeTrait.html "trait arrow::array::OffsetSizeTrait") , Downcast this to a [`GenericBinaryArray`](https://docs.rs/arrow/latest/arrow/array/type.GenericBinaryArray.html "type arrow::array::GenericBinaryArray") returning `None` if not possible [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#876) #### fn [as\_binary](https://docs.rs/arrow/latest/arrow/array/trait.AsArray.html#method.as_binary) (&self) -> &[GenericByteArray](https://docs.rs/arrow/latest/arrow/array/struct.GenericByteArray.html "struct arrow::array::GenericByteArray") <[GenericBinaryType](https://docs.rs/arrow/latest/arrow/datatypes/struct.GenericBinaryType.html "struct arrow::datatypes::GenericBinaryType") > where O: [OffsetSizeTrait](https://docs.rs/arrow/latest/arrow/array/trait.OffsetSizeTrait.html "trait arrow::array::OffsetSizeTrait") , Downcast this to a [`GenericBinaryArray`](https://docs.rs/arrow/latest/arrow/array/type.GenericBinaryArray.html "type arrow::array::GenericBinaryArray") panicking if not possible [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#881) #### fn [as\_string\_view\_opt](https://docs.rs/arrow/latest/arrow/array/trait.AsArray.html#method.as_string_view_opt) (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <&[GenericByteViewArray](https://docs.rs/arrow/latest/arrow/array/struct.GenericByteViewArray.html "struct arrow::array::GenericByteViewArray") <[StringViewType](https://docs.rs/arrow/latest/arrow/datatypes/struct.StringViewType.html "struct arrow::datatypes::StringViewType") \>> Downcast this to a [`StringViewArray`](https://docs.rs/arrow/latest/arrow/array/type.StringViewArray.html "type arrow::array::StringViewArray") returning `None` if not possible [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#886) #### fn [as\_string\_view](https://docs.rs/arrow/latest/arrow/array/trait.AsArray.html#method.as_string_view) (&self) -> &[GenericByteViewArray](https://docs.rs/arrow/latest/arrow/array/struct.GenericByteViewArray.html "struct arrow::array::GenericByteViewArray") <[StringViewType](https://docs.rs/arrow/latest/arrow/datatypes/struct.StringViewType.html "struct arrow::datatypes::StringViewType") \> Downcast this to a [`StringViewArray`](https://docs.rs/arrow/latest/arrow/array/type.StringViewArray.html "type arrow::array::StringViewArray") panicking if not possible [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#891) #### fn [as\_binary\_view\_opt](https://docs.rs/arrow/latest/arrow/array/trait.AsArray.html#method.as_binary_view_opt) (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <&[GenericByteViewArray](https://docs.rs/arrow/latest/arrow/array/struct.GenericByteViewArray.html "struct arrow::array::GenericByteViewArray") <[BinaryViewType](https://docs.rs/arrow/latest/arrow/datatypes/struct.BinaryViewType.html "struct arrow::datatypes::BinaryViewType") \>> Downcast this to a [`BinaryViewArray`](https://docs.rs/arrow/latest/arrow/array/type.BinaryViewArray.html "type arrow::array::BinaryViewArray") returning `None` if not possible [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#896) #### fn [as\_binary\_view](https://docs.rs/arrow/latest/arrow/array/trait.AsArray.html#method.as_binary_view) (&self) -> &[GenericByteViewArray](https://docs.rs/arrow/latest/arrow/array/struct.GenericByteViewArray.html "struct arrow::array::GenericByteViewArray") <[BinaryViewType](https://docs.rs/arrow/latest/arrow/datatypes/struct.BinaryViewType.html "struct arrow::datatypes::BinaryViewType") \> Downcast this to a [`BinaryViewArray`](https://docs.rs/arrow/latest/arrow/array/type.BinaryViewArray.html "type arrow::array::BinaryViewArray") panicking if not possible [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#904) #### fn [as\_byte\_view](https://docs.rs/arrow/latest/arrow/array/trait.AsArray.html#method.as_byte_view) (&self) -> &[GenericByteViewArray](https://docs.rs/arrow/latest/arrow/array/struct.GenericByteViewArray.html "struct arrow::array::GenericByteViewArray") where T: [ByteViewType](https://docs.rs/arrow/latest/arrow/datatypes/trait.ByteViewType.html "trait arrow::datatypes::ByteViewType") , Downcast this to a [`GenericByteViewArray`](https://docs.rs/arrow/latest/arrow/array/struct.GenericByteViewArray.html "struct arrow::array::GenericByteViewArray") panicking if not possible [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#912) #### fn [as\_struct](https://docs.rs/arrow/latest/arrow/array/trait.AsArray.html#method.as_struct) (&self) -> &[StructArray](https://docs.rs/arrow/latest/arrow/array/struct.StructArray.html "struct arrow::array::StructArray") Downcast this to a [`StructArray`](https://docs.rs/arrow/latest/arrow/array/struct.StructArray.html "struct arrow::array::StructArray") panicking if not possible [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#920) #### fn [as\_union](https://docs.rs/arrow/latest/arrow/array/trait.AsArray.html#method.as_union) (&self) -> &[UnionArray](https://docs.rs/arrow/latest/arrow/array/struct.UnionArray.html "struct arrow::array::UnionArray") Downcast this to a [`UnionArray`](https://docs.rs/arrow/latest/arrow/array/struct.UnionArray.html "struct arrow::array::UnionArray") panicking if not possible [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#928) #### fn [as\_list](https://docs.rs/arrow/latest/arrow/array/trait.AsArray.html#method.as_list) (&self) -> &[GenericListArray](https://docs.rs/arrow/latest/arrow/array/struct.GenericListArray.html "struct arrow::array::GenericListArray") where O: [OffsetSizeTrait](https://docs.rs/arrow/latest/arrow/array/trait.OffsetSizeTrait.html "trait arrow::array::OffsetSizeTrait") , Downcast this to a [`GenericListArray`](https://docs.rs/arrow/latest/arrow/array/struct.GenericListArray.html "struct arrow::array::GenericListArray") panicking if not possible [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#936) #### fn [as\_list\_view](https://docs.rs/arrow/latest/arrow/array/trait.AsArray.html#method.as_list_view) (&self) -> &[GenericListViewArray](https://docs.rs/arrow/latest/arrow/array/struct.GenericListViewArray.html "struct arrow::array::GenericListViewArray") where O: [OffsetSizeTrait](https://docs.rs/arrow/latest/arrow/array/trait.OffsetSizeTrait.html "trait arrow::array::OffsetSizeTrait") , Downcast this to a [`GenericListViewArray`](https://docs.rs/arrow/latest/arrow/array/struct.GenericListViewArray.html "struct arrow::array::GenericListViewArray") panicking if not possible [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#944) #### fn [as\_fixed\_size\_binary](https://docs.rs/arrow/latest/arrow/array/trait.AsArray.html#method.as_fixed_size_binary) (&self) -> &[FixedSizeBinaryArray](https://docs.rs/arrow/latest/arrow/array/struct.FixedSizeBinaryArray.html "struct arrow::array::FixedSizeBinaryArray") Downcast this to a [`FixedSizeBinaryArray`](https://docs.rs/arrow/latest/arrow/array/struct.FixedSizeBinaryArray.html "struct arrow::array::FixedSizeBinaryArray") panicking if not possible [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#953) #### fn [as\_fixed\_size\_list](https://docs.rs/arrow/latest/arrow/array/trait.AsArray.html#method.as_fixed_size_list) (&self) -> &[FixedSizeListArray](https://docs.rs/arrow/latest/arrow/array/struct.FixedSizeListArray.html "struct arrow::array::FixedSizeListArray") Downcast this to a [`FixedSizeListArray`](https://docs.rs/arrow/latest/arrow/array/struct.FixedSizeListArray.html "struct arrow::array::FixedSizeListArray") panicking if not possible [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#962) #### fn [as\_map](https://docs.rs/arrow/latest/arrow/array/trait.AsArray.html#method.as_map) (&self) -> &[MapArray](https://docs.rs/arrow/latest/arrow/array/struct.MapArray.html "struct arrow::array::MapArray") Downcast this to a [`MapArray`](https://docs.rs/arrow/latest/arrow/array/struct.MapArray.html "struct arrow::array::MapArray") panicking if not possible [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#970) #### fn [as\_dictionary](https://docs.rs/arrow/latest/arrow/array/trait.AsArray.html#method.as_dictionary) (&self) -> &[DictionaryArray](https://docs.rs/arrow/latest/arrow/array/struct.DictionaryArray.html "struct arrow::array::DictionaryArray") where K: [ArrowDictionaryKeyType](https://docs.rs/arrow/latest/arrow/datatypes/trait.ArrowDictionaryKeyType.html "trait arrow::datatypes::ArrowDictionaryKeyType") , Downcast this to a [`DictionaryArray`](https://docs.rs/arrow/latest/arrow/array/struct.DictionaryArray.html "struct arrow::array::DictionaryArray") panicking if not possible [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#978) #### fn [as\_run](https://docs.rs/arrow/latest/arrow/array/trait.AsArray.html#method.as_run) (&self) -> &[RunArray](https://docs.rs/arrow/latest/arrow/array/struct.RunArray.html "struct arrow::array::RunArray") where K: [RunEndIndexType](https://docs.rs/arrow/latest/arrow/datatypes/trait.RunEndIndexType.html "trait arrow::datatypes::RunEndIndexType") , Downcast this to a [`RunArray`](https://docs.rs/arrow/latest/arrow/array/struct.RunArray.html "struct arrow::array::RunArray") panicking if not possible [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#986) #### fn [as\_any\_dictionary](https://docs.rs/arrow/latest/arrow/array/trait.AsArray.html#method.as_any_dictionary) (&self) -> &dyn [AnyDictionaryArray](https://docs.rs/arrow/latest/arrow/array/trait.AnyDictionaryArray.html "trait arrow::array::AnyDictionaryArray") Downcasts this to a [`AnyDictionaryArray`](https://docs.rs/arrow/latest/arrow/array/trait.AnyDictionaryArray.html "trait arrow::array::AnyDictionaryArray") panicking if not possible Dyn Compatibility[§](https://docs.rs/arrow/latest/arrow/array/trait.AsArray.html#dyn-compatibility) ---------------------------------------------------------------------------------------------------- This trait is **not** [dyn compatible](https://doc.rust-lang.org/nightly/reference/items/traits.html#dyn-compatibility) . _In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe._ Implementations on Foreign Types[§](https://docs.rs/arrow/latest/arrow/array/trait.AsArray.html#foreign-impls) --------------------------------------------------------------------------------------------------------------- [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#1055) [§](https://docs.rs/arrow/latest/arrow/array/trait.AsArray.html#impl-AsArray-for-Arc%3Cdyn+Array%3E) ### impl [AsArray](https://docs.rs/arrow/latest/arrow/array/trait.AsArray.html "trait arrow::array::AsArray") for [Arc](https://doc.rust-lang.org/nightly/alloc/sync/struct.Arc.html "struct alloc::sync::Arc") [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#1056) [§](https://docs.rs/arrow/latest/arrow/array/trait.AsArray.html#method.as_boolean_opt) #### fn [as\_boolean\_opt](https://docs.rs/arrow/latest/arrow/array/trait.AsArray.html#tymethod.as_boolean_opt) (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <&[BooleanArray](https://docs.rs/arrow/latest/arrow/array/struct.BooleanArray.html "struct arrow::array::BooleanArray") \> [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#1060) [§](https://docs.rs/arrow/latest/arrow/array/trait.AsArray.html#method.as_primitive_opt) #### fn [as\_primitive\_opt](https://docs.rs/arrow/latest/arrow/array/trait.AsArray.html#tymethod.as_primitive_opt) (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <&[PrimitiveArray](https://docs.rs/arrow/latest/arrow/array/struct.PrimitiveArray.html "struct arrow::array::PrimitiveArray") > where T: [ArrowPrimitiveType](https://docs.rs/arrow/latest/arrow/array/trait.ArrowPrimitiveType.html "trait arrow::array::ArrowPrimitiveType") , [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#1064) [§](https://docs.rs/arrow/latest/arrow/array/trait.AsArray.html#method.as_bytes_opt) #### fn [as\_bytes\_opt](https://docs.rs/arrow/latest/arrow/array/trait.AsArray.html#tymethod.as_bytes_opt) (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <&[GenericByteArray](https://docs.rs/arrow/latest/arrow/array/struct.GenericByteArray.html "struct arrow::array::GenericByteArray") > where T: [ByteArrayType](https://docs.rs/arrow/latest/arrow/datatypes/trait.ByteArrayType.html "trait arrow::datatypes::ByteArrayType") , [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#1068) [§](https://docs.rs/arrow/latest/arrow/array/trait.AsArray.html#method.as_byte_view_opt) #### fn [as\_byte\_view\_opt](https://docs.rs/arrow/latest/arrow/array/trait.AsArray.html#tymethod.as_byte_view_opt) (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <&[GenericByteViewArray](https://docs.rs/arrow/latest/arrow/array/struct.GenericByteViewArray.html "struct arrow::array::GenericByteViewArray") > where T: [ByteViewType](https://docs.rs/arrow/latest/arrow/datatypes/trait.ByteViewType.html "trait arrow::datatypes::ByteViewType") , [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#1072) [§](https://docs.rs/arrow/latest/arrow/array/trait.AsArray.html#method.as_struct_opt) #### fn [as\_struct\_opt](https://docs.rs/arrow/latest/arrow/array/trait.AsArray.html#tymethod.as_struct_opt) (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <&[StructArray](https://docs.rs/arrow/latest/arrow/array/struct.StructArray.html "struct arrow::array::StructArray") \> [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#1076) [§](https://docs.rs/arrow/latest/arrow/array/trait.AsArray.html#method.as_union_opt) #### fn [as\_union\_opt](https://docs.rs/arrow/latest/arrow/array/trait.AsArray.html#tymethod.as_union_opt) (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <&[UnionArray](https://docs.rs/arrow/latest/arrow/array/struct.UnionArray.html "struct arrow::array::UnionArray") \> [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#1080) [§](https://docs.rs/arrow/latest/arrow/array/trait.AsArray.html#method.as_list_opt) #### fn [as\_list\_opt](https://docs.rs/arrow/latest/arrow/array/trait.AsArray.html#tymethod.as_list_opt) (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <&[GenericListArray](https://docs.rs/arrow/latest/arrow/array/struct.GenericListArray.html "struct arrow::array::GenericListArray") > where O: [OffsetSizeTrait](https://docs.rs/arrow/latest/arrow/array/trait.OffsetSizeTrait.html "trait arrow::array::OffsetSizeTrait") , [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#1084) [§](https://docs.rs/arrow/latest/arrow/array/trait.AsArray.html#method.as_list_view_opt) #### fn [as\_list\_view\_opt](https://docs.rs/arrow/latest/arrow/array/trait.AsArray.html#tymethod.as_list_view_opt) (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <&[GenericListViewArray](https://docs.rs/arrow/latest/arrow/array/struct.GenericListViewArray.html "struct arrow::array::GenericListViewArray") > where O: [OffsetSizeTrait](https://docs.rs/arrow/latest/arrow/array/trait.OffsetSizeTrait.html "trait arrow::array::OffsetSizeTrait") , [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#1088) [§](https://docs.rs/arrow/latest/arrow/array/trait.AsArray.html#method.as_fixed_size_binary_opt) #### fn [as\_fixed\_size\_binary\_opt](https://docs.rs/arrow/latest/arrow/array/trait.AsArray.html#tymethod.as_fixed_size_binary_opt) (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <&[FixedSizeBinaryArray](https://docs.rs/arrow/latest/arrow/array/struct.FixedSizeBinaryArray.html "struct arrow::array::FixedSizeBinaryArray") \> [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#1092) [§](https://docs.rs/arrow/latest/arrow/array/trait.AsArray.html#method.as_fixed_size_list_opt) #### fn [as\_fixed\_size\_list\_opt](https://docs.rs/arrow/latest/arrow/array/trait.AsArray.html#tymethod.as_fixed_size_list_opt) (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <&[FixedSizeListArray](https://docs.rs/arrow/latest/arrow/array/struct.FixedSizeListArray.html "struct arrow::array::FixedSizeListArray") \> [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#1096) [§](https://docs.rs/arrow/latest/arrow/array/trait.AsArray.html#method.as_map_opt) #### fn [as\_map\_opt](https://docs.rs/arrow/latest/arrow/array/trait.AsArray.html#tymethod.as_map_opt) (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <&[MapArray](https://docs.rs/arrow/latest/arrow/array/struct.MapArray.html "struct arrow::array::MapArray") \> [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#1100) [§](https://docs.rs/arrow/latest/arrow/array/trait.AsArray.html#method.as_dictionary_opt) #### fn [as\_dictionary\_opt](https://docs.rs/arrow/latest/arrow/array/trait.AsArray.html#tymethod.as_dictionary_opt) (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <&[DictionaryArray](https://docs.rs/arrow/latest/arrow/array/struct.DictionaryArray.html "struct arrow::array::DictionaryArray") > where K: [ArrowDictionaryKeyType](https://docs.rs/arrow/latest/arrow/datatypes/trait.ArrowDictionaryKeyType.html "trait arrow::datatypes::ArrowDictionaryKeyType") , [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#1104) [§](https://docs.rs/arrow/latest/arrow/array/trait.AsArray.html#method.as_any_dictionary_opt) #### fn [as\_any\_dictionary\_opt](https://docs.rs/arrow/latest/arrow/array/trait.AsArray.html#tymethod.as_any_dictionary_opt) (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <&dyn [AnyDictionaryArray](https://docs.rs/arrow/latest/arrow/array/trait.AnyDictionaryArray.html "trait arrow::array::AnyDictionaryArray") \> [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#1108) [§](https://docs.rs/arrow/latest/arrow/array/trait.AsArray.html#method.as_run_opt) #### fn [as\_run\_opt](https://docs.rs/arrow/latest/arrow/array/trait.AsArray.html#tymethod.as_run_opt) (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <&[RunArray](https://docs.rs/arrow/latest/arrow/array/struct.RunArray.html "struct arrow::array::RunArray") > where K: [RunEndIndexType](https://docs.rs/arrow/latest/arrow/datatypes/trait.RunEndIndexType.html "trait arrow::datatypes::RunEndIndexType") , [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#1112) [§](https://docs.rs/arrow/latest/arrow/array/trait.AsArray.html#method.as_string_opt-1) #### fn [as\_string\_opt](https://docs.rs/arrow/latest/arrow/array/trait.AsArray.html#method.as_string_opt) (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <&[GenericByteArray](https://docs.rs/arrow/latest/arrow/array/struct.GenericByteArray.html "struct arrow::array::GenericByteArray") <[GenericStringType](https://docs.rs/arrow/latest/arrow/datatypes/struct.GenericStringType.html "struct arrow::datatypes::GenericStringType") >> where O: [OffsetSizeTrait](https://docs.rs/arrow/latest/arrow/array/trait.OffsetSizeTrait.html "trait arrow::array::OffsetSizeTrait") , Implementors[§](https://docs.rs/arrow/latest/arrow/array/trait.AsArray.html#implementors) ------------------------------------------------------------------------------------------ [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#992) [§](https://docs.rs/arrow/latest/arrow/array/trait.AsArray.html#impl-AsArray-for-dyn+Array) ### impl [AsArray](https://docs.rs/arrow/latest/arrow/array/trait.AsArray.html "trait arrow::array::AsArray") for dyn [Array](https://docs.rs/arrow/latest/arrow/array/trait.Array.html "trait arrow::array::Array") + '\_ --- # Array in arrow::array - Rust [Docs.rs](https://docs.rs/) * [arrow-58.1.0](https://docs.rs/arrow/latest/arrow/array/trait.Array.html# "Rust implementation of Apache Arrow") * arrow 58.1.0 * [Permalink](https://docs.rs/arrow/58.1.0/arrow/array/trait.Array.html "Get a link to this specific version") * [Docs.rs crate page](https://docs.rs/crate/arrow/latest "See arrow in docs.rs") * [Apache-2.0](https://spdx.org/licenses/Apache-2.0) * Links * [Homepage](https://github.com/apache/arrow-rs) * [Repository](https://github.com/apache/arrow-rs) * [crates.io](https://crates.io/crates/arrow "See arrow in crates.io") * [Source](https://docs.rs/crate/arrow/latest/source/ "Browse source of arrow-58.1.0") * Owners * [andygrove](https://crates.io/users/andygrove) * [kou](https://crates.io/users/kou) * [kszucs](https://crates.io/users/kszucs) * [xhochy](https://crates.io/users/xhochy) * [nevi-me](https://crates.io/users/nevi-me) * [alamb](https://crates.io/users/alamb) * [tustvold](https://crates.io/users/tustvold) * Dependencies * * [arrow-arith ^58.1.0 _normal_](https://docs.rs/arrow-arith/^58.1.0/) * [arrow-array ^58.1.0 _normal_](https://docs.rs/arrow-array/^58.1.0/) * [arrow-buffer ^58.1.0 _normal_](https://docs.rs/arrow-buffer/^58.1.0/) * [arrow-cast ^58.1.0 _normal_](https://docs.rs/arrow-cast/^58.1.0/) * [arrow-csv ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-csv/^58.1.0/) * [arrow-data ^58.1.0 _normal_](https://docs.rs/arrow-data/^58.1.0/) * [arrow-ipc ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-ipc/^58.1.0/) * [arrow-json ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-json/^58.1.0/) * [arrow-ord ^58.1.0 _normal_](https://docs.rs/arrow-ord/^58.1.0/) * [arrow-pyarrow ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-pyarrow/^58.1.0/) * [arrow-row ^58.1.0 _normal_](https://docs.rs/arrow-row/^58.1.0/) * [arrow-schema ^58.1.0 _normal_](https://docs.rs/arrow-schema/^58.1.0/) * [arrow-select ^58.1.0 _normal_](https://docs.rs/arrow-select/^58.1.0/) * [arrow-string ^58.1.0 _normal_](https://docs.rs/arrow-string/^58.1.0/) * [half ^2.1 _normal_ _optional_](https://docs.rs/half/^2.1/) * [rand ^0.9 _normal_ _optional_](https://docs.rs/rand/^0.9/) * [bytes ^1.9 _dev_](https://docs.rs/bytes/^1.9/) * [chrono ^0.4.40 _dev_](https://docs.rs/chrono/^0.4.40/) * [criterion ^0.8.0 _dev_](https://docs.rs/criterion/^0.8.0/) * [half ^2.1 _dev_](https://docs.rs/half/^2.1/) * [memmap2 ^0.9.3 _dev_](https://docs.rs/memmap2/^0.9.3/) * [rand ^0.9 _dev_](https://docs.rs/rand/^0.9/) * [serde ^1.0 _dev_](https://docs.rs/serde/^1.0/) * Versions * [**100%** of the crate is documented](https://docs.rs/crate/arrow/latest) * [Platform](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#) * [x86\_64-unknown-linux-gnu](https://docs.rs/crate/arrow/latest/target-redirect/arrow/array/trait.Array.html) * [Feature flags](https://docs.rs/crate/arrow/latest/features "Browse available feature flags of arrow-58.1.0") * [docs.rs](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#) * [About docs.rs](https://docs.rs/about) * [Badges](https://docs.rs/about/badges) * [Builds](https://docs.rs/about/builds) * [Metadata](https://docs.rs/about/metadata) * [Shorthand URLs](https://docs.rs/about/redirections) * [Download](https://docs.rs/about/download) * [Rustdoc JSON](https://docs.rs/about/rustdoc-json) * [Build queue](https://docs.rs/releases/queue) * [Privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#docs.rs) * [Rust](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#) * [Rust website](https://www.rust-lang.org/) * [The Book](https://doc.rust-lang.org/book/) * [Standard Library API Reference](https://doc.rust-lang.org/std/) * [Rust by Example](https://doc.rust-lang.org/rust-by-example/) * [The Cargo Guide](https://doc.rust-lang.org/cargo/guide/) * [Clippy Documentation](https://doc.rust-lang.org/nightly/clippy) [Skip to main content](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#main-content) [Array](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#) -------------------------------------------------------------------- [arrow](https://docs.rs/arrow/latest/arrow/index.html) ::[array](https://docs.rs/arrow/latest/arrow/array/index.html) Trait Array Copy item path ========================== [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/mod.rs.html#100) pub unsafe trait Array: Debug + Send + Sync { Show 19 methods // Required methods fn as_any(&self) -> &(dyn Any + 'static); fn to_data(&self) -> ArrayData; fn into_data(self) -> ArrayData; fn data_type(&self) -> &DataType; fn slice(&self, offset: usize, length: usize) -> Arc; fn len(&self) -> usize; fn is_empty(&self) -> bool; fn offset(&self) -> usize; fn nulls(&self) -> Option<&NullBuffer>; fn get_buffer_memory_size(&self) -> usize; fn get_array_memory_size(&self) -> usize; // Provided methods fn shrink_to_fit(&mut self) { ... } fn logical_nulls(&self) -> Option { ... } fn is_null(&self, index: usize) -> bool { ... } fn is_valid(&self, index: usize) -> bool { ... } fn null_count(&self) -> usize { ... } fn logical_null_count(&self) -> usize { ... } fn is_nullable(&self) -> bool { ... } fn claim(&self, pool: &dyn MemoryPool) { ... } } Expand description An array in the [Arrow Columnar Format](https://arrow.apache.org/docs/format/Columnar.html) [§](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#safety) Safety ---------------------------------------------------------------------------- Implementations of this trait must ensure that all methods implementations comply with the Arrow specification. No safety guards are placed and failing to comply with it can translate into panics or undefined behavior. For example, a value computed based on `len` may be used as a direct index into memory regions without checks. Note that it is likely impossible to correctly implement the trait for a third party type, as substantial arrow-rs functionality is based on the return values of [`Array::data_type`](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#tymethod.data_type "method arrow::array::Array::data_type") and third party types cannot extend the [`DataType`](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html "enum arrow::datatypes::DataType") enum. So any code that attempts casting based on data type (including internal arrow library code) risks a panic or undefined behavior. See [this discussion](https://github.com/apache/arrow-rs/pull/9234#pullrequestreview-3708950936) for more details. This trait might be sealed in the future. Use at your own risk. Required Methods[§](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#required-methods) ------------------------------------------------------------------------------------------------ [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/mod.rs.html#123) #### fn [as\_any](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#tymethod.as_any) (&self) -> &(dyn [Any](https://doc.rust-lang.org/nightly/core/any/trait.Any.html "trait core::any::Any") + 'static) Returns the array as [`Any`](https://doc.rust-lang.org/nightly/core/any/trait.Any.html "trait core::any::Any") so that it can be downcasted to a specific implementation. ##### [§](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#example) Example: let id = Int32Array::from(vec![1, 2, 3, 4, 5]); let batch = RecordBatch::try_new( Arc::new(Schema::new(vec![Field::new("id", DataType::Int32, false)])), vec![Arc::new(id)] ).unwrap(); let int32array = batch .column(0) .as_any() .downcast_ref::() .expect("Failed to downcast"); [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/mod.rs.html#126) #### fn [to\_data](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#tymethod.to_data) (&self) -> [ArrayData](https://docs.rs/arrow/latest/arrow/array/struct.ArrayData.html "struct arrow::array::ArrayData") Returns the underlying data of this array [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/mod.rs.html#131) #### fn [into\_data](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#tymethod.into_data) (self) -> [ArrayData](https://docs.rs/arrow/latest/arrow/array/struct.ArrayData.html "struct arrow::array::ArrayData") Returns the underlying data of this array Unlike [`Array::to_data`](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#tymethod.to_data "method arrow::array::Array::to_data") this consumes self, allowing it avoid unnecessary clones [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/mod.rs.html#145) #### fn [data\_type](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#tymethod.data_type) (&self) -> &[DataType](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html "enum arrow::datatypes::DataType") Returns a reference to the [`DataType`](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html "enum arrow::datatypes::DataType") of this array. ##### [§](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#example-1) Example: use arrow_schema::DataType; use arrow_array::{Array, Int32Array}; let array = Int32Array::from(vec![1, 2, 3, 4, 5]); assert_eq!(*array.data_type(), DataType::Int32); [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/mod.rs.html#160) #### fn [slice](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#tymethod.slice) (&self, offset: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) , length: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) ) -> [Arc](https://doc.rust-lang.org/nightly/alloc/sync/struct.Arc.html "struct alloc::sync::Arc") Returns a zero-copy slice of this array with the indicated offset and length. ##### [§](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#example-2) Example: use arrow_array::{Array, Int32Array}; let array = Int32Array::from(vec![1, 2, 3, 4, 5]); // Make slice over the values [2, 3, 4] let array_slice = array.slice(1, 3); assert_eq!(&array_slice, &Int32Array::from(vec![2, 3, 4])); [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/mod.rs.html#173) #### fn [len](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#tymethod.len) (&self) -> [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) Returns the length (i.e., number of elements) of this array. ##### [§](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#example-3) Example: use arrow_array::{Array, Int32Array}; let array = Int32Array::from(vec![1, 2, 3, 4, 5]); assert_eq!(array.len(), 5); [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/mod.rs.html#186) #### fn [is\_empty](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#tymethod.is_empty) (&self) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) Returns whether this array is empty. ##### [§](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#example-4) Example: use arrow_array::{Array, Int32Array}; let array = Int32Array::from(vec![1, 2, 3, 4, 5]); assert_eq!(array.is_empty(), false); [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/mod.rs.html#209) #### fn [offset](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#tymethod.offset) (&self) -> [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) Returns the offset into the underlying data used by this array(-slice). Note that the underlying data can be shared by many arrays. This defaults to `0`. ##### [§](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#example-5) Example: use arrow_array::{Array, BooleanArray}; let array = BooleanArray::from(vec![false, false, true, true]); let array_slice = array.slice(1, 3); assert_eq!(array.offset(), 0); assert_eq!(array_slice.offset(), 1); [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/mod.rs.html#223) #### fn [nulls](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#tymethod.nulls) (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <&[NullBuffer](https://docs.rs/arrow/latest/arrow/buffer/struct.NullBuffer.html "struct arrow::buffer::NullBuffer") \> Returns the null buffer of this array if any. The null buffer contains the “physical” nulls of an array, that is how the nulls are represented in the underlying arrow format. The physical representation is efficient, but is sometimes non intuitive for certain array types such as those with nullable child arrays like [`DictionaryArray::values`](https://docs.rs/arrow/latest/arrow/array/struct.DictionaryArray.html#method.values "method arrow::array::DictionaryArray::values") , [`RunArray::values`](https://docs.rs/arrow/latest/arrow/array/struct.RunArray.html#method.values "method arrow::array::RunArray::values") or [`UnionArray`](https://docs.rs/arrow/latest/arrow/array/struct.UnionArray.html "struct arrow::array::UnionArray") , or without a null buffer, such as [`NullArray`](https://docs.rs/arrow/latest/arrow/array/struct.NullArray.html "struct arrow::array::NullArray") . To determine if each element of such an array is “logically” null, use the slower [`Array::logical_nulls`](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#method.logical_nulls "method arrow::array::Array::logical_nulls") to obtain a computed mask. [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/mod.rs.html#351) #### fn [get\_buffer\_memory\_size](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#tymethod.get_buffer_memory_size) (&self) -> [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) Returns the total number of bytes of memory pointed to by this array. The buffers store bytes in the Arrow memory format, and include the data as well as the validity map. Note that this does not always correspond to the exact memory usage of an array, since multiple arrays can share the same buffers or slices thereof. [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/mod.rs.html#356) #### fn [get\_array\_memory\_size](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#tymethod.get_array_memory_size) (&self) -> [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) Returns the total number of bytes of memory occupied physically by this array. This value will always be greater than returned by `get_buffer_memory_size()` and includes the overhead of the data structures that contain the pointers to the various buffers. Provided Methods[§](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#provided-methods) ------------------------------------------------------------------------------------------------ [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/mod.rs.html#192) #### fn [shrink\_to\_fit](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#method.shrink_to_fit) (&mut self) Shrinks the capacity of any exclusively owned buffer as much as possible Shared or externally allocated buffers will be ignored, and any buffer offsets will be preserved. [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/mod.rs.html#243) #### fn [logical\_nulls](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#method.logical_nulls) (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <[NullBuffer](https://docs.rs/arrow/latest/arrow/buffer/struct.NullBuffer.html "struct arrow::buffer::NullBuffer") \> Returns a potentially computed [`NullBuffer`](https://docs.rs/arrow/latest/arrow/buffer/struct.NullBuffer.html "struct arrow::buffer::NullBuffer") that represents the logical null values of this array, if any. Logical nulls represent the values that are null in the array, regardless of the underlying physical arrow representation. For most array types, this is equivalent to the “physical” nulls returned by [`Array::nulls`](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#tymethod.nulls "method arrow::array::Array::nulls") . It is different for the following cases, because which elements are null is not encoded in a single null buffer: * [`DictionaryArray`](https://docs.rs/arrow/latest/arrow/array/struct.DictionaryArray.html "struct arrow::array::DictionaryArray") where [`DictionaryArray::values`](https://docs.rs/arrow/latest/arrow/array/struct.DictionaryArray.html#method.values "method arrow::array::DictionaryArray::values") contains nulls * [`RunArray`](https://docs.rs/arrow/latest/arrow/array/struct.RunArray.html "struct arrow::array::RunArray") where [`RunArray::values`](https://docs.rs/arrow/latest/arrow/array/struct.RunArray.html#method.values "method arrow::array::RunArray::values") contains nulls * [`NullArray`](https://docs.rs/arrow/latest/arrow/array/struct.NullArray.html "struct arrow::array::NullArray") where all indices are nulls * [`UnionArray`](https://docs.rs/arrow/latest/arrow/array/struct.UnionArray.html "struct arrow::array::UnionArray") where the selected values contains nulls In these cases a logical [`NullBuffer`](https://docs.rs/arrow/latest/arrow/buffer/struct.NullBuffer.html "struct arrow::buffer::NullBuffer") will be computed, encoding the logical nullability of these arrays, beyond what is encoded in [`Array::nulls`](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#tymethod.nulls "method arrow::array::Array::nulls") [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/mod.rs.html#268) #### fn [is\_null](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#method.is_null) (&self, index: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) ) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) Returns whether the element at `index` is null according to [`Array::nulls`](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#tymethod.nulls "method arrow::array::Array::nulls") Note: For performance reasons, this method returns nullability solely as determined by the null buffer. This difference can lead to surprising results, for example, [`NullArray::is_null`](https://docs.rs/arrow/latest/arrow/array/struct.NullArray.html#method.is_null "method arrow::array::NullArray::is_null") always returns `false` as the array lacks a null buffer. Similarly [`DictionaryArray`](https://docs.rs/arrow/latest/arrow/array/struct.DictionaryArray.html "struct arrow::array::DictionaryArray") , [`RunArray`](https://docs.rs/arrow/latest/arrow/array/struct.RunArray.html "struct arrow::array::RunArray") and [`UnionArray`](https://docs.rs/arrow/latest/arrow/array/struct.UnionArray.html "struct arrow::array::UnionArray") may encode nullability in their children. See [`Self::logical_nulls`](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#method.logical_nulls "method arrow::array::Array::logical_nulls") for more information. ##### [§](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#example-6) Example: use arrow_array::{Array, Int32Array, NullArray}; let array = Int32Array::from(vec![Some(1), None]); assert_eq!(array.is_null(0), false); assert_eq!(array.is_null(1), true); // NullArrays do not have a null buffer, and therefore always // return false for is_null. let array = NullArray::new(1); assert_eq!(array.is_null(0), false); [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/mod.rs.html#285) #### fn [is\_valid](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#method.is_valid) (&self, index: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) ) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) Returns whether the element at `index` is _not_ null, the opposite of [`Self::is_null`](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#method.is_null "method arrow::array::Array::is_null") . ##### [§](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#example-7) Example: use arrow_array::{Array, Int32Array}; let array = Int32Array::from(vec![Some(1), None]); assert_eq!(array.is_valid(0), true); assert_eq!(array.is_valid(1), false); [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/mod.rs.html#304) #### fn [null\_count](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#method.null_count) (&self) -> [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) Returns the total number of physical null values in this array. Note: this method returns the physical null count, i.e. that encoded in [`Array::nulls`](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#tymethod.nulls "method arrow::array::Array::nulls") , see [`Array::logical_nulls`](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#method.logical_nulls "method arrow::array::Array::logical_nulls") for logical nullability ##### [§](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#example-8) Example: use arrow_array::{Array, Int32Array}; // Construct an array with values [1, NULL, NULL] let array = Int32Array::from(vec![Some(1), None, None]); assert_eq!(array.null_count(), 2); [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/mod.rs.html#324) #### fn [logical\_null\_count](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#method.logical_null_count) (&self) -> [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) Returns the total number of logical null values in this array. Note: this method returns the logical null count, i.e. that encoded in [`Array::logical_nulls`](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#method.logical_nulls "method arrow::array::Array::logical_nulls") . In general this is equivalent to [`Array::null_count`](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#method.null_count "method arrow::array::Array::null_count") but may differ in the presence of logical nullability, see [`Array::nulls`](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#tymethod.nulls "method arrow::array::Array::nulls") and [`Array::logical_nulls`](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#method.logical_nulls "method arrow::array::Array::logical_nulls") . ##### [§](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#example-9) Example: use arrow_array::{Array, Int32Array}; // Construct an array with values [1, NULL, NULL] let array = Int32Array::from(vec![Some(1), None, None]); assert_eq!(array.logical_null_count(), 2); [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/mod.rs.html#343) #### fn [is\_nullable](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#method.is_nullable) (&self) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) Returns `false` if the array is guaranteed to not contain any logical nulls This is generally equivalent to `Array::logical_null_count() != 0` unless determining the logical nulls is expensive, in which case this method can return true even for an array without nulls. This is also generally equivalent to `Array::null_count() != 0` but may differ in the presence of logical nullability, see [`Array::logical_null_count`](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#method.logical_null_count "method arrow::array::Array::logical_null_count") and [`Array::null_count`](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#method.null_count "method arrow::array::Array::null_count") . Implementations will return `true` unless they can cheaply prove no logical nulls are present. For example a [`DictionaryArray`](https://docs.rs/arrow/latest/arrow/array/struct.DictionaryArray.html "struct arrow::array::DictionaryArray") with nullable values will still return true, even if the nulls present in [`DictionaryArray::values`](https://docs.rs/arrow/latest/arrow/array/struct.DictionaryArray.html#method.values "method arrow::array::DictionaryArray::values") are not referenced by any key, and therefore would not appear in [`Array::logical_nulls`](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#method.logical_nulls "method arrow::array::Array::logical_nulls") . [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/mod.rs.html#423) #### fn [claim](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#method.claim) (&self, pool: &dyn [MemoryPool](https://docs.rs/arrow-buffer/58.1.0/x86_64-unknown-linux-gnu/arrow_buffer/pool/trait.MemoryPool.html "trait arrow_buffer::pool::MemoryPool") ) Available on **crate feature `pool`** only. Claim memory used by this array in the provided memory pool. This recursively claims memory for: * All data buffers in this array * All child arrays (for nested types like List, Struct, etc.) * The null bitmap buffer if present This method guarantees that the memory pool will only compute occupied memory exactly once. For example, if this array is derived from operations like `slice`, calling `claim` on it would not change the memory pool’s usage if the underlying buffers are already counted before. ##### [§](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#example-10) Example let pool = TrackingMemoryPool::default(); let small_array = Int32Array::from(vec![1, 2, 3, 4, 5]); let small_array_size = small_array.get_buffer_memory_size(); // Claim the array's memory in the pool small_array.claim(&pool); // Create and claim slices of `small_array`; should not increase memory usage let slice1 = small_array.slice(0, 2); let slice2 = small_array.slice(2, 2); slice1.claim(&pool); slice2.claim(&pool); assert_eq!(pool.used(), small_array_size); // Create a `large_array` which does not derive from the original `small_array` let large_array = Int32Array::from((0..1000).collect::>()); let large_array_size = large_array.get_buffer_memory_size(); large_array.claim(&pool); // Trying to claim more than once is a no-op large_array.claim(&pool); large_array.claim(&pool); assert_eq!(pool.used(), small_array_size + large_array_size); let sum_of_all_sizes = small_array_size + large_array_size + slice1.get_buffer_memory_size() + slice2.get_buffer_memory_size(); // `get_buffer_memory_size` works independently of the memory pool, so a sum of all the // arrays in scope will always be >= the memory used reported by the memory pool. assert_ne!(pool.used(), sum_of_all_sizes); // Until the final claim is dropped the buffer size remains accounted for drop(small_array); drop(slice1); assert_eq!(pool.used(), small_array_size + large_array_size); // Dropping this finally releases the buffer that was backing `small_array` drop(slice2); assert_eq!(pool.used(), large_array_size); Trait Implementations[§](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#trait-implementations) ---------------------------------------------------------------------------------------------------------- [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#992) [§](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#impl-AsArray-for-dyn+Array) ### impl [AsArray](https://docs.rs/arrow/latest/arrow/array/trait.AsArray.html "trait arrow::array::AsArray") for dyn [Array](https://docs.rs/arrow/latest/arrow/array/trait.Array.html "trait arrow::array::Array") + '\_ [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#993) [§](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#method.as_boolean_opt) #### fn [as\_boolean\_opt](https://docs.rs/arrow/latest/arrow/array/trait.AsArray.html#tymethod.as_boolean_opt) (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <&[BooleanArray](https://docs.rs/arrow/latest/arrow/array/struct.BooleanArray.html "struct arrow::array::BooleanArray") \> Downcast this to a [`BooleanArray`](https://docs.rs/arrow/latest/arrow/array/struct.BooleanArray.html "struct arrow::array::BooleanArray") returning `None` if not possible [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#997) [§](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#method.as_primitive_opt) #### fn [as\_primitive\_opt](https://docs.rs/arrow/latest/arrow/array/trait.AsArray.html#tymethod.as_primitive_opt) (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <&[PrimitiveArray](https://docs.rs/arrow/latest/arrow/array/struct.PrimitiveArray.html "struct arrow::array::PrimitiveArray") > where T: [ArrowPrimitiveType](https://docs.rs/arrow/latest/arrow/array/trait.ArrowPrimitiveType.html "trait arrow::array::ArrowPrimitiveType") , Downcast this to a [`PrimitiveArray`](https://docs.rs/arrow/latest/arrow/array/struct.PrimitiveArray.html "struct arrow::array::PrimitiveArray") returning `None` if not possible [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#1001) [§](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#method.as_bytes_opt) #### fn [as\_bytes\_opt](https://docs.rs/arrow/latest/arrow/array/trait.AsArray.html#tymethod.as_bytes_opt) (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <&[GenericByteArray](https://docs.rs/arrow/latest/arrow/array/struct.GenericByteArray.html "struct arrow::array::GenericByteArray") > where T: [ByteArrayType](https://docs.rs/arrow/latest/arrow/datatypes/trait.ByteArrayType.html "trait arrow::datatypes::ByteArrayType") , Downcast this to a [`GenericByteArray`](https://docs.rs/arrow/latest/arrow/array/struct.GenericByteArray.html "struct arrow::array::GenericByteArray") returning `None` if not possible [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#1005) [§](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#method.as_byte_view_opt) #### fn [as\_byte\_view\_opt](https://docs.rs/arrow/latest/arrow/array/trait.AsArray.html#tymethod.as_byte_view_opt) (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <&[GenericByteViewArray](https://docs.rs/arrow/latest/arrow/array/struct.GenericByteViewArray.html "struct arrow::array::GenericByteViewArray") > where T: [ByteViewType](https://docs.rs/arrow/latest/arrow/datatypes/trait.ByteViewType.html "trait arrow::datatypes::ByteViewType") , Downcast this to a [`GenericByteViewArray`](https://docs.rs/arrow/latest/arrow/array/struct.GenericByteViewArray.html "struct arrow::array::GenericByteViewArray") returning `None` if not possible [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#1009) [§](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#method.as_struct_opt) #### fn [as\_struct\_opt](https://docs.rs/arrow/latest/arrow/array/trait.AsArray.html#tymethod.as_struct_opt) (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <&[StructArray](https://docs.rs/arrow/latest/arrow/array/struct.StructArray.html "struct arrow::array::StructArray") \> Downcast this to a [`StructArray`](https://docs.rs/arrow/latest/arrow/array/struct.StructArray.html "struct arrow::array::StructArray") returning `None` if not possible [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#1013) [§](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#method.as_union_opt) #### fn [as\_union\_opt](https://docs.rs/arrow/latest/arrow/array/trait.AsArray.html#tymethod.as_union_opt) (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <&[UnionArray](https://docs.rs/arrow/latest/arrow/array/struct.UnionArray.html "struct arrow::array::UnionArray") \> Downcast this to a [`UnionArray`](https://docs.rs/arrow/latest/arrow/array/struct.UnionArray.html "struct arrow::array::UnionArray") returning `None` if not possible [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#1017) [§](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#method.as_list_opt) #### fn [as\_list\_opt](https://docs.rs/arrow/latest/arrow/array/trait.AsArray.html#tymethod.as_list_opt) (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <&[GenericListArray](https://docs.rs/arrow/latest/arrow/array/struct.GenericListArray.html "struct arrow::array::GenericListArray") > where O: [OffsetSizeTrait](https://docs.rs/arrow/latest/arrow/array/trait.OffsetSizeTrait.html "trait arrow::array::OffsetSizeTrait") , Downcast this to a [`GenericListArray`](https://docs.rs/arrow/latest/arrow/array/struct.GenericListArray.html "struct arrow::array::GenericListArray") returning `None` if not possible [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#1021) [§](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#method.as_list_view_opt) #### fn [as\_list\_view\_opt](https://docs.rs/arrow/latest/arrow/array/trait.AsArray.html#tymethod.as_list_view_opt) (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <&[GenericListViewArray](https://docs.rs/arrow/latest/arrow/array/struct.GenericListViewArray.html "struct arrow::array::GenericListViewArray") > where O: [OffsetSizeTrait](https://docs.rs/arrow/latest/arrow/array/trait.OffsetSizeTrait.html "trait arrow::array::OffsetSizeTrait") , Downcast this to a [`GenericListViewArray`](https://docs.rs/arrow/latest/arrow/array/struct.GenericListViewArray.html "struct arrow::array::GenericListViewArray") returning `None` if not possible [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#1025) [§](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#method.as_fixed_size_binary_opt) #### fn [as\_fixed\_size\_binary\_opt](https://docs.rs/arrow/latest/arrow/array/trait.AsArray.html#tymethod.as_fixed_size_binary_opt) (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <&[FixedSizeBinaryArray](https://docs.rs/arrow/latest/arrow/array/struct.FixedSizeBinaryArray.html "struct arrow::array::FixedSizeBinaryArray") \> Downcast this to a [`FixedSizeBinaryArray`](https://docs.rs/arrow/latest/arrow/array/struct.FixedSizeBinaryArray.html "struct arrow::array::FixedSizeBinaryArray") returning `None` if not possible [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#1029) [§](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#method.as_fixed_size_list_opt) #### fn [as\_fixed\_size\_list\_opt](https://docs.rs/arrow/latest/arrow/array/trait.AsArray.html#tymethod.as_fixed_size_list_opt) (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <&[FixedSizeListArray](https://docs.rs/arrow/latest/arrow/array/struct.FixedSizeListArray.html "struct arrow::array::FixedSizeListArray") \> Downcast this to a [`FixedSizeListArray`](https://docs.rs/arrow/latest/arrow/array/struct.FixedSizeListArray.html "struct arrow::array::FixedSizeListArray") returning `None` if not possible [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#1033) [§](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#method.as_map_opt) #### fn [as\_map\_opt](https://docs.rs/arrow/latest/arrow/array/trait.AsArray.html#tymethod.as_map_opt) (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <&[MapArray](https://docs.rs/arrow/latest/arrow/array/struct.MapArray.html "struct arrow::array::MapArray") \> Downcast this to a [`MapArray`](https://docs.rs/arrow/latest/arrow/array/struct.MapArray.html "struct arrow::array::MapArray") returning `None` if not possible [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#1037) [§](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#method.as_dictionary_opt) #### fn [as\_dictionary\_opt](https://docs.rs/arrow/latest/arrow/array/trait.AsArray.html#tymethod.as_dictionary_opt) (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <&[DictionaryArray](https://docs.rs/arrow/latest/arrow/array/struct.DictionaryArray.html "struct arrow::array::DictionaryArray") > where K: [ArrowDictionaryKeyType](https://docs.rs/arrow/latest/arrow/datatypes/trait.ArrowDictionaryKeyType.html "trait arrow::datatypes::ArrowDictionaryKeyType") , Downcast this to a [`DictionaryArray`](https://docs.rs/arrow/latest/arrow/array/struct.DictionaryArray.html "struct arrow::array::DictionaryArray") returning `None` if not possible [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#1041) [§](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#method.as_run_opt) #### fn [as\_run\_opt](https://docs.rs/arrow/latest/arrow/array/trait.AsArray.html#tymethod.as_run_opt) (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <&[RunArray](https://docs.rs/arrow/latest/arrow/array/struct.RunArray.html "struct arrow::array::RunArray") > where K: [RunEndIndexType](https://docs.rs/arrow/latest/arrow/datatypes/trait.RunEndIndexType.html "trait arrow::datatypes::RunEndIndexType") , Downcast this to a [`RunArray`](https://docs.rs/arrow/latest/arrow/array/struct.RunArray.html "struct arrow::array::RunArray") returning `None` if not possible [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#1045) [§](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#method.as_any_dictionary_opt) #### fn [as\_any\_dictionary\_opt](https://docs.rs/arrow/latest/arrow/array/trait.AsArray.html#tymethod.as_any_dictionary_opt) (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <&dyn [AnyDictionaryArray](https://docs.rs/arrow/latest/arrow/array/trait.AnyDictionaryArray.html "trait arrow::array::AnyDictionaryArray") \> Downcasts this to a [`AnyDictionaryArray`](https://docs.rs/arrow/latest/arrow/array/trait.AnyDictionaryArray.html "trait arrow::array::AnyDictionaryArray") returning `None` if not possible [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#840) [§](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#method.as_boolean) #### fn [as\_boolean](https://docs.rs/arrow/latest/arrow/array/trait.AsArray.html#method.as_boolean) (&self) -> &[BooleanArray](https://docs.rs/arrow/latest/arrow/array/struct.BooleanArray.html "struct arrow::array::BooleanArray") Downcast this to a [`BooleanArray`](https://docs.rs/arrow/latest/arrow/array/struct.BooleanArray.html "struct arrow::array::BooleanArray") panicking if not possible [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#848) [§](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#method.as_primitive) #### fn [as\_primitive](https://docs.rs/arrow/latest/arrow/array/trait.AsArray.html#method.as_primitive) (&self) -> &[PrimitiveArray](https://docs.rs/arrow/latest/arrow/array/struct.PrimitiveArray.html "struct arrow::array::PrimitiveArray") where T: [ArrowPrimitiveType](https://docs.rs/arrow/latest/arrow/array/trait.ArrowPrimitiveType.html "trait arrow::array::ArrowPrimitiveType") , Downcast this to a [`PrimitiveArray`](https://docs.rs/arrow/latest/arrow/array/struct.PrimitiveArray.html "struct arrow::array::PrimitiveArray") panicking if not possible [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#856) [§](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#method.as_bytes) #### fn [as\_bytes](https://docs.rs/arrow/latest/arrow/array/trait.AsArray.html#method.as_bytes) (&self) -> &[GenericByteArray](https://docs.rs/arrow/latest/arrow/array/struct.GenericByteArray.html "struct arrow::array::GenericByteArray") where T: [ByteArrayType](https://docs.rs/arrow/latest/arrow/datatypes/trait.ByteArrayType.html "trait arrow::datatypes::ByteArrayType") , Downcast this to a [`GenericByteArray`](https://docs.rs/arrow/latest/arrow/array/struct.GenericByteArray.html "struct arrow::array::GenericByteArray") panicking if not possible [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#861) [§](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#method.as_string_opt) #### fn [as\_string\_opt](https://docs.rs/arrow/latest/arrow/array/trait.AsArray.html#method.as_string_opt) (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <&[GenericByteArray](https://docs.rs/arrow/latest/arrow/array/struct.GenericByteArray.html "struct arrow::array::GenericByteArray") <[GenericStringType](https://docs.rs/arrow/latest/arrow/datatypes/struct.GenericStringType.html "struct arrow::datatypes::GenericStringType") >> where O: [OffsetSizeTrait](https://docs.rs/arrow/latest/arrow/array/trait.OffsetSizeTrait.html "trait arrow::array::OffsetSizeTrait") , Downcast this to a [`GenericStringArray`](https://docs.rs/arrow/latest/arrow/array/type.GenericStringArray.html "type arrow::array::GenericStringArray") returning `None` if not possible [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#866) [§](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#method.as_string) #### fn [as\_string](https://docs.rs/arrow/latest/arrow/array/trait.AsArray.html#method.as_string) (&self) -> &[GenericByteArray](https://docs.rs/arrow/latest/arrow/array/struct.GenericByteArray.html "struct arrow::array::GenericByteArray") <[GenericStringType](https://docs.rs/arrow/latest/arrow/datatypes/struct.GenericStringType.html "struct arrow::datatypes::GenericStringType") > where O: [OffsetSizeTrait](https://docs.rs/arrow/latest/arrow/array/trait.OffsetSizeTrait.html "trait arrow::array::OffsetSizeTrait") , Downcast this to a [`GenericStringArray`](https://docs.rs/arrow/latest/arrow/array/type.GenericStringArray.html "type arrow::array::GenericStringArray") panicking if not possible [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#871) [§](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#method.as_binary_opt) #### fn [as\_binary\_opt](https://docs.rs/arrow/latest/arrow/array/trait.AsArray.html#method.as_binary_opt) (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <&[GenericByteArray](https://docs.rs/arrow/latest/arrow/array/struct.GenericByteArray.html "struct arrow::array::GenericByteArray") <[GenericBinaryType](https://docs.rs/arrow/latest/arrow/datatypes/struct.GenericBinaryType.html "struct arrow::datatypes::GenericBinaryType") >> where O: [OffsetSizeTrait](https://docs.rs/arrow/latest/arrow/array/trait.OffsetSizeTrait.html "trait arrow::array::OffsetSizeTrait") , Downcast this to a [`GenericBinaryArray`](https://docs.rs/arrow/latest/arrow/array/type.GenericBinaryArray.html "type arrow::array::GenericBinaryArray") returning `None` if not possible [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#876) [§](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#method.as_binary) #### fn [as\_binary](https://docs.rs/arrow/latest/arrow/array/trait.AsArray.html#method.as_binary) (&self) -> &[GenericByteArray](https://docs.rs/arrow/latest/arrow/array/struct.GenericByteArray.html "struct arrow::array::GenericByteArray") <[GenericBinaryType](https://docs.rs/arrow/latest/arrow/datatypes/struct.GenericBinaryType.html "struct arrow::datatypes::GenericBinaryType") > where O: [OffsetSizeTrait](https://docs.rs/arrow/latest/arrow/array/trait.OffsetSizeTrait.html "trait arrow::array::OffsetSizeTrait") , Downcast this to a [`GenericBinaryArray`](https://docs.rs/arrow/latest/arrow/array/type.GenericBinaryArray.html "type arrow::array::GenericBinaryArray") panicking if not possible [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#881) [§](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#method.as_string_view_opt) #### fn [as\_string\_view\_opt](https://docs.rs/arrow/latest/arrow/array/trait.AsArray.html#method.as_string_view_opt) (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <&[GenericByteViewArray](https://docs.rs/arrow/latest/arrow/array/struct.GenericByteViewArray.html "struct arrow::array::GenericByteViewArray") <[StringViewType](https://docs.rs/arrow/latest/arrow/datatypes/struct.StringViewType.html "struct arrow::datatypes::StringViewType") \>> Downcast this to a [`StringViewArray`](https://docs.rs/arrow/latest/arrow/array/type.StringViewArray.html "type arrow::array::StringViewArray") returning `None` if not possible [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#886) [§](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#method.as_string_view) #### fn [as\_string\_view](https://docs.rs/arrow/latest/arrow/array/trait.AsArray.html#method.as_string_view) (&self) -> &[GenericByteViewArray](https://docs.rs/arrow/latest/arrow/array/struct.GenericByteViewArray.html "struct arrow::array::GenericByteViewArray") <[StringViewType](https://docs.rs/arrow/latest/arrow/datatypes/struct.StringViewType.html "struct arrow::datatypes::StringViewType") \> Downcast this to a [`StringViewArray`](https://docs.rs/arrow/latest/arrow/array/type.StringViewArray.html "type arrow::array::StringViewArray") panicking if not possible [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#891) [§](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#method.as_binary_view_opt) #### fn [as\_binary\_view\_opt](https://docs.rs/arrow/latest/arrow/array/trait.AsArray.html#method.as_binary_view_opt) (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <&[GenericByteViewArray](https://docs.rs/arrow/latest/arrow/array/struct.GenericByteViewArray.html "struct arrow::array::GenericByteViewArray") <[BinaryViewType](https://docs.rs/arrow/latest/arrow/datatypes/struct.BinaryViewType.html "struct arrow::datatypes::BinaryViewType") \>> Downcast this to a [`BinaryViewArray`](https://docs.rs/arrow/latest/arrow/array/type.BinaryViewArray.html "type arrow::array::BinaryViewArray") returning `None` if not possible [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#896) [§](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#method.as_binary_view) #### fn [as\_binary\_view](https://docs.rs/arrow/latest/arrow/array/trait.AsArray.html#method.as_binary_view) (&self) -> &[GenericByteViewArray](https://docs.rs/arrow/latest/arrow/array/struct.GenericByteViewArray.html "struct arrow::array::GenericByteViewArray") <[BinaryViewType](https://docs.rs/arrow/latest/arrow/datatypes/struct.BinaryViewType.html "struct arrow::datatypes::BinaryViewType") \> Downcast this to a [`BinaryViewArray`](https://docs.rs/arrow/latest/arrow/array/type.BinaryViewArray.html "type arrow::array::BinaryViewArray") panicking if not possible [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#904) [§](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#method.as_byte_view) #### fn [as\_byte\_view](https://docs.rs/arrow/latest/arrow/array/trait.AsArray.html#method.as_byte_view) (&self) -> &[GenericByteViewArray](https://docs.rs/arrow/latest/arrow/array/struct.GenericByteViewArray.html "struct arrow::array::GenericByteViewArray") where T: [ByteViewType](https://docs.rs/arrow/latest/arrow/datatypes/trait.ByteViewType.html "trait arrow::datatypes::ByteViewType") , Downcast this to a [`GenericByteViewArray`](https://docs.rs/arrow/latest/arrow/array/struct.GenericByteViewArray.html "struct arrow::array::GenericByteViewArray") panicking if not possible [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#912) [§](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#method.as_struct) #### fn [as\_struct](https://docs.rs/arrow/latest/arrow/array/trait.AsArray.html#method.as_struct) (&self) -> &[StructArray](https://docs.rs/arrow/latest/arrow/array/struct.StructArray.html "struct arrow::array::StructArray") Downcast this to a [`StructArray`](https://docs.rs/arrow/latest/arrow/array/struct.StructArray.html "struct arrow::array::StructArray") panicking if not possible [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#920) [§](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#method.as_union) #### fn [as\_union](https://docs.rs/arrow/latest/arrow/array/trait.AsArray.html#method.as_union) (&self) -> &[UnionArray](https://docs.rs/arrow/latest/arrow/array/struct.UnionArray.html "struct arrow::array::UnionArray") Downcast this to a [`UnionArray`](https://docs.rs/arrow/latest/arrow/array/struct.UnionArray.html "struct arrow::array::UnionArray") panicking if not possible [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#928) [§](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#method.as_list) #### fn [as\_list](https://docs.rs/arrow/latest/arrow/array/trait.AsArray.html#method.as_list) (&self) -> &[GenericListArray](https://docs.rs/arrow/latest/arrow/array/struct.GenericListArray.html "struct arrow::array::GenericListArray") where O: [OffsetSizeTrait](https://docs.rs/arrow/latest/arrow/array/trait.OffsetSizeTrait.html "trait arrow::array::OffsetSizeTrait") , Downcast this to a [`GenericListArray`](https://docs.rs/arrow/latest/arrow/array/struct.GenericListArray.html "struct arrow::array::GenericListArray") panicking if not possible [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#936) [§](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#method.as_list_view) #### fn [as\_list\_view](https://docs.rs/arrow/latest/arrow/array/trait.AsArray.html#method.as_list_view) (&self) -> &[GenericListViewArray](https://docs.rs/arrow/latest/arrow/array/struct.GenericListViewArray.html "struct arrow::array::GenericListViewArray") where O: [OffsetSizeTrait](https://docs.rs/arrow/latest/arrow/array/trait.OffsetSizeTrait.html "trait arrow::array::OffsetSizeTrait") , Downcast this to a [`GenericListViewArray`](https://docs.rs/arrow/latest/arrow/array/struct.GenericListViewArray.html "struct arrow::array::GenericListViewArray") panicking if not possible [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#944) [§](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#method.as_fixed_size_binary) #### fn [as\_fixed\_size\_binary](https://docs.rs/arrow/latest/arrow/array/trait.AsArray.html#method.as_fixed_size_binary) (&self) -> &[FixedSizeBinaryArray](https://docs.rs/arrow/latest/arrow/array/struct.FixedSizeBinaryArray.html "struct arrow::array::FixedSizeBinaryArray") Downcast this to a [`FixedSizeBinaryArray`](https://docs.rs/arrow/latest/arrow/array/struct.FixedSizeBinaryArray.html "struct arrow::array::FixedSizeBinaryArray") panicking if not possible [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#953) [§](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#method.as_fixed_size_list) #### fn [as\_fixed\_size\_list](https://docs.rs/arrow/latest/arrow/array/trait.AsArray.html#method.as_fixed_size_list) (&self) -> &[FixedSizeListArray](https://docs.rs/arrow/latest/arrow/array/struct.FixedSizeListArray.html "struct arrow::array::FixedSizeListArray") Downcast this to a [`FixedSizeListArray`](https://docs.rs/arrow/latest/arrow/array/struct.FixedSizeListArray.html "struct arrow::array::FixedSizeListArray") panicking if not possible [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#962) [§](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#method.as_map) #### fn [as\_map](https://docs.rs/arrow/latest/arrow/array/trait.AsArray.html#method.as_map) (&self) -> &[MapArray](https://docs.rs/arrow/latest/arrow/array/struct.MapArray.html "struct arrow::array::MapArray") Downcast this to a [`MapArray`](https://docs.rs/arrow/latest/arrow/array/struct.MapArray.html "struct arrow::array::MapArray") panicking if not possible [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#970) [§](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#method.as_dictionary) #### fn [as\_dictionary](https://docs.rs/arrow/latest/arrow/array/trait.AsArray.html#method.as_dictionary) (&self) -> &[DictionaryArray](https://docs.rs/arrow/latest/arrow/array/struct.DictionaryArray.html "struct arrow::array::DictionaryArray") where K: [ArrowDictionaryKeyType](https://docs.rs/arrow/latest/arrow/datatypes/trait.ArrowDictionaryKeyType.html "trait arrow::datatypes::ArrowDictionaryKeyType") , Downcast this to a [`DictionaryArray`](https://docs.rs/arrow/latest/arrow/array/struct.DictionaryArray.html "struct arrow::array::DictionaryArray") panicking if not possible [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#978) [§](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#method.as_run) #### fn [as\_run](https://docs.rs/arrow/latest/arrow/array/trait.AsArray.html#method.as_run) (&self) -> &[RunArray](https://docs.rs/arrow/latest/arrow/array/struct.RunArray.html "struct arrow::array::RunArray") where K: [RunEndIndexType](https://docs.rs/arrow/latest/arrow/datatypes/trait.RunEndIndexType.html "trait arrow::datatypes::RunEndIndexType") , Downcast this to a [`RunArray`](https://docs.rs/arrow/latest/arrow/array/struct.RunArray.html "struct arrow::array::RunArray") panicking if not possible [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#986) [§](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#method.as_any_dictionary) #### fn [as\_any\_dictionary](https://docs.rs/arrow/latest/arrow/array/trait.AsArray.html#method.as_any_dictionary) (&self) -> &dyn [AnyDictionaryArray](https://docs.rs/arrow/latest/arrow/array/trait.AnyDictionaryArray.html "trait arrow::array::AnyDictionaryArray") Downcasts this to a [`AnyDictionaryArray`](https://docs.rs/arrow/latest/arrow/array/trait.AnyDictionaryArray.html "trait arrow::array::AnyDictionaryArray") panicking if not possible [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/scalar.rs.html#95) [§](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#impl-Datum-for-%26dyn+Array) ### impl [Datum](https://docs.rs/arrow/latest/arrow/array/trait.Datum.html "trait arrow::array::Datum") for &dyn [Array](https://docs.rs/arrow/latest/arrow/array/trait.Array.html "trait arrow::array::Array") [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/scalar.rs.html#96) [§](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#method.get-1) #### fn [get](https://docs.rs/arrow/latest/arrow/array/trait.Datum.html#tymethod.get) (&self) -> (&dyn [Array](https://docs.rs/arrow/latest/arrow/array/trait.Array.html "trait arrow::array::Array") , [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) ) Returns the value for this [`Datum`](https://docs.rs/arrow/latest/arrow/array/trait.Datum.html "trait arrow::array::Datum") and a boolean indicating if the value is scalar [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/scalar.rs.html#89) [§](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#impl-Datum-for-dyn+Array) ### impl [Datum](https://docs.rs/arrow/latest/arrow/array/trait.Datum.html "trait arrow::array::Datum") for dyn [Array](https://docs.rs/arrow/latest/arrow/array/trait.Array.html "trait arrow::array::Array") [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/scalar.rs.html#90) [§](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#method.get) #### fn [get](https://docs.rs/arrow/latest/arrow/array/trait.Datum.html#tymethod.get) (&self) -> (&dyn [Array](https://docs.rs/arrow/latest/arrow/array/trait.Array.html "trait arrow::array::Array") , [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) ) Returns the value for this [`Datum`](https://docs.rs/arrow/latest/arrow/array/trait.Datum.html "trait arrow::array::Datum") and a boolean indicating if the value is scalar [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/mod.rs.html#770) [§](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#impl-PartialEq%3CT%3E-for-dyn+Array) ### impl [PartialEq](https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html "trait core::cmp::PartialEq") for dyn [Array](https://docs.rs/arrow/latest/arrow/array/trait.Array.html "trait arrow::array::Array") + '\_ where T: [Array](https://docs.rs/arrow/latest/arrow/array/trait.Array.html "trait arrow::array::Array") , [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/mod.rs.html#771) [§](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#method.eq-1) #### fn [eq](https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq) (&self, other: [&T](https://doc.rust-lang.org/nightly/std/primitive.reference.html) ) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) Tests for `self` and `other` values to be equal, and is used by `==`. 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#264) [§](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#method.ne-1) #### fn [ne](https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne) (&self, other: [&Rhs](https://doc.rust-lang.org/nightly/std/primitive.reference.html) ) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) Tests for `!=`. The default implementation is almost always sufficient, and should not be overridden without very good reason. [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/mod.rs.html#764) [§](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#impl-PartialEq-for-dyn+Array) ### impl [PartialEq](https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html "trait core::cmp::PartialEq") for dyn [Array](https://docs.rs/arrow/latest/arrow/array/trait.Array.html "trait arrow::array::Array") + '\_ [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/mod.rs.html#765) [§](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#method.eq) #### fn [eq](https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq) (&self, other: &dyn [Array](https://docs.rs/arrow/latest/arrow/array/trait.Array.html "trait arrow::array::Array") ) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) Tests for `self` and `other` values to be equal, and is used by `==`. 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#264) [§](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#method.ne) #### fn [ne](https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne) (&self, other: [&Rhs](https://doc.rust-lang.org/nightly/std/primitive.reference.html) ) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) Tests for `!=`. The default implementation is almost always sufficient, and should not be overridden without very good reason. Implementations on Foreign Types[§](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#foreign-impls) ------------------------------------------------------------------------------------------------------------- [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/mod.rs.html#432) [§](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#impl-Array-for-Arc%3Cdyn+Array%3E) ### impl [Array](https://docs.rs/arrow/latest/arrow/array/trait.Array.html "trait arrow::array::Array") for [Arc](https://doc.rust-lang.org/nightly/alloc/sync/struct.Arc.html "struct alloc::sync::Arc") Ergonomics: Allow use of an ArrayRef as an `&dyn Array` [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/mod.rs.html#462) [§](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#method.shrink_to_fit-1) #### fn [shrink\_to\_fit](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#method.shrink_to_fit) (&mut self) For shared buffers, this is a no-op. [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/mod.rs.html#433) [§](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#method.as_any) #### fn [as\_any](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#tymethod.as_any) (&self) -> &(dyn [Any](https://doc.rust-lang.org/nightly/core/any/trait.Any.html "trait core::any::Any") + 'static) [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/mod.rs.html#437) [§](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#method.to_data) #### fn [to\_data](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#tymethod.to_data) (&self) -> [ArrayData](https://docs.rs/arrow/latest/arrow/array/struct.ArrayData.html "struct arrow::array::ArrayData") [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/mod.rs.html#441) [§](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#method.into_data) #### fn [into\_data](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#tymethod.into_data) (self) -> [ArrayData](https://docs.rs/arrow/latest/arrow/array/struct.ArrayData.html "struct arrow::array::ArrayData") [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/mod.rs.html#445) [§](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#method.data_type) #### fn [data\_type](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#tymethod.data_type) (&self) -> &[DataType](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html "enum arrow::datatypes::DataType") [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/mod.rs.html#449) [§](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#method.slice) #### fn [slice](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#tymethod.slice) (&self, offset: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) , length: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) ) -> [Arc](https://doc.rust-lang.org/nightly/alloc/sync/struct.Arc.html "struct alloc::sync::Arc") [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/mod.rs.html#453) [§](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#method.len) #### fn [len](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#tymethod.len) (&self) -> [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/mod.rs.html#457) [§](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#method.is_empty) #### fn [is\_empty](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#tymethod.is_empty) (&self) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/mod.rs.html#470) [§](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#method.offset) #### fn [offset](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#tymethod.offset) (&self) -> [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/mod.rs.html#474) [§](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#method.nulls) #### fn [nulls](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#tymethod.nulls) (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <&[NullBuffer](https://docs.rs/arrow/latest/arrow/buffer/struct.NullBuffer.html "struct arrow::buffer::NullBuffer") \> [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/mod.rs.html#478) [§](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#method.logical_nulls-1) #### fn [logical\_nulls](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#method.logical_nulls) (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <[NullBuffer](https://docs.rs/arrow/latest/arrow/buffer/struct.NullBuffer.html "struct arrow::buffer::NullBuffer") \> [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/mod.rs.html#482) [§](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#method.is_null-1) #### fn [is\_null](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#method.is_null) (&self, index: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) ) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/mod.rs.html#486) [§](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#method.is_valid-1) #### fn [is\_valid](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#method.is_valid) (&self, index: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) ) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/mod.rs.html#490) [§](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#method.null_count-1) #### fn [null\_count](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#method.null_count) (&self) -> [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/mod.rs.html#494) [§](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#method.logical_null_count-1) #### fn [logical\_null\_count](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#method.logical_null_count) (&self) -> [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/mod.rs.html#498) [§](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#method.is_nullable-1) #### fn [is\_nullable](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#method.is_nullable) (&self) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/mod.rs.html#502) [§](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#method.get_buffer_memory_size) #### fn [get\_buffer\_memory\_size](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#tymethod.get_buffer_memory_size) (&self) -> [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/mod.rs.html#506) [§](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#method.get_array_memory_size) #### fn [get\_array\_memory\_size](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#tymethod.get_array_memory_size) (&self) -> [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/mod.rs.html#511) [§](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#method.claim-1) #### fn [claim](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#method.claim) (&self, pool: &dyn [MemoryPool](https://docs.rs/arrow-buffer/58.1.0/x86_64-unknown-linux-gnu/arrow_buffer/pool/trait.MemoryPool.html "trait arrow_buffer::pool::MemoryPool") ) Available on **crate feature `pool`** only. [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/mod.rs.html#516) [§](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#impl-Array-for-%26T) ### impl [Array](https://docs.rs/arrow/latest/arrow/array/trait.Array.html "trait arrow::array::Array") for [&T](https://doc.rust-lang.org/nightly/std/primitive.reference.html) where T: [Array](https://docs.rs/arrow/latest/arrow/array/trait.Array.html "trait arrow::array::Array") , [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/mod.rs.html#517) [§](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#method.as_any-1) #### fn [as\_any](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#tymethod.as_any) (&self) -> &(dyn [Any](https://doc.rust-lang.org/nightly/core/any/trait.Any.html "trait core::any::Any") + 'static) [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/mod.rs.html#521) [§](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#method.to_data-1) #### fn [to\_data](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#tymethod.to_data) (&self) -> [ArrayData](https://docs.rs/arrow/latest/arrow/array/struct.ArrayData.html "struct arrow::array::ArrayData") [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/mod.rs.html#525) [§](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#method.into_data-1) #### fn [into\_data](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#tymethod.into_data) (self) -> [ArrayData](https://docs.rs/arrow/latest/arrow/array/struct.ArrayData.html "struct arrow::array::ArrayData") [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/mod.rs.html#529) [§](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#method.data_type-1) #### fn [data\_type](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#tymethod.data_type) (&self) -> &[DataType](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html "enum arrow::datatypes::DataType") [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/mod.rs.html#533) [§](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#method.slice-1) #### fn [slice](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#tymethod.slice) (&self, offset: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) , length: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) ) -> [Arc](https://doc.rust-lang.org/nightly/alloc/sync/struct.Arc.html "struct alloc::sync::Arc") [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/mod.rs.html#537) [§](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#method.len-1) #### fn [len](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#tymethod.len) (&self) -> [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/mod.rs.html#541) [§](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#method.is_empty-1) #### fn [is\_empty](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#tymethod.is_empty) (&self) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/mod.rs.html#545) [§](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#method.offset-1) #### fn [offset](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#tymethod.offset) (&self) -> [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/mod.rs.html#549) [§](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#method.nulls-1) #### fn [nulls](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#tymethod.nulls) (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <&[NullBuffer](https://docs.rs/arrow/latest/arrow/buffer/struct.NullBuffer.html "struct arrow::buffer::NullBuffer") \> [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/mod.rs.html#553) [§](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#method.logical_nulls-2) #### fn [logical\_nulls](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#method.logical_nulls) (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <[NullBuffer](https://docs.rs/arrow/latest/arrow/buffer/struct.NullBuffer.html "struct arrow::buffer::NullBuffer") \> [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/mod.rs.html#557) [§](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#method.is_null-2) #### fn [is\_null](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#method.is_null) (&self, index: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) ) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/mod.rs.html#561) [§](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#method.is_valid-2) #### fn [is\_valid](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#method.is_valid) (&self, index: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) ) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/mod.rs.html#565) [§](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#method.null_count-2) #### fn [null\_count](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#method.null_count) (&self) -> [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/mod.rs.html#569) [§](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#method.logical_null_count-2) #### fn [logical\_null\_count](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#method.logical_null_count) (&self) -> [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/mod.rs.html#573) [§](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#method.is_nullable-2) #### fn [is\_nullable](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#method.is_nullable) (&self) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/mod.rs.html#577) [§](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#method.get_buffer_memory_size-1) #### fn [get\_buffer\_memory\_size](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#tymethod.get_buffer_memory_size) (&self) -> [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/mod.rs.html#581) [§](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#method.get_array_memory_size-1) #### fn [get\_array\_memory\_size](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#tymethod.get_array_memory_size) (&self) -> [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/mod.rs.html#586) [§](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#method.claim-2) #### fn [claim](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#method.claim) (&self, pool: &dyn [MemoryPool](https://docs.rs/arrow-buffer/58.1.0/x86_64-unknown-linux-gnu/arrow_buffer/pool/trait.MemoryPool.html "trait arrow_buffer::pool::MemoryPool") ) Available on **crate feature `pool`** only. Implementors[§](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#implementors) ---------------------------------------------------------------------------------------- [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/boolean_array.rs.html#374) [§](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#impl-Array-for-BooleanArray) ### impl [Array](https://docs.rs/arrow/latest/arrow/array/trait.Array.html "trait arrow::array::Array") for [BooleanArray](https://docs.rs/arrow/latest/arrow/array/struct.BooleanArray.html "struct arrow::array::BooleanArray") SAFETY: Correctly implements the contract of Arrow Arrays [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/fixed_size_binary_array.rs.html#605) [§](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#impl-Array-for-FixedSizeBinaryArray) ### impl [Array](https://docs.rs/arrow/latest/arrow/array/trait.Array.html "trait arrow::array::Array") for [FixedSizeBinaryArray](https://docs.rs/arrow/latest/arrow/array/struct.FixedSizeBinaryArray.html "struct arrow::array::FixedSizeBinaryArray") SAFETY: Correctly implements the contract of Arrow Arrays [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/fixed_size_list_array.rs.html#467) [§](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#impl-Array-for-FixedSizeListArray) ### impl [Array](https://docs.rs/arrow/latest/arrow/array/trait.Array.html "trait arrow::array::Array") for [FixedSizeListArray](https://docs.rs/arrow/latest/arrow/array/struct.FixedSizeListArray.html "struct arrow::array::FixedSizeListArray") SAFETY: Correctly implements the contract of Arrow Arrays [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/map_array.rs.html#366) [§](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#impl-Array-for-MapArray) ### impl [Array](https://docs.rs/arrow/latest/arrow/array/trait.Array.html "trait arrow::array::Array") for [MapArray](https://docs.rs/arrow/latest/arrow/array/struct.MapArray.html "struct arrow::array::MapArray") SAFETY: Correctly implements the contract of Arrow Arrays [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/null_array.rs.html#80) [§](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#impl-Array-for-NullArray) ### impl [Array](https://docs.rs/arrow/latest/arrow/array/trait.Array.html "trait arrow::array::Array") for [NullArray](https://docs.rs/arrow/latest/arrow/array/struct.NullArray.html "struct arrow::array::NullArray") SAFETY: Correctly implements the contract of Arrow Arrays [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/struct_array.rs.html#406) [§](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#impl-Array-for-StructArray) ### impl [Array](https://docs.rs/arrow/latest/arrow/array/trait.Array.html "trait arrow::array::Array") for [StructArray](https://docs.rs/arrow/latest/arrow/array/struct.StructArray.html "struct arrow::array::StructArray") SAFETY: Correctly implements the contract of Arrow Arrays [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/union_array.rs.html#746) [§](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#impl-Array-for-UnionArray) ### impl [Array](https://docs.rs/arrow/latest/arrow/array/trait.Array.html "trait arrow::array::Array") for [UnionArray](https://docs.rs/arrow/latest/arrow/array/struct.UnionArray.html "struct arrow::array::UnionArray") SAFETY: Correctly implements the contract of Arrow Arrays [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/dictionary_array.rs.html#864) [§](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#impl-Array-for-TypedDictionaryArray%3C'_,+K,+V%3E) ### impl [Array](https://docs.rs/arrow/latest/arrow/array/trait.Array.html "trait arrow::array::Array") for [TypedDictionaryArray](https://docs.rs/arrow/latest/arrow/array/struct.TypedDictionaryArray.html "struct arrow::array::TypedDictionaryArray") <'\_, K, V> where K: [ArrowDictionaryKeyType](https://docs.rs/arrow/latest/arrow/datatypes/trait.ArrowDictionaryKeyType.html "trait arrow::datatypes::ArrowDictionaryKeyType") , V: [Sync](https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html "trait core::marker::Sync") , [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/list_array.rs.html#556) [§](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#impl-Array-for-GenericListArray%3COffsetSize%3E) ### impl [Array](https://docs.rs/arrow/latest/arrow/array/trait.Array.html "trait arrow::array::Array") for [GenericListArray](https://docs.rs/arrow/latest/arrow/array/struct.GenericListArray.html "struct arrow::array::GenericListArray") where OffsetSize: [OffsetSizeTrait](https://docs.rs/arrow/latest/arrow/array/trait.OffsetSizeTrait.html "trait arrow::array::OffsetSizeTrait") , SAFETY: Correctly implements the contract of Arrow Arrays [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/list_view_array.rs.html#419) [§](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#impl-Array-for-GenericListViewArray%3COffsetSize%3E) ### impl [Array](https://docs.rs/arrow/latest/arrow/array/trait.Array.html "trait arrow::array::Array") for [GenericListViewArray](https://docs.rs/arrow/latest/arrow/array/struct.GenericListViewArray.html "struct arrow::array::GenericListViewArray") where OffsetSize: [OffsetSizeTrait](https://docs.rs/arrow/latest/arrow/array/trait.OffsetSizeTrait.html "trait arrow::array::OffsetSizeTrait") , SAFETY: Correctly implements the contract of Arrow Arrays [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/run_array.rs.html#621) [§](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#impl-Array-for-TypedRunArray%3C'_,+R,+V%3E) ### impl [Array](https://docs.rs/arrow/latest/arrow/array/trait.Array.html "trait arrow::array::Array") for [TypedRunArray](https://docs.rs/arrow/latest/arrow/array/struct.TypedRunArray.html "struct arrow::array::TypedRunArray") <'\_, R, V> where R: [RunEndIndexType](https://docs.rs/arrow/latest/arrow/datatypes/trait.RunEndIndexType.html "trait arrow::datatypes::RunEndIndexType") , V: [Sync](https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html "trait core::marker::Sync") , SAFETY: Correctly implements the contract of Arrow Arrays [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/dictionary_array.rs.html#699) [§](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#impl-Array-for-DictionaryArray%3CT%3E) ### impl [Array](https://docs.rs/arrow/latest/arrow/array/trait.Array.html "trait arrow::array::Array") for [DictionaryArray](https://docs.rs/arrow/latest/arrow/array/struct.DictionaryArray.html "struct arrow::array::DictionaryArray") where T: [ArrowDictionaryKeyType](https://docs.rs/arrow/latest/arrow/datatypes/trait.ArrowDictionaryKeyType.html "trait arrow::datatypes::ArrowDictionaryKeyType") , SAFETY: Correctly implements the contract of Arrow Arrays [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/byte_array.rs.html#466) [§](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#impl-Array-for-GenericByteArray%3CT%3E) ### impl [Array](https://docs.rs/arrow/latest/arrow/array/trait.Array.html "trait arrow::array::Array") for [GenericByteArray](https://docs.rs/arrow/latest/arrow/array/struct.GenericByteArray.html "struct arrow::array::GenericByteArray") where T: [ByteArrayType](https://docs.rs/arrow/latest/arrow/datatypes/trait.ByteArrayType.html "trait arrow::datatypes::ByteArrayType") , SAFETY: Correctly implements the contract of Arrow Arrays [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/byte_view_array.rs.html#824) [§](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#impl-Array-for-GenericByteViewArray%3CT%3E) ### impl [Array](https://docs.rs/arrow/latest/arrow/array/trait.Array.html "trait arrow::array::Array") for [GenericByteViewArray](https://docs.rs/arrow/latest/arrow/array/struct.GenericByteViewArray.html "struct arrow::array::GenericByteViewArray") where T: [ByteViewType](https://docs.rs/arrow/latest/arrow/datatypes/trait.ByteViewType.html "trait arrow::datatypes::ByteViewType") + ?[Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , SAFETY: Correctly implements the contract of Arrow Arrays [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/primitive_array.rs.html#1190) [§](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#impl-Array-for-PrimitiveArray%3CT%3E) ### impl [Array](https://docs.rs/arrow/latest/arrow/array/trait.Array.html "trait arrow::array::Array") for [PrimitiveArray](https://docs.rs/arrow/latest/arrow/array/struct.PrimitiveArray.html "struct arrow::array::PrimitiveArray") where T: [ArrowPrimitiveType](https://docs.rs/arrow/latest/arrow/array/trait.ArrowPrimitiveType.html "trait arrow::array::ArrowPrimitiveType") , SAFETY: Correctly implements the contract of Arrow Arrays [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/run_array.rs.html#355) [§](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#impl-Array-for-RunArray%3CT%3E) ### impl [Array](https://docs.rs/arrow/latest/arrow/array/trait.Array.html "trait arrow::array::Array") for [RunArray](https://docs.rs/arrow/latest/arrow/array/struct.RunArray.html "struct arrow::array::RunArray") where T: [RunEndIndexType](https://docs.rs/arrow/latest/arrow/datatypes/trait.RunEndIndexType.html "trait arrow::datatypes::RunEndIndexType") , SAFETY: Correctly implements the contract of Arrow Arrays --- # arrow::compute - Rust [Docs.rs](https://docs.rs/) * [arrow-58.1.0](https://docs.rs/arrow/latest/arrow/compute/index.html# "Rust implementation of Apache Arrow") * arrow 58.1.0 * [Permalink](https://docs.rs/arrow/58.1.0/arrow/compute/ "Get a link to this specific version") * [Docs.rs crate page](https://docs.rs/crate/arrow/latest "See arrow in docs.rs") * [Apache-2.0](https://spdx.org/licenses/Apache-2.0) * Links * [Homepage](https://github.com/apache/arrow-rs) * [Repository](https://github.com/apache/arrow-rs) * [crates.io](https://crates.io/crates/arrow "See arrow in crates.io") * [Source](https://docs.rs/crate/arrow/latest/source/ "Browse source of arrow-58.1.0") * Owners * [andygrove](https://crates.io/users/andygrove) * [kou](https://crates.io/users/kou) * [kszucs](https://crates.io/users/kszucs) * [xhochy](https://crates.io/users/xhochy) * [nevi-me](https://crates.io/users/nevi-me) * [alamb](https://crates.io/users/alamb) * [tustvold](https://crates.io/users/tustvold) * Dependencies * * [arrow-arith ^58.1.0 _normal_](https://docs.rs/arrow-arith/^58.1.0/) * [arrow-array ^58.1.0 _normal_](https://docs.rs/arrow-array/^58.1.0/) * [arrow-buffer ^58.1.0 _normal_](https://docs.rs/arrow-buffer/^58.1.0/) * [arrow-cast ^58.1.0 _normal_](https://docs.rs/arrow-cast/^58.1.0/) * [arrow-csv ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-csv/^58.1.0/) * [arrow-data ^58.1.0 _normal_](https://docs.rs/arrow-data/^58.1.0/) * [arrow-ipc ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-ipc/^58.1.0/) * [arrow-json ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-json/^58.1.0/) * [arrow-ord ^58.1.0 _normal_](https://docs.rs/arrow-ord/^58.1.0/) * [arrow-pyarrow ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-pyarrow/^58.1.0/) * [arrow-row ^58.1.0 _normal_](https://docs.rs/arrow-row/^58.1.0/) * [arrow-schema ^58.1.0 _normal_](https://docs.rs/arrow-schema/^58.1.0/) * [arrow-select ^58.1.0 _normal_](https://docs.rs/arrow-select/^58.1.0/) * [arrow-string ^58.1.0 _normal_](https://docs.rs/arrow-string/^58.1.0/) * [half ^2.1 _normal_ _optional_](https://docs.rs/half/^2.1/) * [rand ^0.9 _normal_ _optional_](https://docs.rs/rand/^0.9/) * [bytes ^1.9 _dev_](https://docs.rs/bytes/^1.9/) * [chrono ^0.4.40 _dev_](https://docs.rs/chrono/^0.4.40/) * [criterion ^0.8.0 _dev_](https://docs.rs/criterion/^0.8.0/) * [half ^2.1 _dev_](https://docs.rs/half/^2.1/) * [memmap2 ^0.9.3 _dev_](https://docs.rs/memmap2/^0.9.3/) * [rand ^0.9 _dev_](https://docs.rs/rand/^0.9/) * [serde ^1.0 _dev_](https://docs.rs/serde/^1.0/) * Versions * [**100%** of the crate is documented](https://docs.rs/crate/arrow/latest) * [Platform](https://docs.rs/arrow/latest/arrow/compute/index.html#) * [x86\_64-unknown-linux-gnu](https://docs.rs/crate/arrow/latest/target-redirect/arrow/compute/) * [Feature flags](https://docs.rs/crate/arrow/latest/features "Browse available feature flags of arrow-58.1.0") * [docs.rs](https://docs.rs/arrow/latest/arrow/compute/index.html#) * [About docs.rs](https://docs.rs/about) * [Badges](https://docs.rs/about/badges) * [Builds](https://docs.rs/about/builds) * [Metadata](https://docs.rs/about/metadata) * [Shorthand URLs](https://docs.rs/about/redirections) * [Download](https://docs.rs/about/download) * [Rustdoc JSON](https://docs.rs/about/rustdoc-json) * [Build queue](https://docs.rs/releases/queue) * [Privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#docs.rs) * [Rust](https://docs.rs/arrow/latest/arrow/compute/index.html#) * [Rust website](https://www.rust-lang.org/) * [The Book](https://doc.rust-lang.org/book/) * [Standard Library API Reference](https://doc.rust-lang.org/std/) * [Rust by Example](https://doc.rust-lang.org/rust-by-example/) * [The Cargo Guide](https://doc.rust-lang.org/cargo/guide/) * [Clippy Documentation](https://doc.rust-lang.org/nightly/clippy) [Skip to main content](https://docs.rs/arrow/latest/arrow/compute/index.html#main-content) [Module compute](https://docs.rs/arrow/latest/arrow/compute/index.html#) ------------------------------------------------------------------------- [arrow](https://docs.rs/arrow/latest/arrow/index.html) Module compute Copy item path ============================= [Source](https://docs.rs/arrow/latest/src/arrow/compute/mod.rs.html#18-40) Expand description Computation kernels on Arrow Arrays Re-exports[§](https://docs.rs/arrow/latest/arrow/compute/index.html#reexports) ------------------------------------------------------------------------------- `pub use self::kernels::[comparison](https://docs.rs/arrow/latest/arrow/compute/kernels/comparison/index.html "mod arrow::compute::kernels::comparison") ::*;` Modules[§](https://docs.rs/arrow/latest/arrow/compute/index.html#modules) -------------------------------------------------------------------------- [kernels](https://docs.rs/arrow/latest/arrow/compute/kernels/index.html "mod arrow::compute::kernels") Computation kernels on Arrow Arrays Structs[§](https://docs.rs/arrow/latest/arrow/compute/index.html#structs) -------------------------------------------------------------------------- [BatchCoalescer](https://docs.rs/arrow/latest/arrow/compute/struct.BatchCoalescer.html "struct arrow::compute::BatchCoalescer") Concatenate multiple [`RecordBatch`](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html "struct arrow::array::RecordBatch") es [CastOptions](https://docs.rs/arrow/latest/arrow/compute/struct.CastOptions.html "struct arrow::compute::CastOptions") CastOptions provides a way to override the default cast behaviors [FilterBuilder](https://docs.rs/arrow/latest/arrow/compute/struct.FilterBuilder.html "struct arrow::compute::FilterBuilder") A builder to construct [`FilterPredicate`](https://docs.rs/arrow/latest/arrow/compute/struct.FilterPredicate.html "struct arrow::compute::FilterPredicate") [FilterPredicate](https://docs.rs/arrow/latest/arrow/compute/struct.FilterPredicate.html "struct arrow::compute::FilterPredicate") A filtering predicate that can be applied to an [`Array`](https://docs.rs/arrow/latest/arrow/array/trait.Array.html "trait arrow::array::Array") [FixedLexicographicalComparator](https://docs.rs/arrow/latest/arrow/compute/struct.FixedLexicographicalComparator.html "struct arrow::compute::FixedLexicographicalComparator") A lexicographical comparator that wraps given array data (columns) and can lexicographically compare data at given two indices. This version of the comparator is for compile-time constant number of columns. The lifetime is the same at the data wrapped. [LexicographicalComparator](https://docs.rs/arrow/latest/arrow/compute/struct.LexicographicalComparator.html "struct arrow::compute::LexicographicalComparator") A lexicographical comparator that wraps given array data (columns) and can lexicographically compare data at given two indices. The lifetime is the same at the data wrapped. [Partitions](https://docs.rs/arrow/latest/arrow/compute/struct.Partitions.html "struct arrow::compute::Partitions") A computed set of partitions, see [`partition`](https://docs.rs/arrow/latest/arrow/compute/fn.partition.html "fn arrow::compute::partition") [SlicesIterator](https://docs.rs/arrow/latest/arrow/compute/struct.SlicesIterator.html "struct arrow::compute::SlicesIterator") An iterator of `(usize, usize)` each representing an interval `[start, end)` whose slots of a bitmap [Buffer](https://docs.rs/arrow/latest/arrow/buffer/struct.Buffer.html "struct arrow::buffer::Buffer")\ are true.\ \ [SortColumn](https://docs.rs/arrow/latest/arrow/compute/struct.SortColumn.html "struct arrow::compute::SortColumn")\ \ One column to be used in lexicographical sort\ \ [SortOptions](https://docs.rs/arrow/latest/arrow/compute/struct.SortOptions.html "struct arrow::compute::SortOptions")\ \ Options that define the sort order of a given column\ \ [TakeOptions](https://docs.rs/arrow/latest/arrow/compute/struct.TakeOptions.html "struct arrow::compute::TakeOptions")\ \ Options that define how `take` should behave\ \ Enums[§](https://docs.rs/arrow/latest/arrow/compute/index.html#enums)\ \ ----------------------------------------------------------------------\ \ [DatePart](https://docs.rs/arrow/latest/arrow/compute/enum.DatePart.html "enum arrow::compute::DatePart")\ \ Valid parts to extract from date/time/timestamp arrays.\ \ Traits[§](https://docs.rs/arrow/latest/arrow/compute/index.html#traits)\ \ ------------------------------------------------------------------------\ \ [DecimalCast](https://docs.rs/arrow/latest/arrow/compute/trait.DecimalCast.html "trait arrow::compute::DecimalCast")\ \ A utility trait that provides checked conversions between decimal types inspired by [`NumCast`](https://docs.rs/num-traits/0.2.19/x86_64-unknown-linux-gnu/num_traits/cast/trait.NumCast.html "trait num_traits::cast::NumCast")\ \ Functions[§](https://docs.rs/arrow/latest/arrow/compute/index.html#functions)\ \ ------------------------------------------------------------------------------\ \ [and](https://docs.rs/arrow/latest/arrow/compute/fn.and.html "fn arrow::compute::and")\ \ Performs `AND` operation on two arrays. If either left or right value is null then the result is also null.\ \ [and\_kleene](https://docs.rs/arrow/latest/arrow/compute/fn.and_kleene.html "fn arrow::compute::and_kleene")\ \ Logical ‘and’ boolean values with Kleene logic\ \ [and\_not](https://docs.rs/arrow/latest/arrow/compute/fn.and_not.html "fn arrow::compute::and_not")\ \ Performs `AND_NOT` operation on two arrays. If either left or right value is null then the result is also null.\ \ [binary](https://docs.rs/arrow/latest/arrow/compute/fn.binary.html "fn arrow::compute::binary")\ \ Allies a binary infallable function to two [`PrimitiveArray`](https://docs.rs/arrow/latest/arrow/array/struct.PrimitiveArray.html "struct arrow::array::PrimitiveArray")\ s, producing a new [`PrimitiveArray`](https://docs.rs/arrow/latest/arrow/array/struct.PrimitiveArray.html "struct arrow::array::PrimitiveArray")\ \ [binary\_mut](https://docs.rs/arrow/latest/arrow/compute/fn.binary_mut.html "fn arrow::compute::binary_mut")\ \ Applies a binary and infallible function to values in two arrays, replacing the values in the first array in place.\ \ [bit\_and](https://docs.rs/arrow/latest/arrow/compute/fn.bit_and.html "fn arrow::compute::bit_and")\ \ Returns the bitwise and of all non-null input values.\ \ [bit\_or](https://docs.rs/arrow/latest/arrow/compute/fn.bit_or.html "fn arrow::compute::bit_or")\ \ Returns the bitwise or of all non-null input values.\ \ [bit\_xor](https://docs.rs/arrow/latest/arrow/compute/fn.bit_xor.html "fn arrow::compute::bit_xor")\ \ Returns the bitwise xor of all non-null input values.\ \ [bool\_and](https://docs.rs/arrow/latest/arrow/compute/fn.bool_and.html "fn arrow::compute::bool_and")\ \ Returns true if all non-null input values are true, otherwise false.\ \ [bool\_or](https://docs.rs/arrow/latest/arrow/compute/fn.bool_or.html "fn arrow::compute::bool_or")\ \ Returns true if any non-null input value is true, otherwise false.\ \ [can\_cast\_types](https://docs.rs/arrow/latest/arrow/compute/fn.can_cast_types.html "fn arrow::compute::can_cast_types")\ \ Return true if a value of type `from_type` can be cast into a value of `to_type`.\ \ [cast](https://docs.rs/arrow/latest/arrow/compute/fn.cast.html "fn arrow::compute::cast")\ \ Cast `array` to the provided data type and return a new Array with type `to_type`, if possible.\ \ [cast\_with\_options](https://docs.rs/arrow/latest/arrow/compute/fn.cast_with_options.html "fn arrow::compute::cast_with_options")\ \ Try to cast `array` to `to_type` if possible.\ \ [concat](https://docs.rs/arrow/latest/arrow/compute/fn.concat.html "fn arrow::compute::concat")\ \ Concatenate multiple [Array](https://docs.rs/arrow/latest/arrow/array/trait.Array.html "trait arrow::array::Array")\ of the same type into a single [ArrayRef](https://docs.rs/arrow/latest/arrow/array/type.ArrayRef.html "type arrow::array::ArrayRef")\ .\ \ [concat\_batches](https://docs.rs/arrow/latest/arrow/compute/fn.concat_batches.html "fn arrow::compute::concat_batches")\ \ Concatenates `batches` together into a single [`RecordBatch`](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html "struct arrow::array::RecordBatch")\ .\ \ [date\_part](https://docs.rs/arrow/latest/arrow/compute/fn.date_part.html "fn arrow::compute::date_part")\ \ Given an array, return a new array with the extracted [`DatePart`](https://docs.rs/arrow/latest/arrow/compute/enum.DatePart.html "enum arrow::compute::DatePart")\ as signed 32-bit integer values.\ \ [filter](https://docs.rs/arrow/latest/arrow/compute/fn.filter.html "fn arrow::compute::filter")\ \ Returns a filtered `values` [`Array`](https://docs.rs/arrow/latest/arrow/array/trait.Array.html "trait arrow::array::Array")\ where the corresponding elements of `predicate` are `true`.\ \ [filter\_record\_batch](https://docs.rs/arrow/latest/arrow/compute/fn.filter_record_batch.html "fn arrow::compute::filter_record_batch")\ \ Returns a filtered [RecordBatch](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html "struct arrow::array::RecordBatch")\ where the corresponding elements of `predicate` are true.\ \ [interleave](https://docs.rs/arrow/latest/arrow/compute/fn.interleave.html "fn arrow::compute::interleave")\ \ Takes elements by index from a list of [`Array`](https://docs.rs/arrow/latest/arrow/array/trait.Array.html "trait arrow::array::Array")\ , creating a new [`Array`](https://docs.rs/arrow/latest/arrow/array/trait.Array.html "trait arrow::array::Array")\ from those values.\ \ [interleave\_record\_batch](https://docs.rs/arrow/latest/arrow/compute/fn.interleave_record_batch.html "fn arrow::compute::interleave_record_batch")\ \ Interleave rows by index from multiple [`RecordBatch`](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html "struct arrow::array::RecordBatch")\ instances and return a new [`RecordBatch`](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html "struct arrow::array::RecordBatch")\ .\ \ [is\_not\_null](https://docs.rs/arrow/latest/arrow/compute/fn.is_not_null.html "fn arrow::compute::is_not_null")\ \ Returns a non-null [BooleanArray](https://docs.rs/arrow/latest/arrow/array/struct.BooleanArray.html "struct arrow::array::BooleanArray")\ with whether each value of the array is not null.\ \ [is\_null](https://docs.rs/arrow/latest/arrow/compute/fn.is_null.html "fn arrow::compute::is_null")\ \ Returns a non-null [BooleanArray](https://docs.rs/arrow/latest/arrow/array/struct.BooleanArray.html "struct arrow::array::BooleanArray")\ with whether each value of the array is null.\ \ [lexsort](https://docs.rs/arrow/latest/arrow/compute/fn.lexsort.html "fn arrow::compute::lexsort")\ \ Sort a list of `ArrayRef` using `SortOptions` provided for each array.\ \ [lexsort\_to\_indices](https://docs.rs/arrow/latest/arrow/compute/fn.lexsort_to_indices.html "fn arrow::compute::lexsort_to_indices")\ \ Sort elements lexicographically from a list of `ArrayRef` into an unsigned integer (`UInt32Array`) of indices.\ \ [max](https://docs.rs/arrow/latest/arrow/compute/fn.max.html "fn arrow::compute::max")\ \ Returns the maximum value in the array, according to the natural order. For floating point arrays any NaN values are considered to be greater than any other non-null value\ \ [max\_array](https://docs.rs/arrow/latest/arrow/compute/fn.max_array.html "fn arrow::compute::max_array")\ \ Returns the max of values in the array of `ArrowNumericType` type, or dictionary array with value of `ArrowNumericType` type.\ \ [max\_binary](https://docs.rs/arrow/latest/arrow/compute/fn.max_binary.html "fn arrow::compute::max_binary")\ \ Returns the maximum value in the binary array, according to the natural order.\ \ [max\_binary\_view](https://docs.rs/arrow/latest/arrow/compute/fn.max_binary_view.html "fn arrow::compute::max_binary_view")\ \ Returns the maximum value in the binary view array, according to the natural order.\ \ [max\_boolean](https://docs.rs/arrow/latest/arrow/compute/fn.max_boolean.html "fn arrow::compute::max_boolean")\ \ Returns the maximum value in the boolean array\ \ [max\_fixed\_size\_binary](https://docs.rs/arrow/latest/arrow/compute/fn.max_fixed_size_binary.html "fn arrow::compute::max_fixed_size_binary")\ \ Returns the maximum value in the fixed size binary array, according to the natural order.\ \ [max\_string](https://docs.rs/arrow/latest/arrow/compute/fn.max_string.html "fn arrow::compute::max_string")\ \ Returns the maximum value in the string array, according to the natural order.\ \ [max\_string\_view](https://docs.rs/arrow/latest/arrow/compute/fn.max_string_view.html "fn arrow::compute::max_string_view")\ \ Returns the maximum value in the string view array, according to the natural order.\ \ [min](https://docs.rs/arrow/latest/arrow/compute/fn.min.html "fn arrow::compute::min")\ \ Returns the minimum value in the array, according to the natural order. For floating point arrays any NaN values are considered to be greater than any other non-null value\ \ [min\_array](https://docs.rs/arrow/latest/arrow/compute/fn.min_array.html "fn arrow::compute::min_array")\ \ Returns the min of values in the array of `ArrowNumericType` type, or dictionary array with value of `ArrowNumericType` type.\ \ [min\_binary](https://docs.rs/arrow/latest/arrow/compute/fn.min_binary.html "fn arrow::compute::min_binary")\ \ Returns the minimum value in the binary array, according to the natural order.\ \ [min\_binary\_view](https://docs.rs/arrow/latest/arrow/compute/fn.min_binary_view.html "fn arrow::compute::min_binary_view")\ \ Returns the minimum value in the binary view array, according to the natural order.\ \ [min\_boolean](https://docs.rs/arrow/latest/arrow/compute/fn.min_boolean.html "fn arrow::compute::min_boolean")\ \ Returns the minimum value in the boolean array.\ \ [min\_fixed\_size\_binary](https://docs.rs/arrow/latest/arrow/compute/fn.min_fixed_size_binary.html "fn arrow::compute::min_fixed_size_binary")\ \ Returns the minimum value in the fixed size binary array, according to the natural order.\ \ [min\_string](https://docs.rs/arrow/latest/arrow/compute/fn.min_string.html "fn arrow::compute::min_string")\ \ Returns the minimum value in the string array, according to the natural order.\ \ [min\_string\_view](https://docs.rs/arrow/latest/arrow/compute/fn.min_string_view.html "fn arrow::compute::min_string_view")\ \ Returns the minimum value in the string view array, according to the natural order.\ \ [multiply\_fixed\_point](https://docs.rs/arrow/latest/arrow/compute/fn.multiply_fixed_point.html "fn arrow::compute::multiply_fixed_point")\ \ Perform `left * right` operation on two decimal arrays. If either left or right value is null then the result is also null.\ \ [multiply\_fixed\_point\_checked](https://docs.rs/arrow/latest/arrow/compute/fn.multiply_fixed_point_checked.html "fn arrow::compute::multiply_fixed_point_checked")\ \ Perform `left * right` operation on two decimal arrays. If either left or right value is null then the result is also null.\ \ [multiply\_fixed\_point\_dyn](https://docs.rs/arrow/latest/arrow/compute/fn.multiply_fixed_point_dyn.html "fn arrow::compute::multiply_fixed_point_dyn")\ \ Perform `left * right` operation on two decimal arrays. If either left or right value is null then the result is also null.\ \ [not](https://docs.rs/arrow/latest/arrow/compute/fn.not.html "fn arrow::compute::not")\ \ Performs unary `NOT` operation on an arrays. If value is null then the result is also null.\ \ [nullif](https://docs.rs/arrow/latest/arrow/compute/fn.nullif.html "fn arrow::compute::nullif")\ \ Returns a new array with the same values and the validity bit to false where the corresponding element of `right` is true.\ \ [or](https://docs.rs/arrow/latest/arrow/compute/fn.or.html "fn arrow::compute::or")\ \ Performs `OR` operation on two arrays. If either left or right value is null then the result is also null.\ \ [or\_kleene](https://docs.rs/arrow/latest/arrow/compute/fn.or_kleene.html "fn arrow::compute::or_kleene")\ \ Logical ‘or’ boolean values with Kleene logic\ \ [partial\_sort](https://docs.rs/arrow/latest/arrow/compute/fn.partial_sort.html "fn arrow::compute::partial_sort")\ \ It’s unstable\_sort, may not preserve the order of equal elements\ \ [partition](https://docs.rs/arrow/latest/arrow/compute/fn.partition.html "fn arrow::compute::partition")\ \ Given a list of lexicographically sorted columns, computes the [`Partitions`](https://docs.rs/arrow/latest/arrow/compute/struct.Partitions.html "struct arrow::compute::Partitions")\ , where a partition consists of the set of consecutive rows with equal values\ \ [partition\_validity](https://docs.rs/arrow/latest/arrow/compute/fn.partition_validity.html "fn arrow::compute::partition_validity")\ \ Partition indices of an Arrow array into two categories:\ \ [prep\_null\_mask\_filter](https://docs.rs/arrow/latest/arrow/compute/fn.prep_null_mask_filter.html "fn arrow::compute::prep_null_mask_filter")\ \ Convert all null values in `BooleanArray` to `false`\ \ [rank](https://docs.rs/arrow/latest/arrow/compute/fn.rank.html "fn arrow::compute::rank")\ \ Assigns a rank to each value in `array` based on its position in the sorted order\ \ [regexp\_is\_match](https://docs.rs/arrow/latest/arrow/compute/fn.regexp_is_match.html "fn arrow::compute::regexp_is_match")\ \ Return BooleanArray indicating which strings in an array match an array of regular expressions.\ \ [regexp\_is\_match\_scalar](https://docs.rs/arrow/latest/arrow/compute/fn.regexp_is_match_scalar.html "fn arrow::compute::regexp_is_match_scalar")\ \ Return BooleanArray indicating which strings in an array match a single regular expression.\ \ [regexp\_match](https://docs.rs/arrow/latest/arrow/compute/fn.regexp_match.html "fn arrow::compute::regexp_match")\ \ Extract all groups matched by a regular expression for a given String array.\ \ [rescale\_decimal](https://docs.rs/arrow/latest/arrow/compute/fn.rescale_decimal.html "fn arrow::compute::rescale_decimal")\ \ Rescales a decimal value from `(input_precision, input_scale)` to `(output_precision, output_scale)` and returns the converted number when it fits within the output precision.\ \ [shift](https://docs.rs/arrow/latest/arrow/compute/fn.shift.html "fn arrow::compute::shift")\ \ Shifts array by defined number of items (to left or right) A positive value for `offset` shifts the array to the right a negative value shifts the array to the left.\ \ [sort](https://docs.rs/arrow/latest/arrow/compute/fn.sort.html "fn arrow::compute::sort")\ \ Sort the `ArrayRef` using `SortOptions`.\ \ [sort\_limit](https://docs.rs/arrow/latest/arrow/compute/fn.sort_limit.html "fn arrow::compute::sort_limit")\ \ Sort the `ArrayRef` partially.\ \ [sort\_to\_indices](https://docs.rs/arrow/latest/arrow/compute/fn.sort_to_indices.html "fn arrow::compute::sort_to_indices")\ \ Sort elements from `ArrayRef` into an unsigned integer (`UInt32Array`) of indices. Floats are sorted using IEEE 754 totalOrder. `limit` is an option for [partial\_sort](https://docs.rs/arrow/latest/arrow/compute/fn.partial_sort.html "fn arrow::compute::partial_sort")\ .\ \ [sum](https://docs.rs/arrow/latest/arrow/compute/fn.sum.html "fn arrow::compute::sum")\ \ Returns the sum of values in the primitive array.\ \ [sum\_array](https://docs.rs/arrow/latest/arrow/compute/fn.sum_array.html "fn arrow::compute::sum_array")\ \ Returns the sum of values in the array.\ \ [sum\_array\_checked](https://docs.rs/arrow/latest/arrow/compute/fn.sum_array_checked.html "fn arrow::compute::sum_array_checked")\ \ Returns the sum of values in the array.\ \ [sum\_checked](https://docs.rs/arrow/latest/arrow/compute/fn.sum_checked.html "fn arrow::compute::sum_checked")\ \ Returns the sum of values in the primitive array.\ \ [take](https://docs.rs/arrow/latest/arrow/compute/fn.take.html "fn arrow::compute::take")\ \ Take elements by index from [Array](https://docs.rs/arrow/latest/arrow/array/trait.Array.html "trait arrow::array::Array")\ , creating a new [Array](https://docs.rs/arrow/latest/arrow/array/trait.Array.html "trait arrow::array::Array")\ from those indexes.\ \ [take\_arrays](https://docs.rs/arrow/latest/arrow/compute/fn.take_arrays.html "fn arrow::compute::take_arrays")\ \ For each [ArrayRef](https://docs.rs/arrow/latest/arrow/array/type.ArrayRef.html "type arrow::array::ArrayRef")\ in the [`Vec`](https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html "struct alloc::vec::Vec")\ , take elements by index and create a new [`Vec`](https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html "struct alloc::vec::Vec")\ from those indices.\ \ [take\_record\_batch](https://docs.rs/arrow/latest/arrow/compute/fn.take_record_batch.html "fn arrow::compute::take_record_batch")\ \ Take rows by index from [`RecordBatch`](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html "struct arrow::array::RecordBatch")\ and returns a new [`RecordBatch`](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html "struct arrow::array::RecordBatch")\ from those indexes.\ \ [try\_binary](https://docs.rs/arrow/latest/arrow/compute/fn.try_binary.html "fn arrow::compute::try_binary")\ \ Applies the provided fallible binary operation across `a` and `b`.\ \ [try\_binary\_mut](https://docs.rs/arrow/latest/arrow/compute/fn.try_binary_mut.html "fn arrow::compute::try_binary_mut")\ \ Applies the provided fallible binary operation across `a` and `b` by mutating the mutable [`PrimitiveArray`](https://docs.rs/arrow/latest/arrow/array/struct.PrimitiveArray.html "struct arrow::array::PrimitiveArray")\ `a` with the results.\ \ [try\_unary](https://docs.rs/arrow/latest/arrow/compute/fn.try_unary.html "fn arrow::compute::try_unary")\ \ See [`PrimitiveArray::try_unary`](https://docs.rs/arrow/latest/arrow/array/struct.PrimitiveArray.html#method.try_unary "method arrow::array::PrimitiveArray::try_unary")\ \ [try\_unary\_mut](https://docs.rs/arrow/latest/arrow/compute/fn.try_unary_mut.html "fn arrow::compute::try_unary_mut")\ \ See [`PrimitiveArray::try_unary_mut`](https://docs.rs/arrow/latest/arrow/array/struct.PrimitiveArray.html#method.try_unary_mut "method arrow::array::PrimitiveArray::try_unary_mut")\ \ [unary](https://docs.rs/arrow/latest/arrow/compute/fn.unary.html "fn arrow::compute::unary")\ \ See [`PrimitiveArray::unary`](https://docs.rs/arrow/latest/arrow/array/struct.PrimitiveArray.html#method.unary "method arrow::array::PrimitiveArray::unary")\ \ [unary\_mut](https://docs.rs/arrow/latest/arrow/compute/fn.unary_mut.html "fn arrow::compute::unary_mut")\ \ See [`PrimitiveArray::unary_mut`](https://docs.rs/arrow/latest/arrow/array/struct.PrimitiveArray.html#method.unary_mut "method arrow::array::PrimitiveArray::unary_mut")\ \ [union\_extract](https://docs.rs/arrow/latest/arrow/compute/fn.union_extract.html "fn arrow::compute::union_extract")\ \ Returns the value of the target field when selected, or NULL otherwise. --- # arrow::array - Rust [Docs.rs](https://docs.rs/) * [arrow-58.1.0](https://docs.rs/arrow/latest/arrow/array/index.html# "Rust implementation of Apache Arrow") * arrow 58.1.0 * [Permalink](https://docs.rs/arrow/58.1.0/arrow/array/ "Get a link to this specific version") * [Docs.rs crate page](https://docs.rs/crate/arrow/latest "See arrow in docs.rs") * [Apache-2.0](https://spdx.org/licenses/Apache-2.0) * Links * [Homepage](https://github.com/apache/arrow-rs) * [Repository](https://github.com/apache/arrow-rs) * [crates.io](https://crates.io/crates/arrow "See arrow in crates.io") * [Source](https://docs.rs/crate/arrow/latest/source/ "Browse source of arrow-58.1.0") * Owners * [andygrove](https://crates.io/users/andygrove) * [kou](https://crates.io/users/kou) * [kszucs](https://crates.io/users/kszucs) * [xhochy](https://crates.io/users/xhochy) * [nevi-me](https://crates.io/users/nevi-me) * [alamb](https://crates.io/users/alamb) * [tustvold](https://crates.io/users/tustvold) * Dependencies * * [arrow-arith ^58.1.0 _normal_](https://docs.rs/arrow-arith/^58.1.0/) * [arrow-array ^58.1.0 _normal_](https://docs.rs/arrow-array/^58.1.0/) * [arrow-buffer ^58.1.0 _normal_](https://docs.rs/arrow-buffer/^58.1.0/) * [arrow-cast ^58.1.0 _normal_](https://docs.rs/arrow-cast/^58.1.0/) * [arrow-csv ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-csv/^58.1.0/) * [arrow-data ^58.1.0 _normal_](https://docs.rs/arrow-data/^58.1.0/) * [arrow-ipc ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-ipc/^58.1.0/) * [arrow-json ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-json/^58.1.0/) * [arrow-ord ^58.1.0 _normal_](https://docs.rs/arrow-ord/^58.1.0/) * [arrow-pyarrow ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-pyarrow/^58.1.0/) * [arrow-row ^58.1.0 _normal_](https://docs.rs/arrow-row/^58.1.0/) * [arrow-schema ^58.1.0 _normal_](https://docs.rs/arrow-schema/^58.1.0/) * [arrow-select ^58.1.0 _normal_](https://docs.rs/arrow-select/^58.1.0/) * [arrow-string ^58.1.0 _normal_](https://docs.rs/arrow-string/^58.1.0/) * [half ^2.1 _normal_ _optional_](https://docs.rs/half/^2.1/) * [rand ^0.9 _normal_ _optional_](https://docs.rs/rand/^0.9/) * [bytes ^1.9 _dev_](https://docs.rs/bytes/^1.9/) * [chrono ^0.4.40 _dev_](https://docs.rs/chrono/^0.4.40/) * [criterion ^0.8.0 _dev_](https://docs.rs/criterion/^0.8.0/) * [half ^2.1 _dev_](https://docs.rs/half/^2.1/) * [memmap2 ^0.9.3 _dev_](https://docs.rs/memmap2/^0.9.3/) * [rand ^0.9 _dev_](https://docs.rs/rand/^0.9/) * [serde ^1.0 _dev_](https://docs.rs/serde/^1.0/) * Versions * [**100%** of the crate is documented](https://docs.rs/crate/arrow/latest) * [Platform](https://docs.rs/arrow/latest/arrow/array/index.html#) * [x86\_64-unknown-linux-gnu](https://docs.rs/crate/arrow/latest/target-redirect/arrow/array/) * [Feature flags](https://docs.rs/crate/arrow/latest/features "Browse available feature flags of arrow-58.1.0") * [docs.rs](https://docs.rs/arrow/latest/arrow/array/index.html#) * [About docs.rs](https://docs.rs/about) * [Badges](https://docs.rs/about/badges) * [Builds](https://docs.rs/about/builds) * [Metadata](https://docs.rs/about/metadata) * [Shorthand URLs](https://docs.rs/about/redirections) * [Download](https://docs.rs/about/download) * [Rustdoc JSON](https://docs.rs/about/rustdoc-json) * [Build queue](https://docs.rs/releases/queue) * [Privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#docs.rs) * [Rust](https://docs.rs/arrow/latest/arrow/array/index.html#) * [Rust website](https://www.rust-lang.org/) * [The Book](https://doc.rust-lang.org/book/) * [Standard Library API Reference](https://doc.rust-lang.org/std/) * [Rust by Example](https://doc.rust-lang.org/rust-by-example/) * [The Cargo Guide](https://doc.rust-lang.org/cargo/guide/) * [Clippy Documentation](https://doc.rust-lang.org/nightly/clippy) [Skip to main content](https://docs.rs/arrow/latest/arrow/array/index.html#main-content) [Module array](https://docs.rs/arrow/latest/arrow/array/index.html#) --------------------------------------------------------------------- [arrow](https://docs.rs/arrow/latest/arrow/index.html) Module array Copy item path =========================== [Source](https://docs.rs/arrow/latest/src/arrow/array/mod.rs.html#18-38) Expand description Statically typed implementations of Arrow Arrays **See [arrow\_array](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/arrow_array/index.html "mod arrow_array") for examples and usage instructions** Modules[§](https://docs.rs/arrow/latest/arrow/array/index.html#modules) ------------------------------------------------------------------------ [array](https://docs.rs/arrow/latest/arrow/array/array/index.html "mod arrow::array::array") The concrete array definitions [builder](https://docs.rs/arrow/latest/arrow/array/builder/index.html "mod arrow::array::builder") Defines push-based APIs for constructing arrays [cast](https://docs.rs/arrow/latest/arrow/array/cast/index.html "mod arrow::array::cast") Defines helper functions for downcasting [`dyn Array`](https://docs.rs/arrow/latest/arrow/array/trait.Array.html "trait arrow::array::Array") to concrete types [ffi](https://docs.rs/arrow/latest/arrow/array/ffi/index.html "mod arrow::array::ffi") `ffi` Contains declarations to bind to the [C Data Interface](https://arrow.apache.org/docs/format/CDataInterface.html) . [ffi\_stream](https://docs.rs/arrow/latest/arrow/array/ffi_stream/index.html "mod arrow::array::ffi_stream") `ffi` Contains declarations to bind to the [C Stream Interface](https://arrow.apache.org/docs/format/CStreamInterface.html) . [iterator](https://docs.rs/arrow/latest/arrow/array/iterator/index.html "mod arrow::array::iterator") Idiomatic iterators for [`Array`](https://docs.rs/arrow/latest/arrow/array/trait.Array.html "trait arrow::array::Array") [nonblocking](https://docs.rs/arrow/latest/arrow/array/nonblocking/index.html "mod arrow::array::nonblocking") `async` Trait definitions specific to using Arrow with async. [run\_iterator](https://docs.rs/arrow/latest/arrow/array/run_iterator/index.html "mod arrow::array::run_iterator") Idiomatic iterator for [`RunArray`](https://docs.rs/arrow/latest/arrow/array/struct.RunArray.html "struct arrow::array::RunArray") [temporal\_conversions](https://docs.rs/arrow/latest/arrow/array/temporal_conversions/index.html "mod arrow::array::temporal_conversions") Conversion methods for dates and times. [timezone](https://docs.rs/arrow/latest/arrow/array/timezone/index.html "mod arrow::array::timezone") Timezone for timestamp arrays [types](https://docs.rs/arrow/latest/arrow/array/types/index.html "mod arrow::array::types") Zero-sized types used to parameterize generic array implementations Macros[§](https://docs.rs/arrow/latest/arrow/array/index.html#macros) ---------------------------------------------------------------------- [create\_array](https://docs.rs/arrow/latest/arrow/array/macro.create_array.html "macro arrow::array::create_array") Creates an array from a literal slice of values, suitable for rapid testing and development. [downcast\_dictionary\_array](https://docs.rs/arrow/latest/arrow/array/macro.downcast_dictionary_array.html "macro arrow::array::downcast_dictionary_array") Downcast an [`Array`](https://docs.rs/arrow/latest/arrow/array/trait.Array.html "trait arrow::array::Array") to a [`DictionaryArray`](https://docs.rs/arrow/latest/arrow/array/struct.DictionaryArray.html "struct arrow::array::DictionaryArray") based on its [`DataType`](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html "enum arrow::datatypes::DataType") , accepts a number of subsequent patterns to match the data type [downcast\_integer](https://docs.rs/arrow/latest/arrow/array/macro.downcast_integer.html "macro arrow::array::downcast_integer") Given one or more expressions evaluating to an integer [`DataType`](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html "enum arrow::datatypes::DataType") invokes the provided macro `m` with the corresponding integer [`ArrowPrimitiveType`](https://docs.rs/arrow/latest/arrow/array/trait.ArrowPrimitiveType.html "trait arrow::array::ArrowPrimitiveType") , followed by any additional arguments [downcast\_integer\_array](https://docs.rs/arrow/latest/arrow/array/macro.downcast_integer_array.html "macro arrow::array::downcast_integer_array") Given one or more expressions evaluating to an integer [`PrimitiveArray`](https://docs.rs/arrow/latest/arrow/array/struct.PrimitiveArray.html "struct arrow::array::PrimitiveArray") invokes the provided macro with the corresponding array, along with match statements for any non integer array types [downcast\_primitive](https://docs.rs/arrow/latest/arrow/array/macro.downcast_primitive.html "macro arrow::array::downcast_primitive") Given one or more expressions evaluating to primitive [`DataType`](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html "enum arrow::datatypes::DataType") invokes the provided macro `m` with the corresponding [`ArrowPrimitiveType`](https://docs.rs/arrow/latest/arrow/array/trait.ArrowPrimitiveType.html "trait arrow::array::ArrowPrimitiveType") , followed by any additional arguments [downcast\_primitive\_array](https://docs.rs/arrow/latest/arrow/array/macro.downcast_primitive_array.html "macro arrow::array::downcast_primitive_array") Downcast an [`Array`](https://docs.rs/arrow/latest/arrow/array/trait.Array.html "trait arrow::array::Array") to a [`PrimitiveArray`](https://docs.rs/arrow/latest/arrow/array/struct.PrimitiveArray.html "struct arrow::array::PrimitiveArray") based on its [`DataType`](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html "enum arrow::datatypes::DataType") accepts a number of subsequent patterns to match the data type [downcast\_run\_array](https://docs.rs/arrow/latest/arrow/array/macro.downcast_run_array.html "macro arrow::array::downcast_run_array") Downcast an [`Array`](https://docs.rs/arrow/latest/arrow/array/trait.Array.html "trait arrow::array::Array") to a [`RunArray`](https://docs.rs/arrow/latest/arrow/array/struct.RunArray.html "struct arrow::array::RunArray") based on its [`DataType`](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html "enum arrow::datatypes::DataType") , accepts a number of subsequent patterns to match the data type [downcast\_run\_end\_index](https://docs.rs/arrow/latest/arrow/array/macro.downcast_run_end_index.html "macro arrow::array::downcast_run_end_index") Given one or more expressions evaluating to an integer [`DataType`](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html "enum arrow::datatypes::DataType") invokes the provided macro `m` with the corresponding integer [`RunEndIndexType`](https://docs.rs/arrow/latest/arrow/datatypes/trait.RunEndIndexType.html "trait arrow::datatypes::RunEndIndexType") , followed by any additional arguments [downcast\_temporal](https://docs.rs/arrow/latest/arrow/array/macro.downcast_temporal.html "macro arrow::array::downcast_temporal") Given one or more expressions evaluating to primitive [`DataType`](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html "enum arrow::datatypes::DataType") invokes the provided macro `m` with the corresponding [`ArrowPrimitiveType`](https://docs.rs/arrow/latest/arrow/array/trait.ArrowPrimitiveType.html "trait arrow::array::ArrowPrimitiveType") , followed by any additional arguments [downcast\_temporal\_array](https://docs.rs/arrow/latest/arrow/array/macro.downcast_temporal_array.html "macro arrow::array::downcast_temporal_array") Downcast an [`Array`](https://docs.rs/arrow/latest/arrow/array/trait.Array.html "trait arrow::array::Array") to a temporal [`PrimitiveArray`](https://docs.rs/arrow/latest/arrow/array/struct.PrimitiveArray.html "struct arrow::array::PrimitiveArray") based on its [`DataType`](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html "enum arrow::datatypes::DataType") accepts a number of subsequent patterns to match the data type [record\_batch](https://docs.rs/arrow/latest/arrow/array/macro.record_batch.html "macro arrow::array::record_batch") Creates a record batch from literal slice of values, suitable for rapid testing and development. Structs[§](https://docs.rs/arrow/latest/arrow/array/index.html#structs) ------------------------------------------------------------------------ [ArrayData](https://docs.rs/arrow/latest/arrow/array/struct.ArrayData.html "struct arrow::array::ArrayData") A generic representation of Arrow array data which encapsulates common attributes and operations for Arrow array. [ArrayDataBuilder](https://docs.rs/arrow/latest/arrow/array/struct.ArrayDataBuilder.html "struct arrow::array::ArrayDataBuilder") Builder for [`ArrayData`](https://docs.rs/arrow/latest/arrow/array/struct.ArrayData.html "struct arrow::array::ArrayData") type [ArrayIter](https://docs.rs/arrow/latest/arrow/array/struct.ArrayIter.html "struct arrow::array::ArrayIter") An iterator that returns Some(T) or None, that can be used on any [`ArrayAccessor`](https://docs.rs/arrow/latest/arrow/array/trait.ArrayAccessor.html "trait arrow::array::ArrayAccessor") [BooleanArray](https://docs.rs/arrow/latest/arrow/array/struct.BooleanArray.html "struct arrow::array::BooleanArray") An array of [boolean values](https://arrow.apache.org/docs/format/Columnar.html#fixed-size-primitive-layout) [BooleanBufferBuilder](https://docs.rs/arrow/latest/arrow/array/struct.BooleanBufferBuilder.html "struct arrow::array::BooleanBufferBuilder") Builder for [`BooleanBuffer`](https://docs.rs/arrow/latest/arrow/buffer/struct.BooleanBuffer.html "struct arrow::buffer::BooleanBuffer") [BooleanBuilder](https://docs.rs/arrow/latest/arrow/array/struct.BooleanBuilder.html "struct arrow::array::BooleanBuilder") Builder for [`BooleanArray`](https://docs.rs/arrow/latest/arrow/array/struct.BooleanArray.html "struct arrow::array::BooleanArray") [BufferBuilder](https://docs.rs/arrow/latest/arrow/array/struct.BufferBuilder.html "struct arrow::array::BufferBuilder") Builder for creating Arrow [`Buffer`](https://docs.rs/arrow/latest/arrow/buffer/struct.Buffer.html "struct arrow::buffer::Buffer") objects [ByteView](https://docs.rs/arrow/latest/arrow/array/struct.ByteView.html "struct arrow::array::ByteView") Helper to access views of [`GenericByteViewArray`](https://docs.rs/arrow/latest/arrow/array/struct.GenericByteViewArray.html) (`StringViewArray` and `BinaryViewArray`) where the length is greater than 12 bytes. [DataTypeLayout](https://docs.rs/arrow/latest/arrow/array/struct.DataTypeLayout.html "struct arrow::array::DataTypeLayout") Layout specification for a data type [DictionaryArray](https://docs.rs/arrow/latest/arrow/array/struct.DictionaryArray.html "struct arrow::array::DictionaryArray") An array of [dictionary encoded values](https://arrow.apache.org/docs/format/Columnar.html#dictionary-encoded-layout) [FixedSizeBinaryArray](https://docs.rs/arrow/latest/arrow/array/struct.FixedSizeBinaryArray.html "struct arrow::array::FixedSizeBinaryArray") An array of [fixed size binary arrays](https://arrow.apache.org/docs/format/Columnar.html#fixed-size-primitive-layout) [FixedSizeBinaryBuilder](https://docs.rs/arrow/latest/arrow/array/struct.FixedSizeBinaryBuilder.html "struct arrow::array::FixedSizeBinaryBuilder") Builder for [`FixedSizeBinaryArray`](https://docs.rs/arrow/latest/arrow/array/struct.FixedSizeBinaryArray.html "struct arrow::array::FixedSizeBinaryArray") [FixedSizeBinaryDictionaryBuilder](https://docs.rs/arrow/latest/arrow/array/struct.FixedSizeBinaryDictionaryBuilder.html "struct arrow::array::FixedSizeBinaryDictionaryBuilder") Builder for [`DictionaryArray`](https://docs.rs/arrow/latest/arrow/array/struct.DictionaryArray.html "struct arrow::array::DictionaryArray") of [`FixedSizeBinaryArray`](https://docs.rs/arrow/latest/arrow/array/struct.FixedSizeBinaryArray.html "struct arrow::array::FixedSizeBinaryArray") [FixedSizeListArray](https://docs.rs/arrow/latest/arrow/array/struct.FixedSizeListArray.html "struct arrow::array::FixedSizeListArray") An array of [fixed length lists](https://arrow.apache.org/docs/format/Columnar.html#fixed-size-list-layout) , similar to JSON arrays (e.g. `["A", "B"]`). [FixedSizeListBuilder](https://docs.rs/arrow/latest/arrow/array/struct.FixedSizeListBuilder.html "struct arrow::array::FixedSizeListBuilder") Builder for [`FixedSizeListArray`](https://docs.rs/arrow/latest/arrow/array/struct.FixedSizeListArray.html "struct arrow::array::FixedSizeListArray") [GenericByteArray](https://docs.rs/arrow/latest/arrow/array/struct.GenericByteArray.html "struct arrow::array::GenericByteArray") An array of [variable length byte arrays](https://arrow.apache.org/docs/format/Columnar.html#variable-size-binary-layout) [GenericByteBuilder](https://docs.rs/arrow/latest/arrow/array/struct.GenericByteBuilder.html "struct arrow::array::GenericByteBuilder") Builder for [`GenericByteArray`](https://docs.rs/arrow/latest/arrow/array/struct.GenericByteArray.html "struct arrow::array::GenericByteArray") [GenericByteDictionaryBuilder](https://docs.rs/arrow/latest/arrow/array/struct.GenericByteDictionaryBuilder.html "struct arrow::array::GenericByteDictionaryBuilder") Builder for [`DictionaryArray`](https://docs.rs/arrow/latest/arrow/array/struct.DictionaryArray.html "struct arrow::array::DictionaryArray") of [`GenericByteArray`](https://docs.rs/arrow/latest/arrow/array/struct.GenericByteArray.html "struct arrow::array::GenericByteArray") [GenericByteRunBuilder](https://docs.rs/arrow/latest/arrow/array/struct.GenericByteRunBuilder.html "struct arrow::array::GenericByteRunBuilder") Builder for [`RunArray`](https://docs.rs/arrow/latest/arrow/array/struct.RunArray.html "struct arrow::array::RunArray") of [`GenericByteArray`](https://docs.rs/arrow/latest/arrow/array/struct.GenericByteArray.html "struct arrow::array::GenericByteArray") [GenericByteViewArray](https://docs.rs/arrow/latest/arrow/array/struct.GenericByteViewArray.html "struct arrow::array::GenericByteViewArray") [Variable-size Binary View Layout](https://arrow.apache.org/docs/format/Columnar.html#variable-size-binary-view-layout) : An array of variable length bytes views. [GenericByteViewBuilder](https://docs.rs/arrow/latest/arrow/array/struct.GenericByteViewBuilder.html "struct arrow::array::GenericByteViewBuilder") A builder for [`GenericByteViewArray`](https://docs.rs/arrow/latest/arrow/array/struct.GenericByteViewArray.html "struct arrow::array::GenericByteViewArray") [GenericListArray](https://docs.rs/arrow/latest/arrow/array/struct.GenericListArray.html "struct arrow::array::GenericListArray") An array of [variable length lists](https://arrow.apache.org/docs/format/Columnar.html#variable-size-list-layout) , similar to JSON arrays (e.g. `["A", "B", "C"]`). This struct specifically represents the [list layout](https://arrow.apache.org/docs/format/Columnar.html#list-layout) . Refer to [`GenericListViewArray`](https://docs.rs/arrow/latest/arrow/array/struct.GenericListViewArray.html "struct arrow::array::GenericListViewArray") for the [list-view layout](https://arrow.apache.org/docs/format/Columnar.html#listview-layout) . [GenericListBuilder](https://docs.rs/arrow/latest/arrow/array/struct.GenericListBuilder.html "struct arrow::array::GenericListBuilder") Builder for [`GenericListArray`](https://docs.rs/arrow/latest/arrow/array/struct.GenericListArray.html "struct arrow::array::GenericListArray") [GenericListViewArray](https://docs.rs/arrow/latest/arrow/array/struct.GenericListViewArray.html "struct arrow::array::GenericListViewArray") An array of [variable length lists](https://arrow.apache.org/docs/format/Columnar.html#variable-size-list-layout) , specifically in the [list-view layout](https://arrow.apache.org/docs/format/Columnar.html#listview-layout) . [GenericListViewBuilder](https://docs.rs/arrow/latest/arrow/array/struct.GenericListViewBuilder.html "struct arrow::array::GenericListViewBuilder") Builder for [`GenericListViewArray`](https://docs.rs/arrow/latest/arrow/array/struct.GenericListViewArray.html "struct arrow::array::GenericListViewArray") [MapArray](https://docs.rs/arrow/latest/arrow/array/struct.MapArray.html "struct arrow::array::MapArray") An array of key-value maps [MapBuilder](https://docs.rs/arrow/latest/arrow/array/struct.MapBuilder.html "struct arrow::array::MapBuilder") Builder for [`MapArray`](https://docs.rs/arrow/latest/arrow/array/struct.MapArray.html "struct arrow::array::MapArray") [MapFieldNames](https://docs.rs/arrow/latest/arrow/array/struct.MapFieldNames.html "struct arrow::array::MapFieldNames") The [`Field`](https://docs.rs/arrow/latest/arrow/datatypes/struct.Field.html "struct arrow::datatypes::Field") names for a [`MapArray`](https://docs.rs/arrow/latest/arrow/array/struct.MapArray.html "struct arrow::array::MapArray") [MutableArrayData](https://docs.rs/arrow/latest/arrow/array/struct.MutableArrayData.html "struct arrow::array::MutableArrayData") Efficiently create an [ArrayData](https://docs.rs/arrow/latest/arrow/array/struct.ArrayData.html "struct arrow::array::ArrayData") from one or more existing [ArrayData](https://docs.rs/arrow/latest/arrow/array/struct.ArrayData.html "struct arrow::array::ArrayData") s by copying chunks. [NativeAdapter](https://docs.rs/arrow/latest/arrow/array/struct.NativeAdapter.html "struct arrow::array::NativeAdapter") An optional primitive value [NullArray](https://docs.rs/arrow/latest/arrow/array/struct.NullArray.html "struct arrow::array::NullArray") An array of [null values](https://arrow.apache.org/docs/format/Columnar.html#null-layout) [NullBufferBuilder](https://docs.rs/arrow/latest/arrow/array/struct.NullBufferBuilder.html "struct arrow::array::NullBufferBuilder") Builder for creating [`NullBuffer`](https://docs.rs/arrow/latest/arrow/buffer/struct.NullBuffer.html "struct arrow::buffer::NullBuffer") s (bitmaps indicating validity/nulls). [NullBuilder](https://docs.rs/arrow/latest/arrow/array/struct.NullBuilder.html "struct arrow::array::NullBuilder") Builder for [`NullArray`](https://docs.rs/arrow/latest/arrow/array/struct.NullArray.html "struct arrow::array::NullArray") [OffsetBufferBuilder](https://docs.rs/arrow/latest/arrow/array/struct.OffsetBufferBuilder.html "struct arrow::array::OffsetBufferBuilder") Builder of [`OffsetBuffer`](https://docs.rs/arrow/latest/arrow/buffer/struct.OffsetBuffer.html "struct arrow::buffer::OffsetBuffer") [PrimitiveArray](https://docs.rs/arrow/latest/arrow/array/struct.PrimitiveArray.html "struct arrow::array::PrimitiveArray") An array of primitive values, of type [`ArrowPrimitiveType`](https://docs.rs/arrow/latest/arrow/array/trait.ArrowPrimitiveType.html "trait arrow::array::ArrowPrimitiveType") [PrimitiveBuilder](https://docs.rs/arrow/latest/arrow/array/struct.PrimitiveBuilder.html "struct arrow::array::PrimitiveBuilder") Builder for [`PrimitiveArray`](https://docs.rs/arrow/latest/arrow/array/struct.PrimitiveArray.html "struct arrow::array::PrimitiveArray") [PrimitiveDictionaryBuilder](https://docs.rs/arrow/latest/arrow/array/struct.PrimitiveDictionaryBuilder.html "struct arrow::array::PrimitiveDictionaryBuilder") Builder for [`DictionaryArray`](https://docs.rs/arrow/latest/arrow/array/struct.DictionaryArray.html "struct arrow::array::DictionaryArray") of [`PrimitiveArray`](https://docs.rs/arrow/latest/arrow/array/struct.PrimitiveArray.html "struct arrow::array::PrimitiveArray") [PrimitiveRunBuilder](https://docs.rs/arrow/latest/arrow/array/struct.PrimitiveRunBuilder.html "struct arrow::array::PrimitiveRunBuilder") Builder for [`RunArray`](https://docs.rs/arrow/latest/arrow/array/struct.RunArray.html "struct arrow::array::RunArray") of [`PrimitiveArray`](https://docs.rs/arrow/latest/arrow/array/struct.PrimitiveArray.html "struct arrow::array::PrimitiveArray") [RecordBatch](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html "struct arrow::array::RecordBatch") A two-dimensional batch of column-oriented data with a defined [schema](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html "struct arrow::datatypes::Schema") . [RecordBatchIterator](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatchIterator.html "struct arrow::array::RecordBatchIterator") Generic implementation of [RecordBatchReader](https://docs.rs/arrow/latest/arrow/array/trait.RecordBatchReader.html "trait arrow::array::RecordBatchReader") that wraps an iterator. [RecordBatchOptions](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatchOptions.html "struct arrow::array::RecordBatchOptions") Options that control the behaviour used when creating a [`RecordBatch`](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html "struct arrow::array::RecordBatch") . [RunArray](https://docs.rs/arrow/latest/arrow/array/struct.RunArray.html "struct arrow::array::RunArray") An array of [run-end encoded values](https://arrow.apache.org/docs/format/Columnar.html#run-end-encoded-layout) . [Scalar](https://docs.rs/arrow/latest/arrow/array/struct.Scalar.html "struct arrow::array::Scalar") A wrapper around a single value [`Array`](https://docs.rs/arrow/latest/arrow/array/trait.Array.html "trait arrow::array::Array") that implements [`Datum`](https://docs.rs/arrow/latest/arrow/array/trait.Datum.html "trait arrow::array::Datum") and indicates [compute](https://docs.rs/arrow/latest/arrow/compute/index.html) kernels should treat this array as a scalar value (a single value). [StructArray](https://docs.rs/arrow/latest/arrow/array/struct.StructArray.html "struct arrow::array::StructArray") An array of [structs](https://arrow.apache.org/docs/format/Columnar.html#struct-layout) [StructBuilder](https://docs.rs/arrow/latest/arrow/array/struct.StructBuilder.html "struct arrow::array::StructBuilder") Builder for [`StructArray`](https://docs.rs/arrow/latest/arrow/array/struct.StructArray.html "struct arrow::array::StructArray") [TypedDictionaryArray](https://docs.rs/arrow/latest/arrow/array/struct.TypedDictionaryArray.html "struct arrow::array::TypedDictionaryArray") A [`DictionaryArray`](https://docs.rs/arrow/latest/arrow/array/struct.DictionaryArray.html "struct arrow::array::DictionaryArray") typed on its child values array [TypedRunArray](https://docs.rs/arrow/latest/arrow/array/struct.TypedRunArray.html "struct arrow::array::TypedRunArray") A [`RunArray`](https://docs.rs/arrow/latest/arrow/array/struct.RunArray.html "struct arrow::array::RunArray") typed typed on its child values array [UnionArray](https://docs.rs/arrow/latest/arrow/array/struct.UnionArray.html "struct arrow::array::UnionArray") An array of [values of varying types](https://arrow.apache.org/docs/format/Columnar.html#union-layout) [UnionBuilder](https://docs.rs/arrow/latest/arrow/array/struct.UnionBuilder.html "struct arrow::array::UnionBuilder") Builder for [`UnionArray`](https://docs.rs/arrow/latest/arrow/array/struct.UnionArray.html "struct arrow::array::UnionArray") Enums[§](https://docs.rs/arrow/latest/arrow/array/index.html#enums) -------------------------------------------------------------------- [BufferSpec](https://docs.rs/arrow/latest/arrow/array/enum.BufferSpec.html "enum arrow::array::BufferSpec") Layout specification for a single data type buffer [Capacities](https://docs.rs/arrow/latest/arrow/array/enum.Capacities.html "enum arrow::array::Capacities") Define capacities to pre-allocate for child data or data buffers. Traits[§](https://docs.rs/arrow/latest/arrow/array/index.html#traits) ---------------------------------------------------------------------- [AnyDictionaryArray](https://docs.rs/arrow/latest/arrow/array/trait.AnyDictionaryArray.html "trait arrow::array::AnyDictionaryArray") A [`DictionaryArray`](https://docs.rs/arrow/latest/arrow/array/struct.DictionaryArray.html "struct arrow::array::DictionaryArray") with the key type erased [Array](https://docs.rs/arrow/latest/arrow/array/trait.Array.html "trait arrow::array::Array") An array in the [Arrow Columnar Format](https://arrow.apache.org/docs/format/Columnar.html) [ArrayAccessor](https://docs.rs/arrow/latest/arrow/array/trait.ArrayAccessor.html "trait arrow::array::ArrayAccessor") A generic trait for accessing the values of an [`Array`](https://docs.rs/arrow/latest/arrow/array/trait.Array.html "trait arrow::array::Array") [ArrayBuilder](https://docs.rs/arrow/latest/arrow/array/trait.ArrayBuilder.html "trait arrow::array::ArrayBuilder") Trait for dealing with different array builders at runtime [ArrowNativeTypeOp](https://docs.rs/arrow/latest/arrow/array/trait.ArrowNativeTypeOp.html "trait arrow::array::ArrowNativeTypeOp") Trait for [`ArrowNativeType`](https://docs.rs/arrow/latest/arrow/datatypes/trait.ArrowNativeType.html "trait arrow::datatypes::ArrowNativeType") that adds checked and unchecked arithmetic operations, and totally ordered comparison operations [ArrowNumericType](https://docs.rs/arrow/latest/arrow/array/trait.ArrowNumericType.html "trait arrow::array::ArrowNumericType") A subtype of primitive type that represents numeric values. [ArrowPrimitiveType](https://docs.rs/arrow/latest/arrow/array/trait.ArrowPrimitiveType.html "trait arrow::array::ArrowPrimitiveType") Trait for [primitive values](https://arrow.apache.org/docs/format/Columnar.html#fixed-size-primitive-layout) . [AsArray](https://docs.rs/arrow/latest/arrow/array/trait.AsArray.html "trait arrow::array::AsArray") An extension trait for `dyn Array` that provides ergonomic downcasting [BinaryArrayType](https://docs.rs/arrow/latest/arrow/array/trait.BinaryArrayType.html "trait arrow::array::BinaryArrayType") A trait for Arrow Binary Arrays, currently four types are supported: [BinaryLikeArrayBuilder](https://docs.rs/arrow/latest/arrow/array/trait.BinaryLikeArrayBuilder.html "trait arrow::array::BinaryLikeArrayBuilder") Trait for binary-like array builders [Datum](https://docs.rs/arrow/latest/arrow/array/trait.Datum.html "trait arrow::array::Datum") A possibly [`Scalar`](https://docs.rs/arrow/latest/arrow/array/struct.Scalar.html "struct arrow::array::Scalar") [`Array`](https://docs.rs/arrow/latest/arrow/array/trait.Array.html "trait arrow::array::Array") [ListLikeArray](https://docs.rs/arrow/latest/arrow/array/trait.ListLikeArray.html "trait arrow::array::ListLikeArray") A trait for Arrow list-like arrays, abstracting over [`GenericListArray`](https://docs.rs/arrow/latest/arrow/array/struct.GenericListArray.html "struct arrow::array::GenericListArray") , [`GenericListViewArray`](https://docs.rs/arrow/latest/arrow/array/struct.GenericListViewArray.html "struct arrow::array::GenericListViewArray") , and [`FixedSizeListArray`](https://docs.rs/arrow/latest/arrow/array/struct.FixedSizeListArray.html "struct arrow::array::FixedSizeListArray") . [OffsetSizeTrait](https://docs.rs/arrow/latest/arrow/array/trait.OffsetSizeTrait.html "trait arrow::array::OffsetSizeTrait") A type that can be used within a variable-size array to encode offset information [RecordBatchReader](https://docs.rs/arrow/latest/arrow/array/trait.RecordBatchReader.html "trait arrow::array::RecordBatchReader") Trait for types that can read `RecordBatch`’s. [RecordBatchWriter](https://docs.rs/arrow/latest/arrow/array/trait.RecordBatchWriter.html "trait arrow::array::RecordBatchWriter") Trait for types that can write `RecordBatch`’s. [StringArrayType](https://docs.rs/arrow/latest/arrow/array/trait.StringArrayType.html "trait arrow::array::StringArrayType") A trait for Arrow String Arrays, currently three types are supported: [StringLikeArrayBuilder](https://docs.rs/arrow/latest/arrow/array/trait.StringLikeArrayBuilder.html "trait arrow::array::StringLikeArrayBuilder") Trait for string-like array builders Functions[§](https://docs.rs/arrow/latest/arrow/array/index.html#functions) ---------------------------------------------------------------------------- [as\_boolean\_array](https://docs.rs/arrow/latest/arrow/array/fn.as_boolean_array.html "fn arrow::array::as_boolean_array") Force downcast of an [`Array`](https://docs.rs/arrow/latest/arrow/array/trait.Array.html "trait arrow::array::Array") , such as an [`ArrayRef`](https://docs.rs/arrow/latest/arrow/array/type.ArrayRef.html "type arrow::array::ArrayRef") to [`BooleanArray`](https://docs.rs/arrow/latest/arrow/array/struct.BooleanArray.html "struct arrow::array::BooleanArray") , panicking on failure. [as\_dictionary\_array](https://docs.rs/arrow/latest/arrow/array/fn.as_dictionary_array.html "fn arrow::array::as_dictionary_array") Force downcast of an [`Array`](https://docs.rs/arrow/latest/arrow/array/trait.Array.html "trait arrow::array::Array") , such as an [`ArrayRef`](https://docs.rs/arrow/latest/arrow/array/type.ArrayRef.html "type arrow::array::ArrayRef") to [`DictionaryArray`](https://docs.rs/arrow/latest/arrow/array/struct.DictionaryArray.html "struct arrow::array::DictionaryArray") , panic’ing on failure. [as\_fixed\_size\_list\_array](https://docs.rs/arrow/latest/arrow/array/fn.as_fixed_size_list_array.html "fn arrow::array::as_fixed_size_list_array") Force downcast of an [`Array`](https://docs.rs/arrow/latest/arrow/array/trait.Array.html "trait arrow::array::Array") , such as an [`ArrayRef`](https://docs.rs/arrow/latest/arrow/array/type.ArrayRef.html "type arrow::array::ArrayRef") to [`FixedSizeListArray`](https://docs.rs/arrow/latest/arrow/array/struct.FixedSizeListArray.html "struct arrow::array::FixedSizeListArray") , panicking on failure. [as\_generic\_binary\_array](https://docs.rs/arrow/latest/arrow/array/fn.as_generic_binary_array.html "fn arrow::array::as_generic_binary_array") Force downcast of an [`Array`](https://docs.rs/arrow/latest/arrow/array/trait.Array.html "trait arrow::array::Array") , such as an [`ArrayRef`](https://docs.rs/arrow/latest/arrow/array/type.ArrayRef.html "type arrow::array::ArrayRef") to [`GenericBinaryArray`](https://docs.rs/arrow/latest/arrow/array/type.GenericBinaryArray.html "type arrow::array::GenericBinaryArray") , panicking on failure. [as\_generic\_list\_array](https://docs.rs/arrow/latest/arrow/array/fn.as_generic_list_array.html "fn arrow::array::as_generic_list_array") Force downcast of an [`Array`](https://docs.rs/arrow/latest/arrow/array/trait.Array.html "trait arrow::array::Array") , such as an [`ArrayRef`](https://docs.rs/arrow/latest/arrow/array/type.ArrayRef.html "type arrow::array::ArrayRef") to [`GenericListArray`](https://docs.rs/arrow/latest/arrow/array/struct.GenericListArray.html "struct arrow::array::GenericListArray") , panicking on failure. [as\_large\_list\_array](https://docs.rs/arrow/latest/arrow/array/fn.as_large_list_array.html "fn arrow::array::as_large_list_array") Force downcast of an [`Array`](https://docs.rs/arrow/latest/arrow/array/trait.Array.html "trait arrow::array::Array") , such as an [`ArrayRef`](https://docs.rs/arrow/latest/arrow/array/type.ArrayRef.html "type arrow::array::ArrayRef") to [`LargeListArray`](https://docs.rs/arrow/latest/arrow/array/type.LargeListArray.html "type arrow::array::LargeListArray") , panicking on failure. [as\_largestring\_array](https://docs.rs/arrow/latest/arrow/array/fn.as_largestring_array.html "fn arrow::array::as_largestring_array") Force downcast of an [`Array`](https://docs.rs/arrow/latest/arrow/array/trait.Array.html "trait arrow::array::Array") , such as an [`ArrayRef`](https://docs.rs/arrow/latest/arrow/array/type.ArrayRef.html "type arrow::array::ArrayRef") to [`LargeStringArray`](https://docs.rs/arrow/latest/arrow/array/type.LargeStringArray.html "type arrow::array::LargeStringArray") , panicking on failure. [as\_list\_array](https://docs.rs/arrow/latest/arrow/array/fn.as_list_array.html "fn arrow::array::as_list_array") Force downcast of an [`Array`](https://docs.rs/arrow/latest/arrow/array/trait.Array.html "trait arrow::array::Array") , such as an [`ArrayRef`](https://docs.rs/arrow/latest/arrow/array/type.ArrayRef.html "type arrow::array::ArrayRef") to [`ListArray`](https://docs.rs/arrow/latest/arrow/array/type.ListArray.html "type arrow::array::ListArray") , panicking on failure. [as\_map\_array](https://docs.rs/arrow/latest/arrow/array/fn.as_map_array.html "fn arrow::array::as_map_array") Force downcast of an [`Array`](https://docs.rs/arrow/latest/arrow/array/trait.Array.html "trait arrow::array::Array") , such as an [`ArrayRef`](https://docs.rs/arrow/latest/arrow/array/type.ArrayRef.html "type arrow::array::ArrayRef") to [`MapArray`](https://docs.rs/arrow/latest/arrow/array/struct.MapArray.html "struct arrow::array::MapArray") , panicking on failure. [as\_null\_array](https://docs.rs/arrow/latest/arrow/array/fn.as_null_array.html "fn arrow::array::as_null_array") Force downcast of an [`Array`](https://docs.rs/arrow/latest/arrow/array/trait.Array.html "trait arrow::array::Array") , such as an [`ArrayRef`](https://docs.rs/arrow/latest/arrow/array/type.ArrayRef.html "type arrow::array::ArrayRef") to [`NullArray`](https://docs.rs/arrow/latest/arrow/array/struct.NullArray.html "struct arrow::array::NullArray") , panicking on failure. [as\_primitive\_array](https://docs.rs/arrow/latest/arrow/array/fn.as_primitive_array.html "fn arrow::array::as_primitive_array") Force downcast of an [`Array`](https://docs.rs/arrow/latest/arrow/array/trait.Array.html "trait arrow::array::Array") , such as an [`ArrayRef`](https://docs.rs/arrow/latest/arrow/array/type.ArrayRef.html "type arrow::array::ArrayRef") , to [`PrimitiveArray`](https://docs.rs/arrow/latest/arrow/array/struct.PrimitiveArray.html "struct arrow::array::PrimitiveArray") , panic’ing on failure. [as\_run\_array](https://docs.rs/arrow/latest/arrow/array/fn.as_run_array.html "fn arrow::array::as_run_array") Force downcast of an [`Array`](https://docs.rs/arrow/latest/arrow/array/trait.Array.html "trait arrow::array::Array") , such as an [`ArrayRef`](https://docs.rs/arrow/latest/arrow/array/type.ArrayRef.html "type arrow::array::ArrayRef") to [`RunArray`](https://docs.rs/arrow/latest/arrow/array/struct.RunArray.html "struct arrow::array::RunArray") , panic’ing on failure. [as\_string\_array](https://docs.rs/arrow/latest/arrow/array/fn.as_string_array.html "fn arrow::array::as_string_array") Force downcast of an [`Array`](https://docs.rs/arrow/latest/arrow/array/trait.Array.html "trait arrow::array::Array") , such as an [`ArrayRef`](https://docs.rs/arrow/latest/arrow/array/type.ArrayRef.html "type arrow::array::ArrayRef") to [`StringArray`](https://docs.rs/arrow/latest/arrow/array/type.StringArray.html "type arrow::array::StringArray") , panicking on failure. [as\_struct\_array](https://docs.rs/arrow/latest/arrow/array/fn.as_struct_array.html "fn arrow::array::as_struct_array") Force downcast of an [`Array`](https://docs.rs/arrow/latest/arrow/array/trait.Array.html "trait arrow::array::Array") , such as an [`ArrayRef`](https://docs.rs/arrow/latest/arrow/array/type.ArrayRef.html "type arrow::array::ArrayRef") to [`StructArray`](https://docs.rs/arrow/latest/arrow/array/struct.StructArray.html "struct arrow::array::StructArray") , panicking on failure. [as\_union\_array](https://docs.rs/arrow/latest/arrow/array/fn.as_union_array.html "fn arrow::array::as_union_array") Force downcast of an [`Array`](https://docs.rs/arrow/latest/arrow/array/trait.Array.html "trait arrow::array::Array") , such as an [`ArrayRef`](https://docs.rs/arrow/latest/arrow/array/type.ArrayRef.html "type arrow::array::ArrayRef") to [`UnionArray`](https://docs.rs/arrow/latest/arrow/array/struct.UnionArray.html "struct arrow::array::UnionArray") , panicking on failure. [downcast\_array](https://docs.rs/arrow/latest/arrow/array/fn.downcast_array.html "fn arrow::array::downcast_array") Downcasts a `dyn Array` to a concrete type [export\_array\_into\_raw](https://docs.rs/arrow/latest/arrow/array/fn.export_array_into_raw.html "fn arrow::array::export_array_into_raw") ⚠Deprecated`ffi` Exports an array to raw pointers of the C Data Interface provided by the consumer. [layout](https://docs.rs/arrow/latest/arrow/array/fn.layout.html "fn arrow::array::layout") Return the expected [`DataTypeLayout`](https://docs.rs/arrow/latest/arrow/array/struct.DataTypeLayout.html "struct arrow::array::DataTypeLayout") Arrays of this data type are expected to have [make\_array](https://docs.rs/arrow/latest/arrow/array/fn.make_array.html "fn arrow::array::make_array") Constructs an [`ArrayRef`](https://docs.rs/arrow/latest/arrow/array/type.ArrayRef.html "type arrow::array::ArrayRef") from an [`ArrayData`](https://docs.rs/arrow/latest/arrow/array/struct.ArrayData.html "struct arrow::array::ArrayData") . [make\_builder](https://docs.rs/arrow/latest/arrow/array/fn.make_builder.html "fn arrow::array::make_builder") Returns a builder with capacity for `capacity` elements of datatype `DataType`. [make\_comparator](https://docs.rs/arrow/latest/arrow/array/fn.make_comparator.html "fn arrow::array::make_comparator") Returns a comparison function that compares two values at two different positions between the two arrays. [make\_view](https://docs.rs/arrow/latest/arrow/array/fn.make_view.html "fn arrow::array::make_view") Create a view based on the given data, block id and offset. [new\_empty\_array](https://docs.rs/arrow/latest/arrow/array/fn.new_empty_array.html "fn arrow::array::new_empty_array") Creates a new empty array [new\_null\_array](https://docs.rs/arrow/latest/arrow/array/fn.new_null_array.html "fn arrow::array::new_null_array") Creates a new array of `data_type` of length `length` filled entirely of `NULL` values Type Aliases[§](https://docs.rs/arrow/latest/arrow/array/index.html#types) --------------------------------------------------------------------------- [ArrayDataRef](https://docs.rs/arrow/latest/arrow/array/type.ArrayDataRef.html "type arrow::array::ArrayDataRef") A thread-safe, shared reference to the Arrow array data. [ArrayRef](https://docs.rs/arrow/latest/arrow/array/type.ArrayRef.html "type arrow::array::ArrayRef") A reference-counted reference to a generic `Array` [BinaryArray](https://docs.rs/arrow/latest/arrow/array/type.BinaryArray.html "type arrow::array::BinaryArray") A [`GenericBinaryArray`](https://docs.rs/arrow/latest/arrow/array/type.GenericBinaryArray.html "type arrow::array::GenericBinaryArray") of `[u8]` using `i32` offsets [BinaryBuilder](https://docs.rs/arrow/latest/arrow/array/type.BinaryBuilder.html "type arrow::array::BinaryBuilder") Builder for [`BinaryArray`](https://docs.rs/arrow/latest/arrow/array/type.BinaryArray.html "type arrow::array::BinaryArray") [BinaryDictionaryBuilder](https://docs.rs/arrow/latest/arrow/array/type.BinaryDictionaryBuilder.html "type arrow::array::BinaryDictionaryBuilder") Builder for [`DictionaryArray`](https://docs.rs/arrow/latest/arrow/array/struct.DictionaryArray.html "struct arrow::array::DictionaryArray") of [`BinaryArray`](https://docs.rs/arrow/latest/arrow/array/type.BinaryArray.html "type arrow::array::BinaryArray") [BinaryRunBuilder](https://docs.rs/arrow/latest/arrow/array/type.BinaryRunBuilder.html "type arrow::array::BinaryRunBuilder") Builder for [`RunArray`](https://docs.rs/arrow/latest/arrow/array/struct.RunArray.html "struct arrow::array::RunArray") of [`BinaryArray`](https://docs.rs/arrow/latest/arrow/array/type.BinaryArray.html "type arrow::array::BinaryArray") [BinaryViewArray](https://docs.rs/arrow/latest/arrow/array/type.BinaryViewArray.html "type arrow::array::BinaryViewArray") A [`GenericByteViewArray`](https://docs.rs/arrow/latest/arrow/array/struct.GenericByteViewArray.html "struct arrow::array::GenericByteViewArray") of `[u8]` [BinaryViewBuilder](https://docs.rs/arrow/latest/arrow/array/type.BinaryViewBuilder.html "type arrow::array::BinaryViewBuilder") Array builder for [`BinaryViewArray`](https://docs.rs/arrow/latest/arrow/array/type.BinaryViewArray.html "type arrow::array::BinaryViewArray") [BooleanIter](https://docs.rs/arrow/latest/arrow/array/type.BooleanIter.html "type arrow::array::BooleanIter") an iterator that returns Some(T) or None, that can be used on any BooleanArray [Date32Array](https://docs.rs/arrow/latest/arrow/array/type.Date32Array.html "type arrow::array::Date32Array") A [`PrimitiveArray`](https://docs.rs/arrow/latest/arrow/array/struct.PrimitiveArray.html "struct arrow::array::PrimitiveArray") of days since UNIX epoch stored as `i32` [Date32BufferBuilder](https://docs.rs/arrow/latest/arrow/array/type.Date32BufferBuilder.html "type arrow::array::Date32BufferBuilder") Buffer builder for 32-bit date type. [Date32Builder](https://docs.rs/arrow/latest/arrow/array/type.Date32Builder.html "type arrow::array::Date32Builder") A 32-bit date array builder. [Date64Array](https://docs.rs/arrow/latest/arrow/array/type.Date64Array.html "type arrow::array::Date64Array") A [`PrimitiveArray`](https://docs.rs/arrow/latest/arrow/array/struct.PrimitiveArray.html "struct arrow::array::PrimitiveArray") of milliseconds since UNIX epoch stored as `i64` [Date64BufferBuilder](https://docs.rs/arrow/latest/arrow/array/type.Date64BufferBuilder.html "type arrow::array::Date64BufferBuilder") Buffer builder for 64-bit date type. [Date64Builder](https://docs.rs/arrow/latest/arrow/array/type.Date64Builder.html "type arrow::array::Date64Builder") A 64-bit date array builder. [Decimal32Array](https://docs.rs/arrow/latest/arrow/array/type.Decimal32Array.html "type arrow::array::Decimal32Array") A [`PrimitiveArray`](https://docs.rs/arrow/latest/arrow/array/struct.PrimitiveArray.html "struct arrow::array::PrimitiveArray") of 32-bit fixed point decimals [Decimal32BufferBuilder](https://docs.rs/arrow/latest/arrow/array/type.Decimal32BufferBuilder.html "type arrow::array::Decimal32BufferBuilder") Buffer builder for 32-bit decimal type. [Decimal32Builder](https://docs.rs/arrow/latest/arrow/array/type.Decimal32Builder.html "type arrow::array::Decimal32Builder") A decimal 32 array builder [Decimal64Array](https://docs.rs/arrow/latest/arrow/array/type.Decimal64Array.html "type arrow::array::Decimal64Array") A [`PrimitiveArray`](https://docs.rs/arrow/latest/arrow/array/struct.PrimitiveArray.html "struct arrow::array::PrimitiveArray") of 64-bit fixed point decimals [Decimal64BufferBuilder](https://docs.rs/arrow/latest/arrow/array/type.Decimal64BufferBuilder.html "type arrow::array::Decimal64BufferBuilder") Buffer builder for 64-bit decimal type. [Decimal64Builder](https://docs.rs/arrow/latest/arrow/array/type.Decimal64Builder.html "type arrow::array::Decimal64Builder") A decimal 64 array builder [Decimal128Array](https://docs.rs/arrow/latest/arrow/array/type.Decimal128Array.html "type arrow::array::Decimal128Array") A [`PrimitiveArray`](https://docs.rs/arrow/latest/arrow/array/struct.PrimitiveArray.html "struct arrow::array::PrimitiveArray") of 128-bit fixed point decimals [Decimal128BufferBuilder](https://docs.rs/arrow/latest/arrow/array/type.Decimal128BufferBuilder.html "type arrow::array::Decimal128BufferBuilder") Buffer builder for 128-bit decimal type. [Decimal128Builder](https://docs.rs/arrow/latest/arrow/array/type.Decimal128Builder.html "type arrow::array::Decimal128Builder") A decimal 128 array builder [Decimal256Array](https://docs.rs/arrow/latest/arrow/array/type.Decimal256Array.html "type arrow::array::Decimal256Array") A [`PrimitiveArray`](https://docs.rs/arrow/latest/arrow/array/struct.PrimitiveArray.html "struct arrow::array::PrimitiveArray") of 256-bit fixed point decimals [Decimal256BufferBuilder](https://docs.rs/arrow/latest/arrow/array/type.Decimal256BufferBuilder.html "type arrow::array::Decimal256BufferBuilder") Buffer builder for 256-bit decimal type. [Decimal256Builder](https://docs.rs/arrow/latest/arrow/array/type.Decimal256Builder.html "type arrow::array::Decimal256Builder") A decimal 256 array builder [DurationMicrosecondArray](https://docs.rs/arrow/latest/arrow/array/type.DurationMicrosecondArray.html "type arrow::array::DurationMicrosecondArray") A [`PrimitiveArray`](https://docs.rs/arrow/latest/arrow/array/struct.PrimitiveArray.html "struct arrow::array::PrimitiveArray") of elapsed durations in microseconds [DurationMicrosecondBufferBuilder](https://docs.rs/arrow/latest/arrow/array/type.DurationMicrosecondBufferBuilder.html "type arrow::array::DurationMicrosecondBufferBuilder") Buffer builder for elaspsed time of microseconds unit. [DurationMicrosecondBuilder](https://docs.rs/arrow/latest/arrow/array/type.DurationMicrosecondBuilder.html "type arrow::array::DurationMicrosecondBuilder") An elapsed time in microseconds array builder. [DurationMillisecondArray](https://docs.rs/arrow/latest/arrow/array/type.DurationMillisecondArray.html "type arrow::array::DurationMillisecondArray") A [`PrimitiveArray`](https://docs.rs/arrow/latest/arrow/array/struct.PrimitiveArray.html "struct arrow::array::PrimitiveArray") of elapsed durations in milliseconds [DurationMillisecondBufferBuilder](https://docs.rs/arrow/latest/arrow/array/type.DurationMillisecondBufferBuilder.html "type arrow::array::DurationMillisecondBufferBuilder") Buffer builder for elaspsed time of milliseconds unit. [DurationMillisecondBuilder](https://docs.rs/arrow/latest/arrow/array/type.DurationMillisecondBuilder.html "type arrow::array::DurationMillisecondBuilder") An elapsed time in milliseconds array builder. [DurationNanosecondArray](https://docs.rs/arrow/latest/arrow/array/type.DurationNanosecondArray.html "type arrow::array::DurationNanosecondArray") A [`PrimitiveArray`](https://docs.rs/arrow/latest/arrow/array/struct.PrimitiveArray.html "struct arrow::array::PrimitiveArray") of elapsed durations in nanoseconds [DurationNanosecondBufferBuilder](https://docs.rs/arrow/latest/arrow/array/type.DurationNanosecondBufferBuilder.html "type arrow::array::DurationNanosecondBufferBuilder") Buffer builder for elaspsed time of nanoseconds unit. [DurationNanosecondBuilder](https://docs.rs/arrow/latest/arrow/array/type.DurationNanosecondBuilder.html "type arrow::array::DurationNanosecondBuilder") An elapsed time in nanoseconds array builder. [DurationSecondArray](https://docs.rs/arrow/latest/arrow/array/type.DurationSecondArray.html "type arrow::array::DurationSecondArray") A [`PrimitiveArray`](https://docs.rs/arrow/latest/arrow/array/struct.PrimitiveArray.html "struct arrow::array::PrimitiveArray") of elapsed durations in seconds [DurationSecondBufferBuilder](https://docs.rs/arrow/latest/arrow/array/type.DurationSecondBufferBuilder.html "type arrow::array::DurationSecondBufferBuilder") Buffer builder for elaspsed time of second unit. [DurationSecondBuilder](https://docs.rs/arrow/latest/arrow/array/type.DurationSecondBuilder.html "type arrow::array::DurationSecondBuilder") An elapsed time in seconds array builder. [DynComparator](https://docs.rs/arrow/latest/arrow/array/type.DynComparator.html "type arrow::array::DynComparator") Compare the values at two arbitrary indices in two arrays. [FixedSizeBinaryIter](https://docs.rs/arrow/latest/arrow/array/type.FixedSizeBinaryIter.html "type arrow::array::FixedSizeBinaryIter") an iterator that returns Some(T) or None, that can be used on any FixedSizeBinaryArray [FixedSizeListIter](https://docs.rs/arrow/latest/arrow/array/type.FixedSizeListIter.html "type arrow::array::FixedSizeListIter") an iterator that returns Some(T) or None, that can be used on any FixedSizeListArray [Float16Array](https://docs.rs/arrow/latest/arrow/array/type.Float16Array.html "type arrow::array::Float16Array") A [`PrimitiveArray`](https://docs.rs/arrow/latest/arrow/array/struct.PrimitiveArray.html "struct arrow::array::PrimitiveArray") of `f16` [Float16BufferBuilder](https://docs.rs/arrow/latest/arrow/array/type.Float16BufferBuilder.html "type arrow::array::Float16BufferBuilder") Buffer builder for 16-bit floating point type. [Float16Builder](https://docs.rs/arrow/latest/arrow/array/type.Float16Builder.html "type arrow::array::Float16Builder") A 16-bit floating point array builder. [Float32Array](https://docs.rs/arrow/latest/arrow/array/type.Float32Array.html "type arrow::array::Float32Array") A [`PrimitiveArray`](https://docs.rs/arrow/latest/arrow/array/struct.PrimitiveArray.html "struct arrow::array::PrimitiveArray") of `f32` [Float32BufferBuilder](https://docs.rs/arrow/latest/arrow/array/type.Float32BufferBuilder.html "type arrow::array::Float32BufferBuilder") Buffer builder for 32-bit floating point type. [Float32Builder](https://docs.rs/arrow/latest/arrow/array/type.Float32Builder.html "type arrow::array::Float32Builder") A 32-bit floating point array builder. [Float64Array](https://docs.rs/arrow/latest/arrow/array/type.Float64Array.html "type arrow::array::Float64Array") A [`PrimitiveArray`](https://docs.rs/arrow/latest/arrow/array/struct.PrimitiveArray.html "struct arrow::array::PrimitiveArray") of `f64` [Float64BufferBuilder](https://docs.rs/arrow/latest/arrow/array/type.Float64BufferBuilder.html "type arrow::array::Float64BufferBuilder") Buffer builder for 64-bit floating point type. [Float64Builder](https://docs.rs/arrow/latest/arrow/array/type.Float64Builder.html "type arrow::array::Float64Builder") A 64-bit floating point array builder. [GenericBinaryArray](https://docs.rs/arrow/latest/arrow/array/type.GenericBinaryArray.html "type arrow::array::GenericBinaryArray") A [`GenericByteArray`](https://docs.rs/arrow/latest/arrow/array/struct.GenericByteArray.html "struct arrow::array::GenericByteArray") for storing `[u8]` [GenericBinaryBuilder](https://docs.rs/arrow/latest/arrow/array/type.GenericBinaryBuilder.html "type arrow::array::GenericBinaryBuilder") Array builder for [`GenericBinaryArray`](https://docs.rs/arrow/latest/arrow/array/type.GenericBinaryArray.html "type arrow::array::GenericBinaryArray") [GenericBinaryIter](https://docs.rs/arrow/latest/arrow/array/type.GenericBinaryIter.html "type arrow::array::GenericBinaryIter") an iterator that returns Some(T) or None, that can be used on any BinaryArray [GenericListArrayIter](https://docs.rs/arrow/latest/arrow/array/type.GenericListArrayIter.html "type arrow::array::GenericListArrayIter") an iterator that returns Some(T) or None, that can be used on any ListArray [GenericListViewArrayIter](https://docs.rs/arrow/latest/arrow/array/type.GenericListViewArrayIter.html "type arrow::array::GenericListViewArrayIter") an iterator that returns Some(T) or None, that can be used on any ListArray [GenericStringArray](https://docs.rs/arrow/latest/arrow/array/type.GenericStringArray.html "type arrow::array::GenericStringArray") A [`GenericByteArray`](https://docs.rs/arrow/latest/arrow/array/struct.GenericByteArray.html "struct arrow::array::GenericByteArray") for storing `str` [GenericStringBuilder](https://docs.rs/arrow/latest/arrow/array/type.GenericStringBuilder.html "type arrow::array::GenericStringBuilder") Array builder for [`GenericStringArray`](https://docs.rs/arrow/latest/arrow/array/type.GenericStringArray.html "type arrow::array::GenericStringArray") [GenericStringIter](https://docs.rs/arrow/latest/arrow/array/type.GenericStringIter.html "type arrow::array::GenericStringIter") an iterator that returns Some(T) or None, that can be used on any Utf8Array [Int8Array](https://docs.rs/arrow/latest/arrow/array/type.Int8Array.html "type arrow::array::Int8Array") A [`PrimitiveArray`](https://docs.rs/arrow/latest/arrow/array/struct.PrimitiveArray.html "struct arrow::array::PrimitiveArray") of `i8` [Int8BufferBuilder](https://docs.rs/arrow/latest/arrow/array/type.Int8BufferBuilder.html "type arrow::array::Int8BufferBuilder") Buffer builder for signed 8-bit integer type. [Int8Builder](https://docs.rs/arrow/latest/arrow/array/type.Int8Builder.html "type arrow::array::Int8Builder") A signed 8-bit integer array builder. [Int8DictionaryArray](https://docs.rs/arrow/latest/arrow/array/type.Int8DictionaryArray.html "type arrow::array::Int8DictionaryArray") A [`DictionaryArray`](https://docs.rs/arrow/latest/arrow/array/struct.DictionaryArray.html "struct arrow::array::DictionaryArray") indexed by `i8` [Int16Array](https://docs.rs/arrow/latest/arrow/array/type.Int16Array.html "type arrow::array::Int16Array") A [`PrimitiveArray`](https://docs.rs/arrow/latest/arrow/array/struct.PrimitiveArray.html "struct arrow::array::PrimitiveArray") of `i16` [Int16BufferBuilder](https://docs.rs/arrow/latest/arrow/array/type.Int16BufferBuilder.html "type arrow::array::Int16BufferBuilder") Buffer builder for signed 16-bit integer type. [Int16Builder](https://docs.rs/arrow/latest/arrow/array/type.Int16Builder.html "type arrow::array::Int16Builder") A signed 16-bit integer array builder. [Int16DictionaryArray](https://docs.rs/arrow/latest/arrow/array/type.Int16DictionaryArray.html "type arrow::array::Int16DictionaryArray") A [`DictionaryArray`](https://docs.rs/arrow/latest/arrow/array/struct.DictionaryArray.html "struct arrow::array::DictionaryArray") indexed by `i16` [Int16RunArray](https://docs.rs/arrow/latest/arrow/array/type.Int16RunArray.html "type arrow::array::Int16RunArray") A [`RunArray`](https://docs.rs/arrow/latest/arrow/array/struct.RunArray.html "struct arrow::array::RunArray") with `i16` run ends [Int32Array](https://docs.rs/arrow/latest/arrow/array/type.Int32Array.html "type arrow::array::Int32Array") A [`PrimitiveArray`](https://docs.rs/arrow/latest/arrow/array/struct.PrimitiveArray.html "struct arrow::array::PrimitiveArray") of `i32` [Int32BufferBuilder](https://docs.rs/arrow/latest/arrow/array/type.Int32BufferBuilder.html "type arrow::array::Int32BufferBuilder") Buffer builder for signed 32-bit integer type. [Int32Builder](https://docs.rs/arrow/latest/arrow/array/type.Int32Builder.html "type arrow::array::Int32Builder") A signed 32-bit integer array builder. [Int32DictionaryArray](https://docs.rs/arrow/latest/arrow/array/type.Int32DictionaryArray.html "type arrow::array::Int32DictionaryArray") A [`DictionaryArray`](https://docs.rs/arrow/latest/arrow/array/struct.DictionaryArray.html "struct arrow::array::DictionaryArray") indexed by `i32` [Int32RunArray](https://docs.rs/arrow/latest/arrow/array/type.Int32RunArray.html "type arrow::array::Int32RunArray") A [`RunArray`](https://docs.rs/arrow/latest/arrow/array/struct.RunArray.html "struct arrow::array::RunArray") with `i32` run ends [Int64Array](https://docs.rs/arrow/latest/arrow/array/type.Int64Array.html "type arrow::array::Int64Array") A [`PrimitiveArray`](https://docs.rs/arrow/latest/arrow/array/struct.PrimitiveArray.html "struct arrow::array::PrimitiveArray") of `i64` [Int64BufferBuilder](https://docs.rs/arrow/latest/arrow/array/type.Int64BufferBuilder.html "type arrow::array::Int64BufferBuilder") Buffer builder for signed 64-bit integer type. [Int64Builder](https://docs.rs/arrow/latest/arrow/array/type.Int64Builder.html "type arrow::array::Int64Builder") A signed 64-bit integer array builder. [Int64DictionaryArray](https://docs.rs/arrow/latest/arrow/array/type.Int64DictionaryArray.html "type arrow::array::Int64DictionaryArray") A [`DictionaryArray`](https://docs.rs/arrow/latest/arrow/array/struct.DictionaryArray.html "struct arrow::array::DictionaryArray") indexed by `i64` [Int64RunArray](https://docs.rs/arrow/latest/arrow/array/type.Int64RunArray.html "type arrow::array::Int64RunArray") A [`RunArray`](https://docs.rs/arrow/latest/arrow/array/struct.RunArray.html "struct arrow::array::RunArray") with `i64` run ends [IntervalDayTimeArray](https://docs.rs/arrow/latest/arrow/array/type.IntervalDayTimeArray.html "type arrow::array::IntervalDayTimeArray") A [`PrimitiveArray`](https://docs.rs/arrow/latest/arrow/array/struct.PrimitiveArray.html "struct arrow::array::PrimitiveArray") of “calendar” intervals in days and milliseconds [IntervalDayTimeBufferBuilder](https://docs.rs/arrow/latest/arrow/array/type.IntervalDayTimeBufferBuilder.html "type arrow::array::IntervalDayTimeBufferBuilder") Buffer builder for “calendar” interval in days and milliseconds. [IntervalDayTimeBuilder](https://docs.rs/arrow/latest/arrow/array/type.IntervalDayTimeBuilder.html "type arrow::array::IntervalDayTimeBuilder") A “calendar” interval in days and milliseconds array builder. [IntervalMonthDayNanoArray](https://docs.rs/arrow/latest/arrow/array/type.IntervalMonthDayNanoArray.html "type arrow::array::IntervalMonthDayNanoArray") A [`PrimitiveArray`](https://docs.rs/arrow/latest/arrow/array/struct.PrimitiveArray.html "struct arrow::array::PrimitiveArray") of “calendar” intervals in months, days, and nanoseconds. [IntervalMonthDayNanoBufferBuilder](https://docs.rs/arrow/latest/arrow/array/type.IntervalMonthDayNanoBufferBuilder.html "type arrow::array::IntervalMonthDayNanoBufferBuilder") Buffer builder “calendar” interval in months, days, and nanoseconds. [IntervalMonthDayNanoBuilder](https://docs.rs/arrow/latest/arrow/array/type.IntervalMonthDayNanoBuilder.html "type arrow::array::IntervalMonthDayNanoBuilder") A “calendar” interval in months, days, and nanoseconds array builder. [IntervalYearMonthArray](https://docs.rs/arrow/latest/arrow/array/type.IntervalYearMonthArray.html "type arrow::array::IntervalYearMonthArray") A [`PrimitiveArray`](https://docs.rs/arrow/latest/arrow/array/struct.PrimitiveArray.html "struct arrow::array::PrimitiveArray") of “calendar” intervals in whole months [IntervalYearMonthBufferBuilder](https://docs.rs/arrow/latest/arrow/array/type.IntervalYearMonthBufferBuilder.html "type arrow::array::IntervalYearMonthBufferBuilder") Buffer builder for “calendar” interval in months. [IntervalYearMonthBuilder](https://docs.rs/arrow/latest/arrow/array/type.IntervalYearMonthBuilder.html "type arrow::array::IntervalYearMonthBuilder") A “calendar” interval in months array builder. [LargeBinaryArray](https://docs.rs/arrow/latest/arrow/array/type.LargeBinaryArray.html "type arrow::array::LargeBinaryArray") A [`GenericBinaryArray`](https://docs.rs/arrow/latest/arrow/array/type.GenericBinaryArray.html "type arrow::array::GenericBinaryArray") of `[u8]` using `i64` offsets [LargeBinaryBuilder](https://docs.rs/arrow/latest/arrow/array/type.LargeBinaryBuilder.html "type arrow::array::LargeBinaryBuilder") Builder for [`LargeBinaryArray`](https://docs.rs/arrow/latest/arrow/array/type.LargeBinaryArray.html "type arrow::array::LargeBinaryArray") [LargeBinaryDictionaryBuilder](https://docs.rs/arrow/latest/arrow/array/type.LargeBinaryDictionaryBuilder.html "type arrow::array::LargeBinaryDictionaryBuilder") Builder for [`DictionaryArray`](https://docs.rs/arrow/latest/arrow/array/struct.DictionaryArray.html "struct arrow::array::DictionaryArray") of [`LargeBinaryArray`](https://docs.rs/arrow/latest/arrow/array/type.LargeBinaryArray.html "type arrow::array::LargeBinaryArray") [LargeBinaryRunBuilder](https://docs.rs/arrow/latest/arrow/array/type.LargeBinaryRunBuilder.html "type arrow::array::LargeBinaryRunBuilder") Builder for [`RunArray`](https://docs.rs/arrow/latest/arrow/array/struct.RunArray.html "struct arrow::array::RunArray") of [`LargeBinaryArray`](https://docs.rs/arrow/latest/arrow/array/type.LargeBinaryArray.html "type arrow::array::LargeBinaryArray") [LargeListArray](https://docs.rs/arrow/latest/arrow/array/type.LargeListArray.html "type arrow::array::LargeListArray") A [`GenericListArray`](https://docs.rs/arrow/latest/arrow/array/struct.GenericListArray.html "struct arrow::array::GenericListArray") of variable size lists, storing offsets as `i64`. [LargeListBuilder](https://docs.rs/arrow/latest/arrow/array/type.LargeListBuilder.html "type arrow::array::LargeListBuilder") Builder for [`LargeListArray`](https://docs.rs/arrow/latest/arrow/array/type.LargeListArray.html "type arrow::array::LargeListArray") [LargeListViewArray](https://docs.rs/arrow/latest/arrow/array/type.LargeListViewArray.html "type arrow::array::LargeListViewArray") A [`GenericListViewArray`](https://docs.rs/arrow/latest/arrow/array/struct.GenericListViewArray.html "struct arrow::array::GenericListViewArray") of variable size lists, storing offsets as `i64`. [LargeListViewBuilder](https://docs.rs/arrow/latest/arrow/array/type.LargeListViewBuilder.html "type arrow::array::LargeListViewBuilder") Builder for [`LargeListViewArray`](https://docs.rs/arrow/latest/arrow/array/type.LargeListViewArray.html "type arrow::array::LargeListViewArray") [LargeStringArray](https://docs.rs/arrow/latest/arrow/array/type.LargeStringArray.html "type arrow::array::LargeStringArray") A [`GenericStringArray`](https://docs.rs/arrow/latest/arrow/array/type.GenericStringArray.html "type arrow::array::GenericStringArray") of `str` using `i64` offsets [LargeStringBuilder](https://docs.rs/arrow/latest/arrow/array/type.LargeStringBuilder.html "type arrow::array::LargeStringBuilder") Builder for [`LargeStringArray`](https://docs.rs/arrow/latest/arrow/array/type.LargeStringArray.html "type arrow::array::LargeStringArray") [LargeStringDictionaryBuilder](https://docs.rs/arrow/latest/arrow/array/type.LargeStringDictionaryBuilder.html "type arrow::array::LargeStringDictionaryBuilder") Builder for [`DictionaryArray`](https://docs.rs/arrow/latest/arrow/array/struct.DictionaryArray.html "struct arrow::array::DictionaryArray") of [`LargeStringArray`](https://docs.rs/arrow/latest/arrow/array/type.LargeStringArray.html "type arrow::array::LargeStringArray") [LargeStringRunBuilder](https://docs.rs/arrow/latest/arrow/array/type.LargeStringRunBuilder.html "type arrow::array::LargeStringRunBuilder") Builder for [`RunArray`](https://docs.rs/arrow/latest/arrow/array/struct.RunArray.html "struct arrow::array::RunArray") of [`LargeStringArray`](https://docs.rs/arrow/latest/arrow/array/type.LargeStringArray.html "type arrow::array::LargeStringArray") [ListArray](https://docs.rs/arrow/latest/arrow/array/type.ListArray.html "type arrow::array::ListArray") A [`GenericListArray`](https://docs.rs/arrow/latest/arrow/array/struct.GenericListArray.html "struct arrow::array::GenericListArray") of variable size lists, storing offsets as `i32`. [ListBuilder](https://docs.rs/arrow/latest/arrow/array/type.ListBuilder.html "type arrow::array::ListBuilder") Builder for [`ListArray`](https://docs.rs/arrow/latest/arrow/array/type.ListArray.html "type arrow::array::ListArray") [ListViewArray](https://docs.rs/arrow/latest/arrow/array/type.ListViewArray.html "type arrow::array::ListViewArray") A [`GenericListViewArray`](https://docs.rs/arrow/latest/arrow/array/struct.GenericListViewArray.html "struct arrow::array::GenericListViewArray") of variable size lists, storing offsets as `i32`. [ListViewBuilder](https://docs.rs/arrow/latest/arrow/array/type.ListViewBuilder.html "type arrow::array::ListViewBuilder") Builder for [`ListViewArray`](https://docs.rs/arrow/latest/arrow/array/type.ListViewArray.html "type arrow::array::ListViewArray") [MapArrayIter](https://docs.rs/arrow/latest/arrow/array/type.MapArrayIter.html "type arrow::array::MapArrayIter") an iterator that returns Some(T) or None, that can be used on any MapArray [PrimitiveIter](https://docs.rs/arrow/latest/arrow/array/type.PrimitiveIter.html "type arrow::array::PrimitiveIter") an iterator that returns Some(T) or None, that can be used on any PrimitiveArray [StringArray](https://docs.rs/arrow/latest/arrow/array/type.StringArray.html "type arrow::array::StringArray") A [`GenericStringArray`](https://docs.rs/arrow/latest/arrow/array/type.GenericStringArray.html "type arrow::array::GenericStringArray") of `str` using `i32` offsets [StringBuilder](https://docs.rs/arrow/latest/arrow/array/type.StringBuilder.html "type arrow::array::StringBuilder") Builder for [`StringArray`](https://docs.rs/arrow/latest/arrow/array/type.StringArray.html "type arrow::array::StringArray") [StringDictionaryBuilder](https://docs.rs/arrow/latest/arrow/array/type.StringDictionaryBuilder.html "type arrow::array::StringDictionaryBuilder") Builder for [`DictionaryArray`](https://docs.rs/arrow/latest/arrow/array/struct.DictionaryArray.html "struct arrow::array::DictionaryArray") of [`StringArray`](https://docs.rs/arrow/latest/arrow/array/type.StringArray.html "type arrow::array::StringArray") [StringRunBuilder](https://docs.rs/arrow/latest/arrow/array/type.StringRunBuilder.html "type arrow::array::StringRunBuilder") Builder for [`RunArray`](https://docs.rs/arrow/latest/arrow/array/struct.RunArray.html "struct arrow::array::RunArray") of [`StringArray`](https://docs.rs/arrow/latest/arrow/array/type.StringArray.html "type arrow::array::StringArray") [StringViewArray](https://docs.rs/arrow/latest/arrow/array/type.StringViewArray.html "type arrow::array::StringViewArray") A [`GenericByteViewArray`](https://docs.rs/arrow/latest/arrow/array/struct.GenericByteViewArray.html "struct arrow::array::GenericByteViewArray") that stores utf8 data [StringViewBuilder](https://docs.rs/arrow/latest/arrow/array/type.StringViewBuilder.html "type arrow::array::StringViewBuilder") Array builder for [`StringViewArray`](https://docs.rs/arrow/latest/arrow/array/type.StringViewArray.html "type arrow::array::StringViewArray") [Time32MillisecondArray](https://docs.rs/arrow/latest/arrow/array/type.Time32MillisecondArray.html "type arrow::array::Time32MillisecondArray") A [`PrimitiveArray`](https://docs.rs/arrow/latest/arrow/array/struct.PrimitiveArray.html "struct arrow::array::PrimitiveArray") of milliseconds since midnight stored as `i32` [Time32MillisecondBufferBuilder](https://docs.rs/arrow/latest/arrow/array/type.Time32MillisecondBufferBuilder.html "type arrow::array::Time32MillisecondBufferBuilder") Buffer builder for 32-bit elaspsed time since midnight of millisecond unit. [Time32MillisecondBuilder](https://docs.rs/arrow/latest/arrow/array/type.Time32MillisecondBuilder.html "type arrow::array::Time32MillisecondBuilder") A 32-bit elaspsed time in milliseconds array builder. [Time32SecondArray](https://docs.rs/arrow/latest/arrow/array/type.Time32SecondArray.html "type arrow::array::Time32SecondArray") A [`PrimitiveArray`](https://docs.rs/arrow/latest/arrow/array/struct.PrimitiveArray.html "struct arrow::array::PrimitiveArray") of seconds since midnight stored as `i32` [Time32SecondBufferBuilder](https://docs.rs/arrow/latest/arrow/array/type.Time32SecondBufferBuilder.html "type arrow::array::Time32SecondBufferBuilder") Buffer builder for 32-bit elaspsed time since midnight of second unit. [Time32SecondBuilder](https://docs.rs/arrow/latest/arrow/array/type.Time32SecondBuilder.html "type arrow::array::Time32SecondBuilder") A 32-bit elaspsed time in seconds array builder. [Time64MicrosecondArray](https://docs.rs/arrow/latest/arrow/array/type.Time64MicrosecondArray.html "type arrow::array::Time64MicrosecondArray") A [`PrimitiveArray`](https://docs.rs/arrow/latest/arrow/array/struct.PrimitiveArray.html "struct arrow::array::PrimitiveArray") of microseconds since midnight stored as `i64` [Time64MicrosecondBufferBuilder](https://docs.rs/arrow/latest/arrow/array/type.Time64MicrosecondBufferBuilder.html "type arrow::array::Time64MicrosecondBufferBuilder") Buffer builder for 64-bit elaspsed time since midnight of microsecond unit. [Time64MicrosecondBuilder](https://docs.rs/arrow/latest/arrow/array/type.Time64MicrosecondBuilder.html "type arrow::array::Time64MicrosecondBuilder") A 64-bit elaspsed time in microseconds array builder. [Time64NanosecondArray](https://docs.rs/arrow/latest/arrow/array/type.Time64NanosecondArray.html "type arrow::array::Time64NanosecondArray") A [`PrimitiveArray`](https://docs.rs/arrow/latest/arrow/array/struct.PrimitiveArray.html "struct arrow::array::PrimitiveArray") of nanoseconds since midnight stored as `i64` [Time64NanosecondBufferBuilder](https://docs.rs/arrow/latest/arrow/array/type.Time64NanosecondBufferBuilder.html "type arrow::array::Time64NanosecondBufferBuilder") Buffer builder for 64-bit elaspsed time since midnight of nanosecond unit. [Time64NanosecondBuilder](https://docs.rs/arrow/latest/arrow/array/type.Time64NanosecondBuilder.html "type arrow::array::Time64NanosecondBuilder") A 64-bit elaspsed time in nanoseconds array builder. [TimestampMicrosecondArray](https://docs.rs/arrow/latest/arrow/array/type.TimestampMicrosecondArray.html "type arrow::array::TimestampMicrosecondArray") A [`PrimitiveArray`](https://docs.rs/arrow/latest/arrow/array/struct.PrimitiveArray.html "struct arrow::array::PrimitiveArray") of microseconds since UNIX epoch stored as `i64` [TimestampMicrosecondBufferBuilder](https://docs.rs/arrow/latest/arrow/array/type.TimestampMicrosecondBufferBuilder.html "type arrow::array::TimestampMicrosecondBufferBuilder") Buffer builder for timestamp type of microsecond unit. [TimestampMicrosecondBuilder](https://docs.rs/arrow/latest/arrow/array/type.TimestampMicrosecondBuilder.html "type arrow::array::TimestampMicrosecondBuilder") A timestamp microsecond array builder. [TimestampMillisecondArray](https://docs.rs/arrow/latest/arrow/array/type.TimestampMillisecondArray.html "type arrow::array::TimestampMillisecondArray") A [`PrimitiveArray`](https://docs.rs/arrow/latest/arrow/array/struct.PrimitiveArray.html "struct arrow::array::PrimitiveArray") of milliseconds since UNIX epoch stored as `i64` [TimestampMillisecondBufferBuilder](https://docs.rs/arrow/latest/arrow/array/type.TimestampMillisecondBufferBuilder.html "type arrow::array::TimestampMillisecondBufferBuilder") Buffer builder for timestamp type of millisecond unit. [TimestampMillisecondBuilder](https://docs.rs/arrow/latest/arrow/array/type.TimestampMillisecondBuilder.html "type arrow::array::TimestampMillisecondBuilder") A timestamp millisecond array builder. [TimestampNanosecondArray](https://docs.rs/arrow/latest/arrow/array/type.TimestampNanosecondArray.html "type arrow::array::TimestampNanosecondArray") A [`PrimitiveArray`](https://docs.rs/arrow/latest/arrow/array/struct.PrimitiveArray.html "struct arrow::array::PrimitiveArray") of nanoseconds since UNIX epoch stored as `i64` [TimestampNanosecondBufferBuilder](https://docs.rs/arrow/latest/arrow/array/type.TimestampNanosecondBufferBuilder.html "type arrow::array::TimestampNanosecondBufferBuilder") Buffer builder for timestamp type of nanosecond unit. [TimestampNanosecondBuilder](https://docs.rs/arrow/latest/arrow/array/type.TimestampNanosecondBuilder.html "type arrow::array::TimestampNanosecondBuilder") A timestamp nanosecond array builder. [TimestampSecondArray](https://docs.rs/arrow/latest/arrow/array/type.TimestampSecondArray.html "type arrow::array::TimestampSecondArray") A [`PrimitiveArray`](https://docs.rs/arrow/latest/arrow/array/struct.PrimitiveArray.html "struct arrow::array::PrimitiveArray") of seconds since UNIX epoch stored as `i64` [TimestampSecondBufferBuilder](https://docs.rs/arrow/latest/arrow/array/type.TimestampSecondBufferBuilder.html "type arrow::array::TimestampSecondBufferBuilder") Buffer builder for timestamp type of second unit. [TimestampSecondBuilder](https://docs.rs/arrow/latest/arrow/array/type.TimestampSecondBuilder.html "type arrow::array::TimestampSecondBuilder") A timestamp second array builder. [UInt8Array](https://docs.rs/arrow/latest/arrow/array/type.UInt8Array.html "type arrow::array::UInt8Array") A [`PrimitiveArray`](https://docs.rs/arrow/latest/arrow/array/struct.PrimitiveArray.html "struct arrow::array::PrimitiveArray") of `u8` [UInt8BufferBuilder](https://docs.rs/arrow/latest/arrow/array/type.UInt8BufferBuilder.html "type arrow::array::UInt8BufferBuilder") Buffer builder for usigned 8-bit integer type. [UInt8Builder](https://docs.rs/arrow/latest/arrow/array/type.UInt8Builder.html "type arrow::array::UInt8Builder") An usigned 8-bit integer array builder. [UInt8DictionaryArray](https://docs.rs/arrow/latest/arrow/array/type.UInt8DictionaryArray.html "type arrow::array::UInt8DictionaryArray") A [`DictionaryArray`](https://docs.rs/arrow/latest/arrow/array/struct.DictionaryArray.html "struct arrow::array::DictionaryArray") indexed by `u8` [UInt16Array](https://docs.rs/arrow/latest/arrow/array/type.UInt16Array.html "type arrow::array::UInt16Array") A [`PrimitiveArray`](https://docs.rs/arrow/latest/arrow/array/struct.PrimitiveArray.html "struct arrow::array::PrimitiveArray") of `u16` [UInt16BufferBuilder](https://docs.rs/arrow/latest/arrow/array/type.UInt16BufferBuilder.html "type arrow::array::UInt16BufferBuilder") Buffer builder for usigned 16-bit integer type. [UInt16Builder](https://docs.rs/arrow/latest/arrow/array/type.UInt16Builder.html "type arrow::array::UInt16Builder") An usigned 16-bit integer array builder. [UInt16DictionaryArray](https://docs.rs/arrow/latest/arrow/array/type.UInt16DictionaryArray.html "type arrow::array::UInt16DictionaryArray") A [`DictionaryArray`](https://docs.rs/arrow/latest/arrow/array/struct.DictionaryArray.html "struct arrow::array::DictionaryArray") indexed by `u16` [UInt32Array](https://docs.rs/arrow/latest/arrow/array/type.UInt32Array.html "type arrow::array::UInt32Array") A [`PrimitiveArray`](https://docs.rs/arrow/latest/arrow/array/struct.PrimitiveArray.html "struct arrow::array::PrimitiveArray") of `u32` [UInt32BufferBuilder](https://docs.rs/arrow/latest/arrow/array/type.UInt32BufferBuilder.html "type arrow::array::UInt32BufferBuilder") Buffer builder for usigned 32-bit integer type. [UInt32Builder](https://docs.rs/arrow/latest/arrow/array/type.UInt32Builder.html "type arrow::array::UInt32Builder") An usigned 32-bit integer array builder. [UInt32DictionaryArray](https://docs.rs/arrow/latest/arrow/array/type.UInt32DictionaryArray.html "type arrow::array::UInt32DictionaryArray") A [`DictionaryArray`](https://docs.rs/arrow/latest/arrow/array/struct.DictionaryArray.html "struct arrow::array::DictionaryArray") indexed by `u32` [UInt64Array](https://docs.rs/arrow/latest/arrow/array/type.UInt64Array.html "type arrow::array::UInt64Array") A [`PrimitiveArray`](https://docs.rs/arrow/latest/arrow/array/struct.PrimitiveArray.html "struct arrow::array::PrimitiveArray") of `u64` [UInt64BufferBuilder](https://docs.rs/arrow/latest/arrow/array/type.UInt64BufferBuilder.html "type arrow::array::UInt64BufferBuilder") Buffer builder for usigned 64-bit integer type. [UInt64Builder](https://docs.rs/arrow/latest/arrow/array/type.UInt64Builder.html "type arrow::array::UInt64Builder") An usigned 64-bit integer array builder. [UInt64DictionaryArray](https://docs.rs/arrow/latest/arrow/array/type.UInt64DictionaryArray.html "type arrow::array::UInt64DictionaryArray") A [`DictionaryArray`](https://docs.rs/arrow/latest/arrow/array/struct.DictionaryArray.html "struct arrow::array::DictionaryArray") indexed by `u64` --- # List of all items in this crate [Docs.rs](https://docs.rs/) * [arrow-58.1.0](https://docs.rs/arrow/latest/arrow/all.html# "Rust implementation of Apache Arrow") * arrow 58.1.0 * [Permalink](https://docs.rs/arrow/58.1.0/arrow/all.html "Get a link to this specific version") * [Docs.rs crate page](https://docs.rs/crate/arrow/latest "See arrow in docs.rs") * [Apache-2.0](https://spdx.org/licenses/Apache-2.0) * Links * [Homepage](https://github.com/apache/arrow-rs) * [Repository](https://github.com/apache/arrow-rs) * [crates.io](https://crates.io/crates/arrow "See arrow in crates.io") * [Source](https://docs.rs/crate/arrow/latest/source/ "Browse source of arrow-58.1.0") * Owners * [andygrove](https://crates.io/users/andygrove) * [kou](https://crates.io/users/kou) * [kszucs](https://crates.io/users/kszucs) * [xhochy](https://crates.io/users/xhochy) * [nevi-me](https://crates.io/users/nevi-me) * [alamb](https://crates.io/users/alamb) * [tustvold](https://crates.io/users/tustvold) * Dependencies * * [arrow-arith ^58.1.0 _normal_](https://docs.rs/arrow-arith/^58.1.0/) * [arrow-array ^58.1.0 _normal_](https://docs.rs/arrow-array/^58.1.0/) * [arrow-buffer ^58.1.0 _normal_](https://docs.rs/arrow-buffer/^58.1.0/) * [arrow-cast ^58.1.0 _normal_](https://docs.rs/arrow-cast/^58.1.0/) * [arrow-csv ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-csv/^58.1.0/) * [arrow-data ^58.1.0 _normal_](https://docs.rs/arrow-data/^58.1.0/) * [arrow-ipc ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-ipc/^58.1.0/) * [arrow-json ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-json/^58.1.0/) * [arrow-ord ^58.1.0 _normal_](https://docs.rs/arrow-ord/^58.1.0/) * [arrow-pyarrow ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-pyarrow/^58.1.0/) * [arrow-row ^58.1.0 _normal_](https://docs.rs/arrow-row/^58.1.0/) * [arrow-schema ^58.1.0 _normal_](https://docs.rs/arrow-schema/^58.1.0/) * [arrow-select ^58.1.0 _normal_](https://docs.rs/arrow-select/^58.1.0/) * [arrow-string ^58.1.0 _normal_](https://docs.rs/arrow-string/^58.1.0/) * [half ^2.1 _normal_ _optional_](https://docs.rs/half/^2.1/) * [rand ^0.9 _normal_ _optional_](https://docs.rs/rand/^0.9/) * [bytes ^1.9 _dev_](https://docs.rs/bytes/^1.9/) * [chrono ^0.4.40 _dev_](https://docs.rs/chrono/^0.4.40/) * [criterion ^0.8.0 _dev_](https://docs.rs/criterion/^0.8.0/) * [half ^2.1 _dev_](https://docs.rs/half/^2.1/) * [memmap2 ^0.9.3 _dev_](https://docs.rs/memmap2/^0.9.3/) * [rand ^0.9 _dev_](https://docs.rs/rand/^0.9/) * [serde ^1.0 _dev_](https://docs.rs/serde/^1.0/) * Versions * [**100%** of the crate is documented](https://docs.rs/crate/arrow/latest) * [Platform](https://docs.rs/arrow/latest/arrow/all.html#) * [x86\_64-unknown-linux-gnu](https://docs.rs/crate/arrow/latest/target-redirect/arrow/all.html) * [Feature flags](https://docs.rs/crate/arrow/latest/features "Browse available feature flags of arrow-58.1.0") * [docs.rs](https://docs.rs/arrow/latest/arrow/all.html#) * [About docs.rs](https://docs.rs/about) * [Badges](https://docs.rs/about/badges) * [Builds](https://docs.rs/about/builds) * [Metadata](https://docs.rs/about/metadata) * [Shorthand URLs](https://docs.rs/about/redirections) * [Download](https://docs.rs/about/download) * [Rustdoc JSON](https://docs.rs/about/rustdoc-json) * [Build queue](https://docs.rs/releases/queue) * [Privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#docs.rs) * [Rust](https://docs.rs/arrow/latest/arrow/all.html#) * [Rust website](https://www.rust-lang.org/) * [The Book](https://doc.rust-lang.org/book/) * [Standard Library API Reference](https://doc.rust-lang.org/std/) * [Rust by Example](https://doc.rust-lang.org/rust-by-example/) * [The Cargo Guide](https://doc.rust-lang.org/cargo/guide/) * [Clippy Documentation](https://doc.rust-lang.org/nightly/clippy) [Skip to main content](https://docs.rs/arrow/latest/arrow/all.html#main-content) [All](https://docs.rs/arrow/latest/arrow/all.html#) ---------------------------------------------------- List of all items ================= ### Structs * [array::ArrayData](https://docs.rs/arrow/latest/arrow/array/struct.ArrayData.html) * [array::ArrayDataBuilder](https://docs.rs/arrow/latest/arrow/array/struct.ArrayDataBuilder.html) * [array::ArrayIter](https://docs.rs/arrow/latest/arrow/array/struct.ArrayIter.html) * [array::BooleanArray](https://docs.rs/arrow/latest/arrow/array/struct.BooleanArray.html) * [array::BooleanBufferBuilder](https://docs.rs/arrow/latest/arrow/array/struct.BooleanBufferBuilder.html) * [array::BooleanBuilder](https://docs.rs/arrow/latest/arrow/array/struct.BooleanBuilder.html) * [array::BufferBuilder](https://docs.rs/arrow/latest/arrow/array/struct.BufferBuilder.html) * [array::ByteView](https://docs.rs/arrow/latest/arrow/array/struct.ByteView.html) * [array::DataTypeLayout](https://docs.rs/arrow/latest/arrow/array/struct.DataTypeLayout.html) * [array::DictionaryArray](https://docs.rs/arrow/latest/arrow/array/struct.DictionaryArray.html) * [array::FixedSizeBinaryArray](https://docs.rs/arrow/latest/arrow/array/struct.FixedSizeBinaryArray.html) * [array::FixedSizeBinaryBuilder](https://docs.rs/arrow/latest/arrow/array/struct.FixedSizeBinaryBuilder.html) * [array::FixedSizeBinaryDictionaryBuilder](https://docs.rs/arrow/latest/arrow/array/struct.FixedSizeBinaryDictionaryBuilder.html) * [array::FixedSizeListArray](https://docs.rs/arrow/latest/arrow/array/struct.FixedSizeListArray.html) * [array::FixedSizeListBuilder](https://docs.rs/arrow/latest/arrow/array/struct.FixedSizeListBuilder.html) * [array::GenericByteArray](https://docs.rs/arrow/latest/arrow/array/struct.GenericByteArray.html) * [array::GenericByteBuilder](https://docs.rs/arrow/latest/arrow/array/struct.GenericByteBuilder.html) * [array::GenericByteDictionaryBuilder](https://docs.rs/arrow/latest/arrow/array/struct.GenericByteDictionaryBuilder.html) * [array::GenericByteRunBuilder](https://docs.rs/arrow/latest/arrow/array/struct.GenericByteRunBuilder.html) * [array::GenericByteViewArray](https://docs.rs/arrow/latest/arrow/array/struct.GenericByteViewArray.html) * [array::GenericByteViewBuilder](https://docs.rs/arrow/latest/arrow/array/struct.GenericByteViewBuilder.html) * [array::GenericListArray](https://docs.rs/arrow/latest/arrow/array/struct.GenericListArray.html) * [array::GenericListBuilder](https://docs.rs/arrow/latest/arrow/array/struct.GenericListBuilder.html) * [array::GenericListViewArray](https://docs.rs/arrow/latest/arrow/array/struct.GenericListViewArray.html) * [array::GenericListViewBuilder](https://docs.rs/arrow/latest/arrow/array/struct.GenericListViewBuilder.html) * [array::MapArray](https://docs.rs/arrow/latest/arrow/array/struct.MapArray.html) * [array::MapBuilder](https://docs.rs/arrow/latest/arrow/array/struct.MapBuilder.html) * [array::MapFieldNames](https://docs.rs/arrow/latest/arrow/array/struct.MapFieldNames.html) * [array::MutableArrayData](https://docs.rs/arrow/latest/arrow/array/struct.MutableArrayData.html) * [array::NativeAdapter](https://docs.rs/arrow/latest/arrow/array/struct.NativeAdapter.html) * [array::NullArray](https://docs.rs/arrow/latest/arrow/array/struct.NullArray.html) * [array::NullBufferBuilder](https://docs.rs/arrow/latest/arrow/array/struct.NullBufferBuilder.html) * [array::NullBuilder](https://docs.rs/arrow/latest/arrow/array/struct.NullBuilder.html) * [array::OffsetBufferBuilder](https://docs.rs/arrow/latest/arrow/array/struct.OffsetBufferBuilder.html) * [array::PrimitiveArray](https://docs.rs/arrow/latest/arrow/array/struct.PrimitiveArray.html) * [array::PrimitiveBuilder](https://docs.rs/arrow/latest/arrow/array/struct.PrimitiveBuilder.html) * [array::PrimitiveDictionaryBuilder](https://docs.rs/arrow/latest/arrow/array/struct.PrimitiveDictionaryBuilder.html) * [array::PrimitiveRunBuilder](https://docs.rs/arrow/latest/arrow/array/struct.PrimitiveRunBuilder.html) * [array::RecordBatch](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html) * [array::RecordBatchIterator](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatchIterator.html) * [array::RecordBatchOptions](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatchOptions.html) * [array::RunArray](https://docs.rs/arrow/latest/arrow/array/struct.RunArray.html) * [array::Scalar](https://docs.rs/arrow/latest/arrow/array/struct.Scalar.html) * [array::StructArray](https://docs.rs/arrow/latest/arrow/array/struct.StructArray.html) * [array::StructBuilder](https://docs.rs/arrow/latest/arrow/array/struct.StructBuilder.html) * [array::TypedDictionaryArray](https://docs.rs/arrow/latest/arrow/array/struct.TypedDictionaryArray.html) * [array::TypedRunArray](https://docs.rs/arrow/latest/arrow/array/struct.TypedRunArray.html) * [array::UnionArray](https://docs.rs/arrow/latest/arrow/array/struct.UnionArray.html) * [array::UnionBuilder](https://docs.rs/arrow/latest/arrow/array/struct.UnionBuilder.html) * [array::array::BooleanArray](https://docs.rs/arrow/latest/arrow/array/array/struct.BooleanArray.html) * [array::array::DictionaryArray](https://docs.rs/arrow/latest/arrow/array/array/struct.DictionaryArray.html) * [array::array::FixedSizeBinaryArray](https://docs.rs/arrow/latest/arrow/array/array/struct.FixedSizeBinaryArray.html) * [array::array::FixedSizeListArray](https://docs.rs/arrow/latest/arrow/array/array/struct.FixedSizeListArray.html) * [array::array::GenericByteArray](https://docs.rs/arrow/latest/arrow/array/array/struct.GenericByteArray.html) * [array::array::GenericByteViewArray](https://docs.rs/arrow/latest/arrow/array/array/struct.GenericByteViewArray.html) * [array::array::GenericListArray](https://docs.rs/arrow/latest/arrow/array/array/struct.GenericListArray.html) * [array::array::GenericListViewArray](https://docs.rs/arrow/latest/arrow/array/array/struct.GenericListViewArray.html) * [array::array::MapArray](https://docs.rs/arrow/latest/arrow/array/array/struct.MapArray.html) * [array::array::NativeAdapter](https://docs.rs/arrow/latest/arrow/array/array/struct.NativeAdapter.html) * [array::array::NullArray](https://docs.rs/arrow/latest/arrow/array/array/struct.NullArray.html) * [array::array::PrimitiveArray](https://docs.rs/arrow/latest/arrow/array/array/struct.PrimitiveArray.html) * [array::array::RunArray](https://docs.rs/arrow/latest/arrow/array/array/struct.RunArray.html) * [array::array::StructArray](https://docs.rs/arrow/latest/arrow/array/array/struct.StructArray.html) * [array::array::TypedDictionaryArray](https://docs.rs/arrow/latest/arrow/array/array/struct.TypedDictionaryArray.html) * [array::array::TypedRunArray](https://docs.rs/arrow/latest/arrow/array/array/struct.TypedRunArray.html) * [array::array::UnionArray](https://docs.rs/arrow/latest/arrow/array/array/struct.UnionArray.html) * [array::builder::BooleanBufferBuilder](https://docs.rs/arrow/latest/arrow/array/builder/struct.BooleanBufferBuilder.html) * [array::builder::BooleanBuilder](https://docs.rs/arrow/latest/arrow/array/builder/struct.BooleanBuilder.html) * [array::builder::BufferBuilder](https://docs.rs/arrow/latest/arrow/array/builder/struct.BufferBuilder.html) * [array::builder::FixedSizeBinaryBuilder](https://docs.rs/arrow/latest/arrow/array/builder/struct.FixedSizeBinaryBuilder.html) * [array::builder::FixedSizeBinaryDictionaryBuilder](https://docs.rs/arrow/latest/arrow/array/builder/struct.FixedSizeBinaryDictionaryBuilder.html) * [array::builder::FixedSizeListBuilder](https://docs.rs/arrow/latest/arrow/array/builder/struct.FixedSizeListBuilder.html) * [array::builder::GenericByteBuilder](https://docs.rs/arrow/latest/arrow/array/builder/struct.GenericByteBuilder.html) * [array::builder::GenericByteDictionaryBuilder](https://docs.rs/arrow/latest/arrow/array/builder/struct.GenericByteDictionaryBuilder.html) * [array::builder::GenericByteRunBuilder](https://docs.rs/arrow/latest/arrow/array/builder/struct.GenericByteRunBuilder.html) * [array::builder::GenericByteViewBuilder](https://docs.rs/arrow/latest/arrow/array/builder/struct.GenericByteViewBuilder.html) * [array::builder::GenericListBuilder](https://docs.rs/arrow/latest/arrow/array/builder/struct.GenericListBuilder.html) * [array::builder::GenericListViewBuilder](https://docs.rs/arrow/latest/arrow/array/builder/struct.GenericListViewBuilder.html) * [array::builder::MapBuilder](https://docs.rs/arrow/latest/arrow/array/builder/struct.MapBuilder.html) * [array::builder::MapFieldNames](https://docs.rs/arrow/latest/arrow/array/builder/struct.MapFieldNames.html) * [array::builder::NullBufferBuilder](https://docs.rs/arrow/latest/arrow/array/builder/struct.NullBufferBuilder.html) * [array::builder::NullBuilder](https://docs.rs/arrow/latest/arrow/array/builder/struct.NullBuilder.html) * [array::builder::OffsetBufferBuilder](https://docs.rs/arrow/latest/arrow/array/builder/struct.OffsetBufferBuilder.html) * [array::builder::PrimitiveBuilder](https://docs.rs/arrow/latest/arrow/array/builder/struct.PrimitiveBuilder.html) * [array::builder::PrimitiveDictionaryBuilder](https://docs.rs/arrow/latest/arrow/array/builder/struct.PrimitiveDictionaryBuilder.html) * [array::builder::PrimitiveRunBuilder](https://docs.rs/arrow/latest/arrow/array/builder/struct.PrimitiveRunBuilder.html) * [array::builder::StructBuilder](https://docs.rs/arrow/latest/arrow/array/builder/struct.StructBuilder.html) * [array::builder::UnionBuilder](https://docs.rs/arrow/latest/arrow/array/builder/struct.UnionBuilder.html) * [array::ffi::FFI\_ArrowArray](https://docs.rs/arrow/latest/arrow/array/ffi/struct.FFI_ArrowArray.html) * [array::ffi::FFI\_ArrowSchema](https://docs.rs/arrow/latest/arrow/array/ffi/struct.FFI_ArrowSchema.html) * [array::ffi\_stream::ArrowArrayStreamReader](https://docs.rs/arrow/latest/arrow/array/ffi_stream/struct.ArrowArrayStreamReader.html) * [array::ffi\_stream::FFI\_ArrowArrayStream](https://docs.rs/arrow/latest/arrow/array/ffi_stream/struct.FFI_ArrowArrayStream.html) * [array::iterator::ArrayIter](https://docs.rs/arrow/latest/arrow/array/iterator/struct.ArrayIter.html) * [array::run\_iterator::RunArrayIter](https://docs.rs/arrow/latest/arrow/array/run_iterator/struct.RunArrayIter.html) * [array::timezone::Tz](https://docs.rs/arrow/latest/arrow/array/timezone/struct.Tz.html) * [array::timezone::TzOffset](https://docs.rs/arrow/latest/arrow/array/timezone/struct.TzOffset.html) * [array::types::BinaryViewType](https://docs.rs/arrow/latest/arrow/array/types/struct.BinaryViewType.html) * [array::types::BooleanType](https://docs.rs/arrow/latest/arrow/array/types/struct.BooleanType.html) * [array::types::Date32Type](https://docs.rs/arrow/latest/arrow/array/types/struct.Date32Type.html) * [array::types::Date64Type](https://docs.rs/arrow/latest/arrow/array/types/struct.Date64Type.html) * [array::types::Decimal128Type](https://docs.rs/arrow/latest/arrow/array/types/struct.Decimal128Type.html) * [array::types::Decimal256Type](https://docs.rs/arrow/latest/arrow/array/types/struct.Decimal256Type.html) * [array::types::Decimal32Type](https://docs.rs/arrow/latest/arrow/array/types/struct.Decimal32Type.html) * [array::types::Decimal64Type](https://docs.rs/arrow/latest/arrow/array/types/struct.Decimal64Type.html) * [array::types::DurationMicrosecondType](https://docs.rs/arrow/latest/arrow/array/types/struct.DurationMicrosecondType.html) * [array::types::DurationMillisecondType](https://docs.rs/arrow/latest/arrow/array/types/struct.DurationMillisecondType.html) * [array::types::DurationNanosecondType](https://docs.rs/arrow/latest/arrow/array/types/struct.DurationNanosecondType.html) * [array::types::DurationSecondType](https://docs.rs/arrow/latest/arrow/array/types/struct.DurationSecondType.html) * [array::types::Float16Type](https://docs.rs/arrow/latest/arrow/array/types/struct.Float16Type.html) * [array::types::Float32Type](https://docs.rs/arrow/latest/arrow/array/types/struct.Float32Type.html) * [array::types::Float64Type](https://docs.rs/arrow/latest/arrow/array/types/struct.Float64Type.html) * [array::types::GenericBinaryType](https://docs.rs/arrow/latest/arrow/array/types/struct.GenericBinaryType.html) * [array::types::GenericStringType](https://docs.rs/arrow/latest/arrow/array/types/struct.GenericStringType.html) * [array::types::Int16Type](https://docs.rs/arrow/latest/arrow/array/types/struct.Int16Type.html) * [array::types::Int32Type](https://docs.rs/arrow/latest/arrow/array/types/struct.Int32Type.html) * [array::types::Int64Type](https://docs.rs/arrow/latest/arrow/array/types/struct.Int64Type.html) * [array::types::Int8Type](https://docs.rs/arrow/latest/arrow/array/types/struct.Int8Type.html) * [array::types::IntervalDayTime](https://docs.rs/arrow/latest/arrow/array/types/struct.IntervalDayTime.html) * [array::types::IntervalDayTimeType](https://docs.rs/arrow/latest/arrow/array/types/struct.IntervalDayTimeType.html) * [array::types::IntervalMonthDayNano](https://docs.rs/arrow/latest/arrow/array/types/struct.IntervalMonthDayNano.html) * [array::types::IntervalMonthDayNanoType](https://docs.rs/arrow/latest/arrow/array/types/struct.IntervalMonthDayNanoType.html) * [array::types::IntervalYearMonthType](https://docs.rs/arrow/latest/arrow/array/types/struct.IntervalYearMonthType.html) * [array::types::StringViewType](https://docs.rs/arrow/latest/arrow/array/types/struct.StringViewType.html) * [array::types::Time32MillisecondType](https://docs.rs/arrow/latest/arrow/array/types/struct.Time32MillisecondType.html) * [array::types::Time32SecondType](https://docs.rs/arrow/latest/arrow/array/types/struct.Time32SecondType.html) * [array::types::Time64MicrosecondType](https://docs.rs/arrow/latest/arrow/array/types/struct.Time64MicrosecondType.html) * [array::types::Time64NanosecondType](https://docs.rs/arrow/latest/arrow/array/types/struct.Time64NanosecondType.html) * [array::types::TimestampMicrosecondType](https://docs.rs/arrow/latest/arrow/array/types/struct.TimestampMicrosecondType.html) * [array::types::TimestampMillisecondType](https://docs.rs/arrow/latest/arrow/array/types/struct.TimestampMillisecondType.html) * [array::types::TimestampNanosecondType](https://docs.rs/arrow/latest/arrow/array/types/struct.TimestampNanosecondType.html) * [array::types::TimestampSecondType](https://docs.rs/arrow/latest/arrow/array/types/struct.TimestampSecondType.html) * [array::types::UInt16Type](https://docs.rs/arrow/latest/arrow/array/types/struct.UInt16Type.html) * [array::types::UInt32Type](https://docs.rs/arrow/latest/arrow/array/types/struct.UInt32Type.html) * [array::types::UInt64Type](https://docs.rs/arrow/latest/arrow/array/types/struct.UInt64Type.html) * [array::types::UInt8Type](https://docs.rs/arrow/latest/arrow/array/types/struct.UInt8Type.html) * [buffer::BooleanBuffer](https://docs.rs/arrow/latest/arrow/buffer/struct.BooleanBuffer.html) * [buffer::Buffer](https://docs.rs/arrow/latest/arrow/buffer/struct.Buffer.html) * [buffer::MutableBuffer](https://docs.rs/arrow/latest/arrow/buffer/struct.MutableBuffer.html) * [buffer::NullBuffer](https://docs.rs/arrow/latest/arrow/buffer/struct.NullBuffer.html) * [buffer::OffsetBuffer](https://docs.rs/arrow/latest/arrow/buffer/struct.OffsetBuffer.html) * [buffer::RunEndBuffer](https://docs.rs/arrow/latest/arrow/buffer/struct.RunEndBuffer.html) * [buffer::ScalarBuffer](https://docs.rs/arrow/latest/arrow/buffer/struct.ScalarBuffer.html) * [compute::BatchCoalescer](https://docs.rs/arrow/latest/arrow/compute/struct.BatchCoalescer.html) * [compute::CastOptions](https://docs.rs/arrow/latest/arrow/compute/struct.CastOptions.html) * [compute::FilterBuilder](https://docs.rs/arrow/latest/arrow/compute/struct.FilterBuilder.html) * [compute::FilterPredicate](https://docs.rs/arrow/latest/arrow/compute/struct.FilterPredicate.html) * [compute::FixedLexicographicalComparator](https://docs.rs/arrow/latest/arrow/compute/struct.FixedLexicographicalComparator.html) * [compute::LexicographicalComparator](https://docs.rs/arrow/latest/arrow/compute/struct.LexicographicalComparator.html) * [compute::Partitions](https://docs.rs/arrow/latest/arrow/compute/struct.Partitions.html) * [compute::SlicesIterator](https://docs.rs/arrow/latest/arrow/compute/struct.SlicesIterator.html) * [compute::SortColumn](https://docs.rs/arrow/latest/arrow/compute/struct.SortColumn.html) * [compute::SortOptions](https://docs.rs/arrow/latest/arrow/compute/struct.SortOptions.html) * [compute::TakeOptions](https://docs.rs/arrow/latest/arrow/compute/struct.TakeOptions.html) * [compute::kernels::cast::CastOptions](https://docs.rs/arrow/latest/arrow/compute/kernels/cast/struct.CastOptions.html) * [compute::kernels::cast\_utils::IntervalParseConfig](https://docs.rs/arrow/latest/arrow/compute/kernels/cast_utils/struct.IntervalParseConfig.html) * [compute::kernels::coalesce::BatchCoalescer](https://docs.rs/arrow/latest/arrow/compute/kernels/coalesce/struct.BatchCoalescer.html) * [compute::kernels::filter::FilterBuilder](https://docs.rs/arrow/latest/arrow/compute/kernels/filter/struct.FilterBuilder.html) * [compute::kernels::filter::FilterPredicate](https://docs.rs/arrow/latest/arrow/compute/kernels/filter/struct.FilterPredicate.html) * [compute::kernels::filter::SlicesIterator](https://docs.rs/arrow/latest/arrow/compute/kernels/filter/struct.SlicesIterator.html) * [compute::kernels::partition::Partitions](https://docs.rs/arrow/latest/arrow/compute/kernels/partition/struct.Partitions.html) * [compute::kernels::sort::FixedLexicographicalComparator](https://docs.rs/arrow/latest/arrow/compute/kernels/sort/struct.FixedLexicographicalComparator.html) * [compute::kernels::sort::LexicographicalComparator](https://docs.rs/arrow/latest/arrow/compute/kernels/sort/struct.LexicographicalComparator.html) * [compute::kernels::sort::SortColumn](https://docs.rs/arrow/latest/arrow/compute/kernels/sort/struct.SortColumn.html) * [compute::kernels::sort::SortOptions](https://docs.rs/arrow/latest/arrow/compute/kernels/sort/struct.SortOptions.html) * [compute::kernels::take::TakeOptions](https://docs.rs/arrow/latest/arrow/compute/kernels/take/struct.TakeOptions.html) * [compute::kernels::zip::ScalarZipper](https://docs.rs/arrow/latest/arrow/compute/kernels/zip/struct.ScalarZipper.html) * [datatypes::BinaryViewType](https://docs.rs/arrow/latest/arrow/datatypes/struct.BinaryViewType.html) * [datatypes::BooleanType](https://docs.rs/arrow/latest/arrow/datatypes/struct.BooleanType.html) * [datatypes::Date32Type](https://docs.rs/arrow/latest/arrow/datatypes/struct.Date32Type.html) * [datatypes::Date64Type](https://docs.rs/arrow/latest/arrow/datatypes/struct.Date64Type.html) * [datatypes::Decimal128Type](https://docs.rs/arrow/latest/arrow/datatypes/struct.Decimal128Type.html) * [datatypes::Decimal256Type](https://docs.rs/arrow/latest/arrow/datatypes/struct.Decimal256Type.html) * [datatypes::Decimal32Type](https://docs.rs/arrow/latest/arrow/datatypes/struct.Decimal32Type.html) * [datatypes::Decimal64Type](https://docs.rs/arrow/latest/arrow/datatypes/struct.Decimal64Type.html) * [datatypes::DurationMicrosecondType](https://docs.rs/arrow/latest/arrow/datatypes/struct.DurationMicrosecondType.html) * [datatypes::DurationMillisecondType](https://docs.rs/arrow/latest/arrow/datatypes/struct.DurationMillisecondType.html) * [datatypes::DurationNanosecondType](https://docs.rs/arrow/latest/arrow/datatypes/struct.DurationNanosecondType.html) * [datatypes::DurationSecondType](https://docs.rs/arrow/latest/arrow/datatypes/struct.DurationSecondType.html) * [datatypes::Field](https://docs.rs/arrow/latest/arrow/datatypes/struct.Field.html) * [datatypes::Fields](https://docs.rs/arrow/latest/arrow/datatypes/struct.Fields.html) * [datatypes::Float16Type](https://docs.rs/arrow/latest/arrow/datatypes/struct.Float16Type.html) * [datatypes::Float32Type](https://docs.rs/arrow/latest/arrow/datatypes/struct.Float32Type.html) * [datatypes::Float64Type](https://docs.rs/arrow/latest/arrow/datatypes/struct.Float64Type.html) * [datatypes::GenericBinaryType](https://docs.rs/arrow/latest/arrow/datatypes/struct.GenericBinaryType.html) * [datatypes::GenericStringType](https://docs.rs/arrow/latest/arrow/datatypes/struct.GenericStringType.html) * [datatypes::Int16Type](https://docs.rs/arrow/latest/arrow/datatypes/struct.Int16Type.html) * [datatypes::Int32Type](https://docs.rs/arrow/latest/arrow/datatypes/struct.Int32Type.html) * [datatypes::Int64Type](https://docs.rs/arrow/latest/arrow/datatypes/struct.Int64Type.html) * [datatypes::Int8Type](https://docs.rs/arrow/latest/arrow/datatypes/struct.Int8Type.html) * [datatypes::IntervalDayTime](https://docs.rs/arrow/latest/arrow/datatypes/struct.IntervalDayTime.html) * [datatypes::IntervalDayTimeType](https://docs.rs/arrow/latest/arrow/datatypes/struct.IntervalDayTimeType.html) * [datatypes::IntervalMonthDayNano](https://docs.rs/arrow/latest/arrow/datatypes/struct.IntervalMonthDayNano.html) * [datatypes::IntervalMonthDayNanoType](https://docs.rs/arrow/latest/arrow/datatypes/struct.IntervalMonthDayNanoType.html) * [datatypes::IntervalYearMonthType](https://docs.rs/arrow/latest/arrow/datatypes/struct.IntervalYearMonthType.html) * [datatypes::Schema](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html) * [datatypes::SchemaBuilder](https://docs.rs/arrow/latest/arrow/datatypes/struct.SchemaBuilder.html) * [datatypes::StringViewType](https://docs.rs/arrow/latest/arrow/datatypes/struct.StringViewType.html) * [datatypes::Time32MillisecondType](https://docs.rs/arrow/latest/arrow/datatypes/struct.Time32MillisecondType.html) * [datatypes::Time32SecondType](https://docs.rs/arrow/latest/arrow/datatypes/struct.Time32SecondType.html) * [datatypes::Time64MicrosecondType](https://docs.rs/arrow/latest/arrow/datatypes/struct.Time64MicrosecondType.html) * [datatypes::Time64NanosecondType](https://docs.rs/arrow/latest/arrow/datatypes/struct.Time64NanosecondType.html) * [datatypes::TimestampMicrosecondType](https://docs.rs/arrow/latest/arrow/datatypes/struct.TimestampMicrosecondType.html) * [datatypes::TimestampMillisecondType](https://docs.rs/arrow/latest/arrow/datatypes/struct.TimestampMillisecondType.html) * [datatypes::TimestampNanosecondType](https://docs.rs/arrow/latest/arrow/datatypes/struct.TimestampNanosecondType.html) * [datatypes::TimestampSecondType](https://docs.rs/arrow/latest/arrow/datatypes/struct.TimestampSecondType.html) * [datatypes::UInt16Type](https://docs.rs/arrow/latest/arrow/datatypes/struct.UInt16Type.html) * [datatypes::UInt32Type](https://docs.rs/arrow/latest/arrow/datatypes/struct.UInt32Type.html) * [datatypes::UInt64Type](https://docs.rs/arrow/latest/arrow/datatypes/struct.UInt64Type.html) * [datatypes::UInt8Type](https://docs.rs/arrow/latest/arrow/datatypes/struct.UInt8Type.html) * [datatypes::UnionFields](https://docs.rs/arrow/latest/arrow/datatypes/struct.UnionFields.html) * [datatypes::i256](https://docs.rs/arrow/latest/arrow/datatypes/struct.i256.html) * [ffi::FFI\_ArrowArray](https://docs.rs/arrow/latest/arrow/ffi/struct.FFI_ArrowArray.html) * [ffi::FFI\_ArrowSchema](https://docs.rs/arrow/latest/arrow/ffi/struct.FFI_ArrowSchema.html) * [ffi\_stream::ArrowArrayStreamReader](https://docs.rs/arrow/latest/arrow/ffi_stream/struct.ArrowArrayStreamReader.html) * [ffi\_stream::FFI\_ArrowArrayStream](https://docs.rs/arrow/latest/arrow/ffi_stream/struct.FFI_ArrowArrayStream.html) * [record\_batch::RecordBatch](https://docs.rs/arrow/latest/arrow/record_batch/struct.RecordBatch.html) * [record\_batch::RecordBatchIterator](https://docs.rs/arrow/latest/arrow/record_batch/struct.RecordBatchIterator.html) * [record\_batch::RecordBatchOptions](https://docs.rs/arrow/latest/arrow/record_batch/struct.RecordBatchOptions.html) * [tensor::Tensor](https://docs.rs/arrow/latest/arrow/tensor/struct.Tensor.html) * [util::bit\_chunk\_iterator::BitChunkIterator](https://docs.rs/arrow/latest/arrow/util/bit_chunk_iterator/struct.BitChunkIterator.html) * [util::bit\_chunk\_iterator::BitChunks](https://docs.rs/arrow/latest/arrow/util/bit_chunk_iterator/struct.BitChunks.html) * [util::bit\_chunk\_iterator::UnalignedBitChunk](https://docs.rs/arrow/latest/arrow/util/bit_chunk_iterator/struct.UnalignedBitChunk.html) * [util::bit\_iterator::BitIndexIterator](https://docs.rs/arrow/latest/arrow/util/bit_iterator/struct.BitIndexIterator.html) * [util::bit\_iterator::BitIndexU32Iterator](https://docs.rs/arrow/latest/arrow/util/bit_iterator/struct.BitIndexU32Iterator.html) * [util::bit\_iterator::BitIterator](https://docs.rs/arrow/latest/arrow/util/bit_iterator/struct.BitIterator.html) * [util::bit\_iterator::BitSliceIterator](https://docs.rs/arrow/latest/arrow/util/bit_iterator/struct.BitSliceIterator.html) * [util::display::ArrayFormatter](https://docs.rs/arrow/latest/arrow/util/display/struct.ArrayFormatter.html) * [util::display::FormatOptions](https://docs.rs/arrow/latest/arrow/util/display/struct.FormatOptions.html) * [util::display::ValueFormatter](https://docs.rs/arrow/latest/arrow/util/display/struct.ValueFormatter.html) * [util::string\_writer::StringWriter](https://docs.rs/arrow/latest/arrow/util/string_writer/struct.StringWriter.html) * [util::test\_util::BadIterator](https://docs.rs/arrow/latest/arrow/util/test_util/struct.BadIterator.html) ### Enums * [array::BufferSpec](https://docs.rs/arrow/latest/arrow/array/enum.BufferSpec.html) * [array::Capacities](https://docs.rs/arrow/latest/arrow/array/enum.Capacities.html) * [compute::DatePart](https://docs.rs/arrow/latest/arrow/compute/enum.DatePart.html) * [compute::kernels::cast\_utils::IntervalUnit](https://docs.rs/arrow/latest/arrow/compute/kernels/cast_utils/enum.IntervalUnit.html) * [compute::kernels::temporal::DatePart](https://docs.rs/arrow/latest/arrow/compute/kernels/temporal/enum.DatePart.html) * [datatypes::DataType](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html) * [datatypes::IntervalUnit](https://docs.rs/arrow/latest/arrow/datatypes/enum.IntervalUnit.html) * [datatypes::TimeUnit](https://docs.rs/arrow/latest/arrow/datatypes/enum.TimeUnit.html) * [datatypes::UnionMode](https://docs.rs/arrow/latest/arrow/datatypes/enum.UnionMode.html) * [error::ArrowError](https://docs.rs/arrow/latest/arrow/error/enum.ArrowError.html) * [util::display::DurationFormat](https://docs.rs/arrow/latest/arrow/util/display/enum.DurationFormat.html) * [util::display::FormatError](https://docs.rs/arrow/latest/arrow/util/display/enum.FormatError.html) ### Traits * [alloc::Allocation](https://docs.rs/arrow/latest/arrow/alloc/trait.Allocation.html) * [array::AnyDictionaryArray](https://docs.rs/arrow/latest/arrow/array/trait.AnyDictionaryArray.html) * [array::Array](https://docs.rs/arrow/latest/arrow/array/trait.Array.html) * [array::ArrayAccessor](https://docs.rs/arrow/latest/arrow/array/trait.ArrayAccessor.html) * [array::ArrayBuilder](https://docs.rs/arrow/latest/arrow/array/trait.ArrayBuilder.html) * [array::ArrowNativeTypeOp](https://docs.rs/arrow/latest/arrow/array/trait.ArrowNativeTypeOp.html) * [array::ArrowNumericType](https://docs.rs/arrow/latest/arrow/array/trait.ArrowNumericType.html) * [array::ArrowPrimitiveType](https://docs.rs/arrow/latest/arrow/array/trait.ArrowPrimitiveType.html) * [array::AsArray](https://docs.rs/arrow/latest/arrow/array/trait.AsArray.html) * [array::BinaryArrayType](https://docs.rs/arrow/latest/arrow/array/trait.BinaryArrayType.html) * [array::BinaryLikeArrayBuilder](https://docs.rs/arrow/latest/arrow/array/trait.BinaryLikeArrayBuilder.html) * [array::Datum](https://docs.rs/arrow/latest/arrow/array/trait.Datum.html) * [array::ListLikeArray](https://docs.rs/arrow/latest/arrow/array/trait.ListLikeArray.html) * [array::OffsetSizeTrait](https://docs.rs/arrow/latest/arrow/array/trait.OffsetSizeTrait.html) * [array::RecordBatchReader](https://docs.rs/arrow/latest/arrow/array/trait.RecordBatchReader.html) * [array::RecordBatchWriter](https://docs.rs/arrow/latest/arrow/array/trait.RecordBatchWriter.html) * [array::StringArrayType](https://docs.rs/arrow/latest/arrow/array/trait.StringArrayType.html) * [array::StringLikeArrayBuilder](https://docs.rs/arrow/latest/arrow/array/trait.StringLikeArrayBuilder.html) * [array::array::AnyDictionaryArray](https://docs.rs/arrow/latest/arrow/array/array/trait.AnyDictionaryArray.html) * [array::array::Array](https://docs.rs/arrow/latest/arrow/array/array/trait.Array.html) * [array::array::ArrayAccessor](https://docs.rs/arrow/latest/arrow/array/array/trait.ArrayAccessor.html) * [array::array::ArrowPrimitiveType](https://docs.rs/arrow/latest/arrow/array/array/trait.ArrowPrimitiveType.html) * [array::array::BinaryArrayType](https://docs.rs/arrow/latest/arrow/array/array/trait.BinaryArrayType.html) * [array::array::ListLikeArray](https://docs.rs/arrow/latest/arrow/array/array/trait.ListLikeArray.html) * [array::array::OffsetSizeTrait](https://docs.rs/arrow/latest/arrow/array/array/trait.OffsetSizeTrait.html) * [array::array::StringArrayType](https://docs.rs/arrow/latest/arrow/array/array/trait.StringArrayType.html) * [array::builder::ArrayBuilder](https://docs.rs/arrow/latest/arrow/array/builder/trait.ArrayBuilder.html) * [array::builder::BinaryLikeArrayBuilder](https://docs.rs/arrow/latest/arrow/array/builder/trait.BinaryLikeArrayBuilder.html) * [array::builder::StringLikeArrayBuilder](https://docs.rs/arrow/latest/arrow/array/builder/trait.StringLikeArrayBuilder.html) * [array::cast::AsArray](https://docs.rs/arrow/latest/arrow/array/cast/trait.AsArray.html) * [array::nonblocking::RecordBatchStream](https://docs.rs/arrow/latest/arrow/array/nonblocking/trait.RecordBatchStream.html) * [array::types::ArrowDictionaryKeyType](https://docs.rs/arrow/latest/arrow/array/types/trait.ArrowDictionaryKeyType.html) * [array::types::ArrowPrimitiveType](https://docs.rs/arrow/latest/arrow/array/types/trait.ArrowPrimitiveType.html) * [array::types::ArrowTemporalType](https://docs.rs/arrow/latest/arrow/array/types/trait.ArrowTemporalType.html) * [array::types::ArrowTimestampType](https://docs.rs/arrow/latest/arrow/array/types/trait.ArrowTimestampType.html) * [array::types::ByteArrayType](https://docs.rs/arrow/latest/arrow/array/types/trait.ByteArrayType.html) * [array::types::ByteViewType](https://docs.rs/arrow/latest/arrow/array/types/trait.ByteViewType.html) * [array::types::DecimalType](https://docs.rs/arrow/latest/arrow/array/types/trait.DecimalType.html) * [array::types::RunEndIndexType](https://docs.rs/arrow/latest/arrow/array/types/trait.RunEndIndexType.html) * [compute::DecimalCast](https://docs.rs/arrow/latest/arrow/compute/trait.DecimalCast.html) * [compute::kernels::cast::DecimalCast](https://docs.rs/arrow/latest/arrow/compute/kernels/cast/trait.DecimalCast.html) * [compute::kernels::cast\_utils::Parser](https://docs.rs/arrow/latest/arrow/compute/kernels/cast_utils/trait.Parser.html) * [compute::kernels::comparison::StringArrayType](https://docs.rs/arrow/latest/arrow/compute/kernels/comparison/trait.StringArrayType.html) * [compute::kernels::merge::MergeIndex](https://docs.rs/arrow/latest/arrow/compute/kernels/merge/trait.MergeIndex.html) * [datatypes::ArrowDictionaryKeyType](https://docs.rs/arrow/latest/arrow/datatypes/trait.ArrowDictionaryKeyType.html) * [datatypes::ArrowNativeType](https://docs.rs/arrow/latest/arrow/datatypes/trait.ArrowNativeType.html) * [datatypes::ArrowNativeTypeOp](https://docs.rs/arrow/latest/arrow/datatypes/trait.ArrowNativeTypeOp.html) * [datatypes::ArrowNumericType](https://docs.rs/arrow/latest/arrow/datatypes/trait.ArrowNumericType.html) * [datatypes::ArrowPrimitiveType](https://docs.rs/arrow/latest/arrow/datatypes/trait.ArrowPrimitiveType.html) * [datatypes::ArrowTemporalType](https://docs.rs/arrow/latest/arrow/datatypes/trait.ArrowTemporalType.html) * [datatypes::ArrowTimestampType](https://docs.rs/arrow/latest/arrow/datatypes/trait.ArrowTimestampType.html) * [datatypes::ByteArrayType](https://docs.rs/arrow/latest/arrow/datatypes/trait.ByteArrayType.html) * [datatypes::ByteViewType](https://docs.rs/arrow/latest/arrow/datatypes/trait.ByteViewType.html) * [datatypes::DecimalType](https://docs.rs/arrow/latest/arrow/datatypes/trait.DecimalType.html) * [datatypes::RunEndIndexType](https://docs.rs/arrow/latest/arrow/datatypes/trait.RunEndIndexType.html) * [datatypes::ToByteSlice](https://docs.rs/arrow/latest/arrow/datatypes/trait.ToByteSlice.html) * [record\_batch::RecordBatchReader](https://docs.rs/arrow/latest/arrow/record_batch/trait.RecordBatchReader.html) * [record\_batch::RecordBatchWriter](https://docs.rs/arrow/latest/arrow/record_batch/trait.RecordBatchWriter.html) * [util::data\_gen::RandomTemporalValue](https://docs.rs/arrow/latest/arrow/util/data_gen/trait.RandomTemporalValue.html) * [util::display::ArrayFormatterFactory](https://docs.rs/arrow/latest/arrow/util/display/trait.ArrayFormatterFactory.html) * [util::display::DisplayIndex](https://docs.rs/arrow/latest/arrow/util/display/trait.DisplayIndex.html) ### Macros * [array::create\_array](https://docs.rs/arrow/latest/arrow/array/macro.create_array.html) * [array::downcast\_dictionary\_array](https://docs.rs/arrow/latest/arrow/array/macro.downcast_dictionary_array.html) * [array::downcast\_integer](https://docs.rs/arrow/latest/arrow/array/macro.downcast_integer.html) * [array::downcast\_integer\_array](https://docs.rs/arrow/latest/arrow/array/macro.downcast_integer_array.html) * [array::downcast\_primitive](https://docs.rs/arrow/latest/arrow/array/macro.downcast_primitive.html) * [array::downcast\_primitive\_array](https://docs.rs/arrow/latest/arrow/array/macro.downcast_primitive_array.html) * [array::downcast\_run\_array](https://docs.rs/arrow/latest/arrow/array/macro.downcast_run_array.html) * [array::downcast\_run\_end\_index](https://docs.rs/arrow/latest/arrow/array/macro.downcast_run_end_index.html) * [array::downcast\_temporal](https://docs.rs/arrow/latest/arrow/array/macro.downcast_temporal.html) * [array::downcast\_temporal\_array](https://docs.rs/arrow/latest/arrow/array/macro.downcast_temporal_array.html) * [array::record\_batch](https://docs.rs/arrow/latest/arrow/array/macro.record_batch.html) * [downcast\_dictionary\_array](https://docs.rs/arrow/latest/arrow/macro.downcast_dictionary_array.html) * [downcast\_primitive\_array](https://docs.rs/arrow/latest/arrow/macro.downcast_primitive_array.html) ### Functions * [array::array::make\_array](https://docs.rs/arrow/latest/arrow/array/array/fn.make_array.html) * [array::array::new\_empty\_array](https://docs.rs/arrow/latest/arrow/array/array/fn.new_empty_array.html) * [array::array::new\_null\_array](https://docs.rs/arrow/latest/arrow/array/array/fn.new_null_array.html) * [array::as\_boolean\_array](https://docs.rs/arrow/latest/arrow/array/fn.as_boolean_array.html) * [array::as\_dictionary\_array](https://docs.rs/arrow/latest/arrow/array/fn.as_dictionary_array.html) * [array::as\_fixed\_size\_list\_array](https://docs.rs/arrow/latest/arrow/array/fn.as_fixed_size_list_array.html) * [array::as\_generic\_binary\_array](https://docs.rs/arrow/latest/arrow/array/fn.as_generic_binary_array.html) * [array::as\_generic\_list\_array](https://docs.rs/arrow/latest/arrow/array/fn.as_generic_list_array.html) * [array::as\_large\_list\_array](https://docs.rs/arrow/latest/arrow/array/fn.as_large_list_array.html) * [array::as\_largestring\_array](https://docs.rs/arrow/latest/arrow/array/fn.as_largestring_array.html) * [array::as\_list\_array](https://docs.rs/arrow/latest/arrow/array/fn.as_list_array.html) * [array::as\_map\_array](https://docs.rs/arrow/latest/arrow/array/fn.as_map_array.html) * [array::as\_null\_array](https://docs.rs/arrow/latest/arrow/array/fn.as_null_array.html) * [array::as\_primitive\_array](https://docs.rs/arrow/latest/arrow/array/fn.as_primitive_array.html) * [array::as\_run\_array](https://docs.rs/arrow/latest/arrow/array/fn.as_run_array.html) * [array::as\_string\_array](https://docs.rs/arrow/latest/arrow/array/fn.as_string_array.html) * [array::as\_struct\_array](https://docs.rs/arrow/latest/arrow/array/fn.as_struct_array.html) * [array::as\_union\_array](https://docs.rs/arrow/latest/arrow/array/fn.as_union_array.html) * [array::builder::make\_builder](https://docs.rs/arrow/latest/arrow/array/builder/fn.make_builder.html) * [array::builder::make\_view](https://docs.rs/arrow/latest/arrow/array/builder/fn.make_view.html) * [array::cast::as\_boolean\_array](https://docs.rs/arrow/latest/arrow/array/cast/fn.as_boolean_array.html) * [array::cast::as\_dictionary\_array](https://docs.rs/arrow/latest/arrow/array/cast/fn.as_dictionary_array.html) * [array::cast::as\_fixed\_size\_list\_array](https://docs.rs/arrow/latest/arrow/array/cast/fn.as_fixed_size_list_array.html) * [array::cast::as\_generic\_binary\_array](https://docs.rs/arrow/latest/arrow/array/cast/fn.as_generic_binary_array.html) * [array::cast::as\_generic\_list\_array](https://docs.rs/arrow/latest/arrow/array/cast/fn.as_generic_list_array.html) * [array::cast::as\_large\_list\_array](https://docs.rs/arrow/latest/arrow/array/cast/fn.as_large_list_array.html) * [array::cast::as\_largestring\_array](https://docs.rs/arrow/latest/arrow/array/cast/fn.as_largestring_array.html) * [array::cast::as\_list\_array](https://docs.rs/arrow/latest/arrow/array/cast/fn.as_list_array.html) * [array::cast::as\_map\_array](https://docs.rs/arrow/latest/arrow/array/cast/fn.as_map_array.html) * [array::cast::as\_null\_array](https://docs.rs/arrow/latest/arrow/array/cast/fn.as_null_array.html) * [array::cast::as\_primitive\_array](https://docs.rs/arrow/latest/arrow/array/cast/fn.as_primitive_array.html) * [array::cast::as\_run\_array](https://docs.rs/arrow/latest/arrow/array/cast/fn.as_run_array.html) * [array::cast::as\_string\_array](https://docs.rs/arrow/latest/arrow/array/cast/fn.as_string_array.html) * [array::cast::as\_struct\_array](https://docs.rs/arrow/latest/arrow/array/cast/fn.as_struct_array.html) * [array::cast::as\_union\_array](https://docs.rs/arrow/latest/arrow/array/cast/fn.as_union_array.html) * [array::cast::downcast\_array](https://docs.rs/arrow/latest/arrow/array/cast/fn.downcast_array.html) * [array::downcast\_array](https://docs.rs/arrow/latest/arrow/array/fn.downcast_array.html) * [array::export\_array\_into\_raw](https://docs.rs/arrow/latest/arrow/array/fn.export_array_into_raw.html) * [array::ffi::export\_array\_into\_raw](https://docs.rs/arrow/latest/arrow/array/ffi/fn.export_array_into_raw.html) * [array::ffi::from\_ffi](https://docs.rs/arrow/latest/arrow/array/ffi/fn.from_ffi.html) * [array::ffi::from\_ffi\_and\_data\_type](https://docs.rs/arrow/latest/arrow/array/ffi/fn.from_ffi_and_data_type.html) * [array::ffi::to\_ffi](https://docs.rs/arrow/latest/arrow/array/ffi/fn.to_ffi.html) * [array::layout](https://docs.rs/arrow/latest/arrow/array/fn.layout.html) * [array::make\_array](https://docs.rs/arrow/latest/arrow/array/fn.make_array.html) * [array::make\_builder](https://docs.rs/arrow/latest/arrow/array/fn.make_builder.html) * [array::make\_comparator](https://docs.rs/arrow/latest/arrow/array/fn.make_comparator.html) * [array::make\_view](https://docs.rs/arrow/latest/arrow/array/fn.make_view.html) * [array::new\_empty\_array](https://docs.rs/arrow/latest/arrow/array/fn.new_empty_array.html) * [array::new\_null\_array](https://docs.rs/arrow/latest/arrow/array/fn.new_null_array.html) * [array::temporal\_conversions::as\_date](https://docs.rs/arrow/latest/arrow/array/temporal_conversions/fn.as_date.html) * [array::temporal\_conversions::as\_datetime](https://docs.rs/arrow/latest/arrow/array/temporal_conversions/fn.as_datetime.html) * [array::temporal\_conversions::as\_datetime\_with\_timezone](https://docs.rs/arrow/latest/arrow/array/temporal_conversions/fn.as_datetime_with_timezone.html) * [array::temporal\_conversions::as\_duration](https://docs.rs/arrow/latest/arrow/array/temporal_conversions/fn.as_duration.html) * [array::temporal\_conversions::as\_time](https://docs.rs/arrow/latest/arrow/array/temporal_conversions/fn.as_time.html) * [array::temporal\_conversions::date32\_to\_datetime](https://docs.rs/arrow/latest/arrow/array/temporal_conversions/fn.date32_to_datetime.html) * [array::temporal\_conversions::date64\_to\_datetime](https://docs.rs/arrow/latest/arrow/array/temporal_conversions/fn.date64_to_datetime.html) * [array::temporal\_conversions::duration\_ms\_to\_duration](https://docs.rs/arrow/latest/arrow/array/temporal_conversions/fn.duration_ms_to_duration.html) * [array::temporal\_conversions::duration\_ns\_to\_duration](https://docs.rs/arrow/latest/arrow/array/temporal_conversions/fn.duration_ns_to_duration.html) * [array::temporal\_conversions::duration\_s\_to\_duration](https://docs.rs/arrow/latest/arrow/array/temporal_conversions/fn.duration_s_to_duration.html) * [array::temporal\_conversions::duration\_us\_to\_duration](https://docs.rs/arrow/latest/arrow/array/temporal_conversions/fn.duration_us_to_duration.html) * [array::temporal\_conversions::time32ms\_to\_time](https://docs.rs/arrow/latest/arrow/array/temporal_conversions/fn.time32ms_to_time.html) * [array::temporal\_conversions::time32s\_to\_time](https://docs.rs/arrow/latest/arrow/array/temporal_conversions/fn.time32s_to_time.html) * [array::temporal\_conversions::time64ns\_to\_time](https://docs.rs/arrow/latest/arrow/array/temporal_conversions/fn.time64ns_to_time.html) * [array::temporal\_conversions::time64us\_to\_time](https://docs.rs/arrow/latest/arrow/array/temporal_conversions/fn.time64us_to_time.html) * [array::temporal\_conversions::time\_to\_time32ms](https://docs.rs/arrow/latest/arrow/array/temporal_conversions/fn.time_to_time32ms.html) * [array::temporal\_conversions::time\_to\_time32s](https://docs.rs/arrow/latest/arrow/array/temporal_conversions/fn.time_to_time32s.html) * [array::temporal\_conversions::time\_to\_time64ns](https://docs.rs/arrow/latest/arrow/array/temporal_conversions/fn.time_to_time64ns.html) * [array::temporal\_conversions::time\_to\_time64us](https://docs.rs/arrow/latest/arrow/array/temporal_conversions/fn.time_to_time64us.html) * [array::temporal\_conversions::timestamp\_ms\_to\_datetime](https://docs.rs/arrow/latest/arrow/array/temporal_conversions/fn.timestamp_ms_to_datetime.html) * [array::temporal\_conversions::timestamp\_ns\_to\_datetime](https://docs.rs/arrow/latest/arrow/array/temporal_conversions/fn.timestamp_ns_to_datetime.html) * [array::temporal\_conversions::timestamp\_s\_to\_date](https://docs.rs/arrow/latest/arrow/array/temporal_conversions/fn.timestamp_s_to_date.html) * [array::temporal\_conversions::timestamp\_s\_to\_datetime](https://docs.rs/arrow/latest/arrow/array/temporal_conversions/fn.timestamp_s_to_datetime.html) * [array::temporal\_conversions::timestamp\_s\_to\_time](https://docs.rs/arrow/latest/arrow/array/temporal_conversions/fn.timestamp_s_to_time.html) * [array::temporal\_conversions::timestamp\_us\_to\_datetime](https://docs.rs/arrow/latest/arrow/array/temporal_conversions/fn.timestamp_us_to_datetime.html) * [array::temporal\_conversions::try\_duration\_ms\_to\_duration](https://docs.rs/arrow/latest/arrow/array/temporal_conversions/fn.try_duration_ms_to_duration.html) * [array::temporal\_conversions::try\_duration\_s\_to\_duration](https://docs.rs/arrow/latest/arrow/array/temporal_conversions/fn.try_duration_s_to_duration.html) * [array::types::validate\_decimal\_precision\_and\_scale](https://docs.rs/arrow/latest/arrow/array/types/fn.validate_decimal_precision_and_scale.html) * [buffer::bitwise\_bin\_op\_helper](https://docs.rs/arrow/latest/arrow/buffer/fn.bitwise_bin_op_helper.html) * [buffer::bitwise\_quaternary\_op\_helper](https://docs.rs/arrow/latest/arrow/buffer/fn.bitwise_quaternary_op_helper.html) * [buffer::bitwise\_unary\_op\_helper](https://docs.rs/arrow/latest/arrow/buffer/fn.bitwise_unary_op_helper.html) * [buffer::buffer\_bin\_and](https://docs.rs/arrow/latest/arrow/buffer/fn.buffer_bin_and.html) * [buffer::buffer\_bin\_and\_not](https://docs.rs/arrow/latest/arrow/buffer/fn.buffer_bin_and_not.html) * [buffer::buffer\_bin\_or](https://docs.rs/arrow/latest/arrow/buffer/fn.buffer_bin_or.html) * [buffer::buffer\_bin\_xor](https://docs.rs/arrow/latest/arrow/buffer/fn.buffer_bin_xor.html) * [buffer::buffer\_unary\_not](https://docs.rs/arrow/latest/arrow/buffer/fn.buffer_unary_not.html) * [compute::and](https://docs.rs/arrow/latest/arrow/compute/fn.and.html) * [compute::and\_kleene](https://docs.rs/arrow/latest/arrow/compute/fn.and_kleene.html) * [compute::and\_not](https://docs.rs/arrow/latest/arrow/compute/fn.and_not.html) * [compute::binary](https://docs.rs/arrow/latest/arrow/compute/fn.binary.html) * [compute::binary\_mut](https://docs.rs/arrow/latest/arrow/compute/fn.binary_mut.html) * [compute::bit\_and](https://docs.rs/arrow/latest/arrow/compute/fn.bit_and.html) * [compute::bit\_or](https://docs.rs/arrow/latest/arrow/compute/fn.bit_or.html) * [compute::bit\_xor](https://docs.rs/arrow/latest/arrow/compute/fn.bit_xor.html) * [compute::bool\_and](https://docs.rs/arrow/latest/arrow/compute/fn.bool_and.html) * [compute::bool\_or](https://docs.rs/arrow/latest/arrow/compute/fn.bool_or.html) * [compute::can\_cast\_types](https://docs.rs/arrow/latest/arrow/compute/fn.can_cast_types.html) * [compute::cast](https://docs.rs/arrow/latest/arrow/compute/fn.cast.html) * [compute::cast\_with\_options](https://docs.rs/arrow/latest/arrow/compute/fn.cast_with_options.html) * [compute::concat](https://docs.rs/arrow/latest/arrow/compute/fn.concat.html) * [compute::concat\_batches](https://docs.rs/arrow/latest/arrow/compute/fn.concat_batches.html) * [compute::date\_part](https://docs.rs/arrow/latest/arrow/compute/fn.date_part.html) * [compute::filter](https://docs.rs/arrow/latest/arrow/compute/fn.filter.html) * [compute::filter\_record\_batch](https://docs.rs/arrow/latest/arrow/compute/fn.filter_record_batch.html) * [compute::interleave](https://docs.rs/arrow/latest/arrow/compute/fn.interleave.html) * [compute::interleave\_record\_batch](https://docs.rs/arrow/latest/arrow/compute/fn.interleave_record_batch.html) * [compute::is\_not\_null](https://docs.rs/arrow/latest/arrow/compute/fn.is_not_null.html) * [compute::is\_null](https://docs.rs/arrow/latest/arrow/compute/fn.is_null.html) * [compute::kernels::aggregate::bit\_and](https://docs.rs/arrow/latest/arrow/compute/kernels/aggregate/fn.bit_and.html) * [compute::kernels::aggregate::bit\_or](https://docs.rs/arrow/latest/arrow/compute/kernels/aggregate/fn.bit_or.html) * [compute::kernels::aggregate::bit\_xor](https://docs.rs/arrow/latest/arrow/compute/kernels/aggregate/fn.bit_xor.html) * [compute::kernels::aggregate::bool\_and](https://docs.rs/arrow/latest/arrow/compute/kernels/aggregate/fn.bool_and.html) * [compute::kernels::aggregate::bool\_or](https://docs.rs/arrow/latest/arrow/compute/kernels/aggregate/fn.bool_or.html) * [compute::kernels::aggregate::max](https://docs.rs/arrow/latest/arrow/compute/kernels/aggregate/fn.max.html) * [compute::kernels::aggregate::max\_array](https://docs.rs/arrow/latest/arrow/compute/kernels/aggregate/fn.max_array.html) * [compute::kernels::aggregate::max\_binary](https://docs.rs/arrow/latest/arrow/compute/kernels/aggregate/fn.max_binary.html) * [compute::kernels::aggregate::max\_binary\_view](https://docs.rs/arrow/latest/arrow/compute/kernels/aggregate/fn.max_binary_view.html) * [compute::kernels::aggregate::max\_boolean](https://docs.rs/arrow/latest/arrow/compute/kernels/aggregate/fn.max_boolean.html) * [compute::kernels::aggregate::max\_fixed\_size\_binary](https://docs.rs/arrow/latest/arrow/compute/kernels/aggregate/fn.max_fixed_size_binary.html) * [compute::kernels::aggregate::max\_string](https://docs.rs/arrow/latest/arrow/compute/kernels/aggregate/fn.max_string.html) * [compute::kernels::aggregate::max\_string\_view](https://docs.rs/arrow/latest/arrow/compute/kernels/aggregate/fn.max_string_view.html) * [compute::kernels::aggregate::min](https://docs.rs/arrow/latest/arrow/compute/kernels/aggregate/fn.min.html) * [compute::kernels::aggregate::min\_array](https://docs.rs/arrow/latest/arrow/compute/kernels/aggregate/fn.min_array.html) * [compute::kernels::aggregate::min\_binary](https://docs.rs/arrow/latest/arrow/compute/kernels/aggregate/fn.min_binary.html) * [compute::kernels::aggregate::min\_binary\_view](https://docs.rs/arrow/latest/arrow/compute/kernels/aggregate/fn.min_binary_view.html) * [compute::kernels::aggregate::min\_boolean](https://docs.rs/arrow/latest/arrow/compute/kernels/aggregate/fn.min_boolean.html) * [compute::kernels::aggregate::min\_fixed\_size\_binary](https://docs.rs/arrow/latest/arrow/compute/kernels/aggregate/fn.min_fixed_size_binary.html) * [compute::kernels::aggregate::min\_string](https://docs.rs/arrow/latest/arrow/compute/kernels/aggregate/fn.min_string.html) * [compute::kernels::aggregate::min\_string\_view](https://docs.rs/arrow/latest/arrow/compute/kernels/aggregate/fn.min_string_view.html) * [compute::kernels::aggregate::sum](https://docs.rs/arrow/latest/arrow/compute/kernels/aggregate/fn.sum.html) * [compute::kernels::aggregate::sum\_array](https://docs.rs/arrow/latest/arrow/compute/kernels/aggregate/fn.sum_array.html) * [compute::kernels::aggregate::sum\_array\_checked](https://docs.rs/arrow/latest/arrow/compute/kernels/aggregate/fn.sum_array_checked.html) * [compute::kernels::aggregate::sum\_checked](https://docs.rs/arrow/latest/arrow/compute/kernels/aggregate/fn.sum_checked.html) * [compute::kernels::arity::binary](https://docs.rs/arrow/latest/arrow/compute/kernels/arity/fn.binary.html) * [compute::kernels::arity::binary\_mut](https://docs.rs/arrow/latest/arrow/compute/kernels/arity/fn.binary_mut.html) * [compute::kernels::arity::try\_binary](https://docs.rs/arrow/latest/arrow/compute/kernels/arity/fn.try_binary.html) * [compute::kernels::arity::try\_binary\_mut](https://docs.rs/arrow/latest/arrow/compute/kernels/arity/fn.try_binary_mut.html) * [compute::kernels::arity::try\_unary](https://docs.rs/arrow/latest/arrow/compute/kernels/arity/fn.try_unary.html) * [compute::kernels::arity::try\_unary\_mut](https://docs.rs/arrow/latest/arrow/compute/kernels/arity/fn.try_unary_mut.html) * [compute::kernels::arity::unary](https://docs.rs/arrow/latest/arrow/compute/kernels/arity/fn.unary.html) * [compute::kernels::arity::unary\_mut](https://docs.rs/arrow/latest/arrow/compute/kernels/arity/fn.unary_mut.html) * [compute::kernels::bitwise::bitwise\_and](https://docs.rs/arrow/latest/arrow/compute/kernels/bitwise/fn.bitwise_and.html) * [compute::kernels::bitwise::bitwise\_and\_not](https://docs.rs/arrow/latest/arrow/compute/kernels/bitwise/fn.bitwise_and_not.html) * [compute::kernels::bitwise::bitwise\_and\_scalar](https://docs.rs/arrow/latest/arrow/compute/kernels/bitwise/fn.bitwise_and_scalar.html) * [compute::kernels::bitwise::bitwise\_not](https://docs.rs/arrow/latest/arrow/compute/kernels/bitwise/fn.bitwise_not.html) * [compute::kernels::bitwise::bitwise\_or](https://docs.rs/arrow/latest/arrow/compute/kernels/bitwise/fn.bitwise_or.html) * [compute::kernels::bitwise::bitwise\_or\_scalar](https://docs.rs/arrow/latest/arrow/compute/kernels/bitwise/fn.bitwise_or_scalar.html) * [compute::kernels::bitwise::bitwise\_shift\_left](https://docs.rs/arrow/latest/arrow/compute/kernels/bitwise/fn.bitwise_shift_left.html) * [compute::kernels::bitwise::bitwise\_shift\_left\_scalar](https://docs.rs/arrow/latest/arrow/compute/kernels/bitwise/fn.bitwise_shift_left_scalar.html) * [compute::kernels::bitwise::bitwise\_shift\_right](https://docs.rs/arrow/latest/arrow/compute/kernels/bitwise/fn.bitwise_shift_right.html) * [compute::kernels::bitwise::bitwise\_shift\_right\_scalar](https://docs.rs/arrow/latest/arrow/compute/kernels/bitwise/fn.bitwise_shift_right_scalar.html) * [compute::kernels::bitwise::bitwise\_xor](https://docs.rs/arrow/latest/arrow/compute/kernels/bitwise/fn.bitwise_xor.html) * [compute::kernels::bitwise::bitwise\_xor\_scalar](https://docs.rs/arrow/latest/arrow/compute/kernels/bitwise/fn.bitwise_xor_scalar.html) * [compute::kernels::boolean::and](https://docs.rs/arrow/latest/arrow/compute/kernels/boolean/fn.and.html) * [compute::kernels::boolean::and\_kleene](https://docs.rs/arrow/latest/arrow/compute/kernels/boolean/fn.and_kleene.html) * [compute::kernels::boolean::and\_not](https://docs.rs/arrow/latest/arrow/compute/kernels/boolean/fn.and_not.html) * [compute::kernels::boolean::is\_not\_null](https://docs.rs/arrow/latest/arrow/compute/kernels/boolean/fn.is_not_null.html) * [compute::kernels::boolean::is\_null](https://docs.rs/arrow/latest/arrow/compute/kernels/boolean/fn.is_null.html) * [compute::kernels::boolean::not](https://docs.rs/arrow/latest/arrow/compute/kernels/boolean/fn.not.html) * [compute::kernels::boolean::or](https://docs.rs/arrow/latest/arrow/compute/kernels/boolean/fn.or.html) * [compute::kernels::boolean::or\_kleene](https://docs.rs/arrow/latest/arrow/compute/kernels/boolean/fn.or_kleene.html) * [compute::kernels::cast](https://docs.rs/arrow/latest/arrow/compute/kernels/fn.cast.html) * [compute::kernels::cast::can\_cast\_types](https://docs.rs/arrow/latest/arrow/compute/kernels/cast/fn.can_cast_types.html) * [compute::kernels::cast::cast](https://docs.rs/arrow/latest/arrow/compute/kernels/cast/fn.cast.html) * [compute::kernels::cast::cast\_with\_options](https://docs.rs/arrow/latest/arrow/compute/kernels/cast/fn.cast_with_options.html) * [compute::kernels::cast::rescale\_decimal](https://docs.rs/arrow/latest/arrow/compute/kernels/cast/fn.rescale_decimal.html) * [compute::kernels::cast\_utils::parse\_decimal](https://docs.rs/arrow/latest/arrow/compute/kernels/cast_utils/fn.parse_decimal.html) * [compute::kernels::cast\_utils::parse\_interval\_day\_time](https://docs.rs/arrow/latest/arrow/compute/kernels/cast_utils/fn.parse_interval_day_time.html) * [compute::kernels::cast\_utils::parse\_interval\_month\_day\_nano](https://docs.rs/arrow/latest/arrow/compute/kernels/cast_utils/fn.parse_interval_month_day_nano.html) * [compute::kernels::cast\_utils::parse\_interval\_month\_day\_nano\_config](https://docs.rs/arrow/latest/arrow/compute/kernels/cast_utils/fn.parse_interval_month_day_nano_config.html) * [compute::kernels::cast\_utils::parse\_interval\_year\_month](https://docs.rs/arrow/latest/arrow/compute/kernels/cast_utils/fn.parse_interval_year_month.html) * [compute::kernels::cast\_utils::string\_to\_datetime](https://docs.rs/arrow/latest/arrow/compute/kernels/cast_utils/fn.string_to_datetime.html) * [compute::kernels::cast\_utils::string\_to\_time\_nanoseconds](https://docs.rs/arrow/latest/arrow/compute/kernels/cast_utils/fn.string_to_time_nanoseconds.html) * [compute::kernels::cast\_utils::string\_to\_timestamp\_nanos](https://docs.rs/arrow/latest/arrow/compute/kernels/cast_utils/fn.string_to_timestamp_nanos.html) * [compute::kernels::cmp::compare\_byte\_view](https://docs.rs/arrow/latest/arrow/compute/kernels/cmp/fn.compare_byte_view.html) * [compute::kernels::cmp::distinct](https://docs.rs/arrow/latest/arrow/compute/kernels/cmp/fn.distinct.html) * [compute::kernels::cmp::eq](https://docs.rs/arrow/latest/arrow/compute/kernels/cmp/fn.eq.html) * [compute::kernels::cmp::gt](https://docs.rs/arrow/latest/arrow/compute/kernels/cmp/fn.gt.html) * [compute::kernels::cmp::gt\_eq](https://docs.rs/arrow/latest/arrow/compute/kernels/cmp/fn.gt_eq.html) * [compute::kernels::cmp::lt](https://docs.rs/arrow/latest/arrow/compute/kernels/cmp/fn.lt.html) * [compute::kernels::cmp::lt\_eq](https://docs.rs/arrow/latest/arrow/compute/kernels/cmp/fn.lt_eq.html) * [compute::kernels::cmp::neq](https://docs.rs/arrow/latest/arrow/compute/kernels/cmp/fn.neq.html) * [compute::kernels::cmp::not\_distinct](https://docs.rs/arrow/latest/arrow/compute/kernels/cmp/fn.not_distinct.html) * [compute::kernels::comparison::contains](https://docs.rs/arrow/latest/arrow/compute/kernels/comparison/fn.contains.html) * [compute::kernels::comparison::ends\_with](https://docs.rs/arrow/latest/arrow/compute/kernels/comparison/fn.ends_with.html) * [compute::kernels::comparison::ilike](https://docs.rs/arrow/latest/arrow/compute/kernels/comparison/fn.ilike.html) * [compute::kernels::comparison::in\_list](https://docs.rs/arrow/latest/arrow/compute/kernels/comparison/fn.in_list.html) * [compute::kernels::comparison::in\_list\_utf8](https://docs.rs/arrow/latest/arrow/compute/kernels/comparison/fn.in_list_utf8.html) * [compute::kernels::comparison::like](https://docs.rs/arrow/latest/arrow/compute/kernels/comparison/fn.like.html) * [compute::kernels::comparison::nilike](https://docs.rs/arrow/latest/arrow/compute/kernels/comparison/fn.nilike.html) * [compute::kernels::comparison::nlike](https://docs.rs/arrow/latest/arrow/compute/kernels/comparison/fn.nlike.html) * [compute::kernels::comparison::regexp\_is\_match](https://docs.rs/arrow/latest/arrow/compute/kernels/comparison/fn.regexp_is_match.html) * [compute::kernels::comparison::regexp\_is\_match\_scalar](https://docs.rs/arrow/latest/arrow/compute/kernels/comparison/fn.regexp_is_match_scalar.html) * [compute::kernels::comparison::starts\_with](https://docs.rs/arrow/latest/arrow/compute/kernels/comparison/fn.starts_with.html) * [compute::kernels::concat::concat](https://docs.rs/arrow/latest/arrow/compute/kernels/concat/fn.concat.html) * [compute::kernels::concat::concat\_batches](https://docs.rs/arrow/latest/arrow/compute/kernels/concat/fn.concat_batches.html) * [compute::kernels::concat\_elements::concat\_element\_binary](https://docs.rs/arrow/latest/arrow/compute/kernels/concat_elements/fn.concat_element_binary.html) * [compute::kernels::concat\_elements::concat\_elements\_bytes](https://docs.rs/arrow/latest/arrow/compute/kernels/concat_elements/fn.concat_elements_bytes.html) * [compute::kernels::concat\_elements::concat\_elements\_dyn](https://docs.rs/arrow/latest/arrow/compute/kernels/concat_elements/fn.concat_elements_dyn.html) * [compute::kernels::concat\_elements::concat\_elements\_utf8](https://docs.rs/arrow/latest/arrow/compute/kernels/concat_elements/fn.concat_elements_utf8.html) * [compute::kernels::concat\_elements::concat\_elements\_utf8\_many](https://docs.rs/arrow/latest/arrow/compute/kernels/concat_elements/fn.concat_elements_utf8_many.html) * [compute::kernels::filter::filter](https://docs.rs/arrow/latest/arrow/compute/kernels/filter/fn.filter.html) * [compute::kernels::filter::filter\_record\_batch](https://docs.rs/arrow/latest/arrow/compute/kernels/filter/fn.filter_record_batch.html) * [compute::kernels::filter::prep\_null\_mask\_filter](https://docs.rs/arrow/latest/arrow/compute/kernels/filter/fn.prep_null_mask_filter.html) * [compute::kernels::interleave::interleave](https://docs.rs/arrow/latest/arrow/compute/kernels/interleave/fn.interleave.html) * [compute::kernels::interleave::interleave\_record\_batch](https://docs.rs/arrow/latest/arrow/compute/kernels/interleave/fn.interleave_record_batch.html) * [compute::kernels::length::bit\_length](https://docs.rs/arrow/latest/arrow/compute/kernels/length/fn.bit_length.html) * [compute::kernels::length::length](https://docs.rs/arrow/latest/arrow/compute/kernels/length/fn.length.html) * [compute::kernels::merge::merge](https://docs.rs/arrow/latest/arrow/compute/kernels/merge/fn.merge.html) * [compute::kernels::merge::merge\_n](https://docs.rs/arrow/latest/arrow/compute/kernels/merge/fn.merge_n.html) * [compute::kernels::nullif::nullif](https://docs.rs/arrow/latest/arrow/compute/kernels/nullif/fn.nullif.html) * [compute::kernels::numeric::add](https://docs.rs/arrow/latest/arrow/compute/kernels/numeric/fn.add.html) * [compute::kernels::numeric::add\_wrapping](https://docs.rs/arrow/latest/arrow/compute/kernels/numeric/fn.add_wrapping.html) * [compute::kernels::numeric::div](https://docs.rs/arrow/latest/arrow/compute/kernels/numeric/fn.div.html) * [compute::kernels::numeric::mul](https://docs.rs/arrow/latest/arrow/compute/kernels/numeric/fn.mul.html) * [compute::kernels::numeric::mul\_wrapping](https://docs.rs/arrow/latest/arrow/compute/kernels/numeric/fn.mul_wrapping.html) * [compute::kernels::numeric::neg](https://docs.rs/arrow/latest/arrow/compute/kernels/numeric/fn.neg.html) * [compute::kernels::numeric::neg\_wrapping](https://docs.rs/arrow/latest/arrow/compute/kernels/numeric/fn.neg_wrapping.html) * [compute::kernels::numeric::rem](https://docs.rs/arrow/latest/arrow/compute/kernels/numeric/fn.rem.html) * [compute::kernels::numeric::sub](https://docs.rs/arrow/latest/arrow/compute/kernels/numeric/fn.sub.html) * [compute::kernels::numeric::sub\_wrapping](https://docs.rs/arrow/latest/arrow/compute/kernels/numeric/fn.sub_wrapping.html) * [compute::kernels::partition::partition](https://docs.rs/arrow/latest/arrow/compute/kernels/partition/fn.partition.html) * [compute::kernels::rank::rank](https://docs.rs/arrow/latest/arrow/compute/kernels/rank/fn.rank.html) * [compute::kernels::regexp::regexp\_is\_match](https://docs.rs/arrow/latest/arrow/compute/kernels/regexp/fn.regexp_is_match.html) * [compute::kernels::regexp::regexp\_is\_match\_scalar](https://docs.rs/arrow/latest/arrow/compute/kernels/regexp/fn.regexp_is_match_scalar.html) * [compute::kernels::regexp::regexp\_match](https://docs.rs/arrow/latest/arrow/compute/kernels/regexp/fn.regexp_match.html) * [compute::kernels::sort::lexsort](https://docs.rs/arrow/latest/arrow/compute/kernels/sort/fn.lexsort.html) * [compute::kernels::sort::lexsort\_to\_indices](https://docs.rs/arrow/latest/arrow/compute/kernels/sort/fn.lexsort_to_indices.html) * [compute::kernels::sort::partial\_sort](https://docs.rs/arrow/latest/arrow/compute/kernels/sort/fn.partial_sort.html) * [compute::kernels::sort::partition\_validity](https://docs.rs/arrow/latest/arrow/compute/kernels/sort/fn.partition_validity.html) * [compute::kernels::sort::sort](https://docs.rs/arrow/latest/arrow/compute/kernels/sort/fn.sort.html) * [compute::kernels::sort::sort\_limit](https://docs.rs/arrow/latest/arrow/compute/kernels/sort/fn.sort_limit.html) * [compute::kernels::sort::sort\_to\_indices](https://docs.rs/arrow/latest/arrow/compute/kernels/sort/fn.sort_to_indices.html) * [compute::kernels::substring::substring](https://docs.rs/arrow/latest/arrow/compute/kernels/substring/fn.substring.html) * [compute::kernels::substring::substring\_by\_char](https://docs.rs/arrow/latest/arrow/compute/kernels/substring/fn.substring_by_char.html) * [compute::kernels::take::take](https://docs.rs/arrow/latest/arrow/compute/kernels/take/fn.take.html) * [compute::kernels::take::take\_arrays](https://docs.rs/arrow/latest/arrow/compute/kernels/take/fn.take_arrays.html) * [compute::kernels::take::take\_record\_batch](https://docs.rs/arrow/latest/arrow/compute/kernels/take/fn.take_record_batch.html) * [compute::kernels::temporal::date\_part](https://docs.rs/arrow/latest/arrow/compute/kernels/temporal/fn.date_part.html) * [compute::kernels::union\_extract::union\_extract](https://docs.rs/arrow/latest/arrow/compute/kernels/union_extract/fn.union_extract.html) * [compute::kernels::window::shift](https://docs.rs/arrow/latest/arrow/compute/kernels/window/fn.shift.html) * [compute::kernels::zip::zip](https://docs.rs/arrow/latest/arrow/compute/kernels/zip/fn.zip.html) * [compute::lexsort](https://docs.rs/arrow/latest/arrow/compute/fn.lexsort.html) * [compute::lexsort\_to\_indices](https://docs.rs/arrow/latest/arrow/compute/fn.lexsort_to_indices.html) * [compute::max](https://docs.rs/arrow/latest/arrow/compute/fn.max.html) * [compute::max\_array](https://docs.rs/arrow/latest/arrow/compute/fn.max_array.html) * [compute::max\_binary](https://docs.rs/arrow/latest/arrow/compute/fn.max_binary.html) * [compute::max\_binary\_view](https://docs.rs/arrow/latest/arrow/compute/fn.max_binary_view.html) * [compute::max\_boolean](https://docs.rs/arrow/latest/arrow/compute/fn.max_boolean.html) * [compute::max\_fixed\_size\_binary](https://docs.rs/arrow/latest/arrow/compute/fn.max_fixed_size_binary.html) * [compute::max\_string](https://docs.rs/arrow/latest/arrow/compute/fn.max_string.html) * [compute::max\_string\_view](https://docs.rs/arrow/latest/arrow/compute/fn.max_string_view.html) * [compute::min](https://docs.rs/arrow/latest/arrow/compute/fn.min.html) * [compute::min\_array](https://docs.rs/arrow/latest/arrow/compute/fn.min_array.html) * [compute::min\_binary](https://docs.rs/arrow/latest/arrow/compute/fn.min_binary.html) * [compute::min\_binary\_view](https://docs.rs/arrow/latest/arrow/compute/fn.min_binary_view.html) * [compute::min\_boolean](https://docs.rs/arrow/latest/arrow/compute/fn.min_boolean.html) * [compute::min\_fixed\_size\_binary](https://docs.rs/arrow/latest/arrow/compute/fn.min_fixed_size_binary.html) * [compute::min\_string](https://docs.rs/arrow/latest/arrow/compute/fn.min_string.html) * [compute::min\_string\_view](https://docs.rs/arrow/latest/arrow/compute/fn.min_string_view.html) * [compute::multiply\_fixed\_point](https://docs.rs/arrow/latest/arrow/compute/fn.multiply_fixed_point.html) * [compute::multiply\_fixed\_point\_checked](https://docs.rs/arrow/latest/arrow/compute/fn.multiply_fixed_point_checked.html) * [compute::multiply\_fixed\_point\_dyn](https://docs.rs/arrow/latest/arrow/compute/fn.multiply_fixed_point_dyn.html) * [compute::not](https://docs.rs/arrow/latest/arrow/compute/fn.not.html) * [compute::nullif](https://docs.rs/arrow/latest/arrow/compute/fn.nullif.html) * [compute::or](https://docs.rs/arrow/latest/arrow/compute/fn.or.html) * [compute::or\_kleene](https://docs.rs/arrow/latest/arrow/compute/fn.or_kleene.html) * [compute::partial\_sort](https://docs.rs/arrow/latest/arrow/compute/fn.partial_sort.html) * [compute::partition](https://docs.rs/arrow/latest/arrow/compute/fn.partition.html) * [compute::partition\_validity](https://docs.rs/arrow/latest/arrow/compute/fn.partition_validity.html) * [compute::prep\_null\_mask\_filter](https://docs.rs/arrow/latest/arrow/compute/fn.prep_null_mask_filter.html) * [compute::rank](https://docs.rs/arrow/latest/arrow/compute/fn.rank.html) * [compute::regexp\_is\_match](https://docs.rs/arrow/latest/arrow/compute/fn.regexp_is_match.html) * [compute::regexp\_is\_match\_scalar](https://docs.rs/arrow/latest/arrow/compute/fn.regexp_is_match_scalar.html) * [compute::regexp\_match](https://docs.rs/arrow/latest/arrow/compute/fn.regexp_match.html) * [compute::rescale\_decimal](https://docs.rs/arrow/latest/arrow/compute/fn.rescale_decimal.html) * [compute::shift](https://docs.rs/arrow/latest/arrow/compute/fn.shift.html) * [compute::sort](https://docs.rs/arrow/latest/arrow/compute/fn.sort.html) * [compute::sort\_limit](https://docs.rs/arrow/latest/arrow/compute/fn.sort_limit.html) * [compute::sort\_to\_indices](https://docs.rs/arrow/latest/arrow/compute/fn.sort_to_indices.html) * [compute::sum](https://docs.rs/arrow/latest/arrow/compute/fn.sum.html) * [compute::sum\_array](https://docs.rs/arrow/latest/arrow/compute/fn.sum_array.html) * [compute::sum\_array\_checked](https://docs.rs/arrow/latest/arrow/compute/fn.sum_array_checked.html) * [compute::sum\_checked](https://docs.rs/arrow/latest/arrow/compute/fn.sum_checked.html) * [compute::take](https://docs.rs/arrow/latest/arrow/compute/fn.take.html) * [compute::take\_arrays](https://docs.rs/arrow/latest/arrow/compute/fn.take_arrays.html) * [compute::take\_record\_batch](https://docs.rs/arrow/latest/arrow/compute/fn.take_record_batch.html) * [compute::try\_binary](https://docs.rs/arrow/latest/arrow/compute/fn.try_binary.html) * [compute::try\_binary\_mut](https://docs.rs/arrow/latest/arrow/compute/fn.try_binary_mut.html) * [compute::try\_unary](https://docs.rs/arrow/latest/arrow/compute/fn.try_unary.html) * [compute::try\_unary\_mut](https://docs.rs/arrow/latest/arrow/compute/fn.try_unary_mut.html) * [compute::unary](https://docs.rs/arrow/latest/arrow/compute/fn.unary.html) * [compute::unary\_mut](https://docs.rs/arrow/latest/arrow/compute/fn.unary_mut.html) * [compute::union\_extract](https://docs.rs/arrow/latest/arrow/compute/fn.union_extract.html) * [datatypes::format\_decimal\_str](https://docs.rs/arrow/latest/arrow/datatypes/fn.format_decimal_str.html) * [datatypes::is\_validate\_decimal256\_precision](https://docs.rs/arrow/latest/arrow/datatypes/fn.is_validate_decimal256_precision.html) * [datatypes::is\_validate\_decimal32\_precision](https://docs.rs/arrow/latest/arrow/datatypes/fn.is_validate_decimal32_precision.html) * [datatypes::is\_validate\_decimal64\_precision](https://docs.rs/arrow/latest/arrow/datatypes/fn.is_validate_decimal64_precision.html) * [datatypes::is\_validate\_decimal\_precision](https://docs.rs/arrow/latest/arrow/datatypes/fn.is_validate_decimal_precision.html) * [datatypes::validate\_decimal256\_precision](https://docs.rs/arrow/latest/arrow/datatypes/fn.validate_decimal256_precision.html) * [datatypes::validate\_decimal32\_precision](https://docs.rs/arrow/latest/arrow/datatypes/fn.validate_decimal32_precision.html) * [datatypes::validate\_decimal64\_precision](https://docs.rs/arrow/latest/arrow/datatypes/fn.validate_decimal64_precision.html) * [datatypes::validate\_decimal\_precision](https://docs.rs/arrow/latest/arrow/datatypes/fn.validate_decimal_precision.html) * [datatypes::validate\_decimal\_precision\_and\_scale](https://docs.rs/arrow/latest/arrow/datatypes/fn.validate_decimal_precision_and_scale.html) * [ffi::export\_array\_into\_raw](https://docs.rs/arrow/latest/arrow/ffi/fn.export_array_into_raw.html) * [ffi::from\_ffi](https://docs.rs/arrow/latest/arrow/ffi/fn.from_ffi.html) * [ffi::from\_ffi\_and\_data\_type](https://docs.rs/arrow/latest/arrow/ffi/fn.from_ffi_and_data_type.html) * [ffi::to\_ffi](https://docs.rs/arrow/latest/arrow/ffi/fn.to_ffi.html) * [temporal\_conversions::as\_date](https://docs.rs/arrow/latest/arrow/temporal_conversions/fn.as_date.html) * [temporal\_conversions::as\_datetime](https://docs.rs/arrow/latest/arrow/temporal_conversions/fn.as_datetime.html) * [temporal\_conversions::as\_datetime\_with\_timezone](https://docs.rs/arrow/latest/arrow/temporal_conversions/fn.as_datetime_with_timezone.html) * [temporal\_conversions::as\_duration](https://docs.rs/arrow/latest/arrow/temporal_conversions/fn.as_duration.html) * [temporal\_conversions::as\_time](https://docs.rs/arrow/latest/arrow/temporal_conversions/fn.as_time.html) * [temporal\_conversions::date32\_to\_datetime](https://docs.rs/arrow/latest/arrow/temporal_conversions/fn.date32_to_datetime.html) * [temporal\_conversions::date64\_to\_datetime](https://docs.rs/arrow/latest/arrow/temporal_conversions/fn.date64_to_datetime.html) * [temporal\_conversions::duration\_ms\_to\_duration](https://docs.rs/arrow/latest/arrow/temporal_conversions/fn.duration_ms_to_duration.html) * [temporal\_conversions::duration\_ns\_to\_duration](https://docs.rs/arrow/latest/arrow/temporal_conversions/fn.duration_ns_to_duration.html) * [temporal\_conversions::duration\_s\_to\_duration](https://docs.rs/arrow/latest/arrow/temporal_conversions/fn.duration_s_to_duration.html) * [temporal\_conversions::duration\_us\_to\_duration](https://docs.rs/arrow/latest/arrow/temporal_conversions/fn.duration_us_to_duration.html) * [temporal\_conversions::time32ms\_to\_time](https://docs.rs/arrow/latest/arrow/temporal_conversions/fn.time32ms_to_time.html) * [temporal\_conversions::time32s\_to\_time](https://docs.rs/arrow/latest/arrow/temporal_conversions/fn.time32s_to_time.html) * [temporal\_conversions::time64ns\_to\_time](https://docs.rs/arrow/latest/arrow/temporal_conversions/fn.time64ns_to_time.html) * [temporal\_conversions::time64us\_to\_time](https://docs.rs/arrow/latest/arrow/temporal_conversions/fn.time64us_to_time.html) * [temporal\_conversions::time\_to\_time32ms](https://docs.rs/arrow/latest/arrow/temporal_conversions/fn.time_to_time32ms.html) * [temporal\_conversions::time\_to\_time32s](https://docs.rs/arrow/latest/arrow/temporal_conversions/fn.time_to_time32s.html) * [temporal\_conversions::time\_to\_time64ns](https://docs.rs/arrow/latest/arrow/temporal_conversions/fn.time_to_time64ns.html) * [temporal\_conversions::time\_to\_time64us](https://docs.rs/arrow/latest/arrow/temporal_conversions/fn.time_to_time64us.html) * [temporal\_conversions::timestamp\_ms\_to\_datetime](https://docs.rs/arrow/latest/arrow/temporal_conversions/fn.timestamp_ms_to_datetime.html) * [temporal\_conversions::timestamp\_ns\_to\_datetime](https://docs.rs/arrow/latest/arrow/temporal_conversions/fn.timestamp_ns_to_datetime.html) * [temporal\_conversions::timestamp\_s\_to\_date](https://docs.rs/arrow/latest/arrow/temporal_conversions/fn.timestamp_s_to_date.html) * [temporal\_conversions::timestamp\_s\_to\_datetime](https://docs.rs/arrow/latest/arrow/temporal_conversions/fn.timestamp_s_to_datetime.html) * [temporal\_conversions::timestamp\_s\_to\_time](https://docs.rs/arrow/latest/arrow/temporal_conversions/fn.timestamp_s_to_time.html) * [temporal\_conversions::timestamp\_us\_to\_datetime](https://docs.rs/arrow/latest/arrow/temporal_conversions/fn.timestamp_us_to_datetime.html) * [temporal\_conversions::try\_duration\_ms\_to\_duration](https://docs.rs/arrow/latest/arrow/temporal_conversions/fn.try_duration_ms_to_duration.html) * [temporal\_conversions::try\_duration\_s\_to\_duration](https://docs.rs/arrow/latest/arrow/temporal_conversions/fn.try_duration_s_to_duration.html) * [util::bench\_util::create\_binary\_array](https://docs.rs/arrow/latest/arrow/util/bench_util/fn.create_binary_array.html) * [util::bench\_util::create\_binary\_array\_with\_len\_range\_and\_prefix\_and\_seed](https://docs.rs/arrow/latest/arrow/util/bench_util/fn.create_binary_array_with_len_range_and_prefix_and_seed.html) * [util::bench\_util::create\_binary\_array\_with\_seed](https://docs.rs/arrow/latest/arrow/util/bench_util/fn.create_binary_array_with_seed.html) * [util::bench\_util::create\_boolean\_array](https://docs.rs/arrow/latest/arrow/util/bench_util/fn.create_boolean_array.html) * [util::bench\_util::create\_boolean\_array\_with\_seed](https://docs.rs/arrow/latest/arrow/util/bench_util/fn.create_boolean_array_with_seed.html) * [util::bench\_util::create\_dict\_from\_values](https://docs.rs/arrow/latest/arrow/util/bench_util/fn.create_dict_from_values.html) * [util::bench\_util::create\_f16\_array](https://docs.rs/arrow/latest/arrow/util/bench_util/fn.create_f16_array.html) * [util::bench\_util::create\_f32\_array](https://docs.rs/arrow/latest/arrow/util/bench_util/fn.create_f32_array.html) * [util::bench\_util::create\_f64\_array](https://docs.rs/arrow/latest/arrow/util/bench_util/fn.create_f64_array.html) * [util::bench\_util::create\_f64\_array\_with\_seed](https://docs.rs/arrow/latest/arrow/util/bench_util/fn.create_f64_array_with_seed.html) * [util::bench\_util::create\_fsb\_array](https://docs.rs/arrow/latest/arrow/util/bench_util/fn.create_fsb_array.html) * [util::bench\_util::create\_longer\_string\_array\_with\_same\_prefix](https://docs.rs/arrow/latest/arrow/util/bench_util/fn.create_longer_string_array_with_same_prefix.html) * [util::bench\_util::create\_longer\_string\_view\_array\_with\_same\_prefix](https://docs.rs/arrow/latest/arrow/util/bench_util/fn.create_longer_string_view_array_with_same_prefix.html) * [util::bench\_util::create\_month\_day\_nano\_array\_with\_seed](https://docs.rs/arrow/latest/arrow/util/bench_util/fn.create_month_day_nano_array_with_seed.html) * [util::bench\_util::create\_primitive\_array](https://docs.rs/arrow/latest/arrow/util/bench_util/fn.create_primitive_array.html) * [util::bench\_util::create\_primitive\_array\_with\_seed](https://docs.rs/arrow/latest/arrow/util/bench_util/fn.create_primitive_array_with_seed.html) * [util::bench\_util::create\_primitive\_list\_array\_with\_seed](https://docs.rs/arrow/latest/arrow/util/bench_util/fn.create_primitive_list_array_with_seed.html) * [util::bench\_util::create\_primitive\_run\_array](https://docs.rs/arrow/latest/arrow/util/bench_util/fn.create_primitive_run_array.html) * [util::bench\_util::create\_sparse\_dict\_from\_values](https://docs.rs/arrow/latest/arrow/util/bench_util/fn.create_sparse_dict_from_values.html) * [util::bench\_util::create\_string\_array](https://docs.rs/arrow/latest/arrow/util/bench_util/fn.create_string_array.html) * [util::bench\_util::create\_string\_array\_for\_runs](https://docs.rs/arrow/latest/arrow/util/bench_util/fn.create_string_array_for_runs.html) * [util::bench\_util::create\_string\_array\_with\_len](https://docs.rs/arrow/latest/arrow/util/bench_util/fn.create_string_array_with_len.html) * [util::bench\_util::create\_string\_array\_with\_len\_range\_and\_prefix\_and\_seed](https://docs.rs/arrow/latest/arrow/util/bench_util/fn.create_string_array_with_len_range_and_prefix_and_seed.html) * [util::bench\_util::create\_string\_array\_with\_max\_len](https://docs.rs/arrow/latest/arrow/util/bench_util/fn.create_string_array_with_max_len.html) * [util::bench\_util::create\_string\_dict\_array](https://docs.rs/arrow/latest/arrow/util/bench_util/fn.create_string_dict_array.html) * [util::bench\_util::create\_string\_view\_array](https://docs.rs/arrow/latest/arrow/util/bench_util/fn.create_string_view_array.html) * [util::bench\_util::create\_string\_view\_array\_with\_fixed\_len](https://docs.rs/arrow/latest/arrow/util/bench_util/fn.create_string_view_array_with_fixed_len.html) * [util::bench\_util::create\_string\_view\_array\_with\_len](https://docs.rs/arrow/latest/arrow/util/bench_util/fn.create_string_view_array_with_len.html) * [util::bench\_util::create\_string\_view\_array\_with\_len\_range\_and\_seed](https://docs.rs/arrow/latest/arrow/util/bench_util/fn.create_string_view_array_with_len_range_and_seed.html) * [util::bench\_util::create\_string\_view\_array\_with\_max\_len](https://docs.rs/arrow/latest/arrow/util/bench_util/fn.create_string_view_array_with_max_len.html) * [util::bit\_iterator::try\_for\_each\_valid\_idx](https://docs.rs/arrow/latest/arrow/util/bit_iterator/fn.try_for_each_valid_idx.html) * [util::bit\_mask::set\_bits](https://docs.rs/arrow/latest/arrow/util/bit_mask/fn.set_bits.html) * [util::bit\_util::apply\_bitwise\_binary\_op](https://docs.rs/arrow/latest/arrow/util/bit_util/fn.apply_bitwise_binary_op.html) * [util::bit\_util::apply\_bitwise\_unary\_op](https://docs.rs/arrow/latest/arrow/util/bit_util/fn.apply_bitwise_unary_op.html) * [util::bit\_util::ceil](https://docs.rs/arrow/latest/arrow/util/bit_util/fn.ceil.html) * [util::bit\_util::get\_bit](https://docs.rs/arrow/latest/arrow/util/bit_util/fn.get_bit.html) * [util::bit\_util::get\_bit\_raw](https://docs.rs/arrow/latest/arrow/util/bit_util/fn.get_bit_raw.html) * [util::bit\_util::round\_upto\_multiple\_of\_64](https://docs.rs/arrow/latest/arrow/util/bit_util/fn.round_upto_multiple_of_64.html) * [util::bit\_util::round\_upto\_power\_of\_2](https://docs.rs/arrow/latest/arrow/util/bit_util/fn.round_upto_power_of_2.html) * [util::bit\_util::set\_bit](https://docs.rs/arrow/latest/arrow/util/bit_util/fn.set_bit.html) * [util::bit\_util::set\_bit\_raw](https://docs.rs/arrow/latest/arrow/util/bit_util/fn.set_bit_raw.html) * [util::bit\_util::unset\_bit](https://docs.rs/arrow/latest/arrow/util/bit_util/fn.unset_bit.html) * [util::bit\_util::unset\_bit\_raw](https://docs.rs/arrow/latest/arrow/util/bit_util/fn.unset_bit_raw.html) * [util::data\_gen::create\_random\_array](https://docs.rs/arrow/latest/arrow/util/data_gen/fn.create_random_array.html) * [util::data\_gen::create\_random\_batch](https://docs.rs/arrow/latest/arrow/util/data_gen/fn.create_random_batch.html) * [util::display::array\_value\_to\_string](https://docs.rs/arrow/latest/arrow/util/display/fn.array_value_to_string.html) * [util::display::lexical\_to\_string](https://docs.rs/arrow/latest/arrow/util/display/fn.lexical_to_string.html) * [util::pretty::pretty\_format\_batches](https://docs.rs/arrow/latest/arrow/util/pretty/fn.pretty_format_batches.html) * [util::pretty::pretty\_format\_batches\_with\_options](https://docs.rs/arrow/latest/arrow/util/pretty/fn.pretty_format_batches_with_options.html) * [util::pretty::pretty\_format\_batches\_with\_schema](https://docs.rs/arrow/latest/arrow/util/pretty/fn.pretty_format_batches_with_schema.html) * [util::pretty::pretty\_format\_columns](https://docs.rs/arrow/latest/arrow/util/pretty/fn.pretty_format_columns.html) * [util::pretty::pretty\_format\_columns\_with\_options](https://docs.rs/arrow/latest/arrow/util/pretty/fn.pretty_format_columns_with_options.html) * [util::pretty::print\_batches](https://docs.rs/arrow/latest/arrow/util/pretty/fn.print_batches.html) * [util::pretty::print\_columns](https://docs.rs/arrow/latest/arrow/util/pretty/fn.print_columns.html) * [util::test\_util::arrow\_test\_data](https://docs.rs/arrow/latest/arrow/util/test_util/fn.arrow_test_data.html) * [util::test\_util::get\_temp\_file](https://docs.rs/arrow/latest/arrow/util/test_util/fn.get_temp_file.html) * [util::test\_util::parquet\_test\_data](https://docs.rs/arrow/latest/arrow/util/test_util/fn.parquet_test_data.html) * [util::test\_util::random\_bytes](https://docs.rs/arrow/latest/arrow/util/test_util/fn.random_bytes.html) * [util::test\_util::seedable\_rng](https://docs.rs/arrow/latest/arrow/util/test_util/fn.seedable_rng.html) ### Type Aliases * [array::ArrayDataRef](https://docs.rs/arrow/latest/arrow/array/type.ArrayDataRef.html) * [array::ArrayRef](https://docs.rs/arrow/latest/arrow/array/type.ArrayRef.html) * [array::BinaryArray](https://docs.rs/arrow/latest/arrow/array/type.BinaryArray.html) * [array::BinaryBuilder](https://docs.rs/arrow/latest/arrow/array/type.BinaryBuilder.html) * [array::BinaryDictionaryBuilder](https://docs.rs/arrow/latest/arrow/array/type.BinaryDictionaryBuilder.html) * [array::BinaryRunBuilder](https://docs.rs/arrow/latest/arrow/array/type.BinaryRunBuilder.html) * [array::BinaryViewArray](https://docs.rs/arrow/latest/arrow/array/type.BinaryViewArray.html) * [array::BinaryViewBuilder](https://docs.rs/arrow/latest/arrow/array/type.BinaryViewBuilder.html) * [array::BooleanIter](https://docs.rs/arrow/latest/arrow/array/type.BooleanIter.html) * [array::Date32Array](https://docs.rs/arrow/latest/arrow/array/type.Date32Array.html) * [array::Date32BufferBuilder](https://docs.rs/arrow/latest/arrow/array/type.Date32BufferBuilder.html) * [array::Date32Builder](https://docs.rs/arrow/latest/arrow/array/type.Date32Builder.html) * [array::Date64Array](https://docs.rs/arrow/latest/arrow/array/type.Date64Array.html) * [array::Date64BufferBuilder](https://docs.rs/arrow/latest/arrow/array/type.Date64BufferBuilder.html) * [array::Date64Builder](https://docs.rs/arrow/latest/arrow/array/type.Date64Builder.html) * [array::Decimal128Array](https://docs.rs/arrow/latest/arrow/array/type.Decimal128Array.html) * [array::Decimal128BufferBuilder](https://docs.rs/arrow/latest/arrow/array/type.Decimal128BufferBuilder.html) * [array::Decimal128Builder](https://docs.rs/arrow/latest/arrow/array/type.Decimal128Builder.html) * [array::Decimal256Array](https://docs.rs/arrow/latest/arrow/array/type.Decimal256Array.html) * [array::Decimal256BufferBuilder](https://docs.rs/arrow/latest/arrow/array/type.Decimal256BufferBuilder.html) * [array::Decimal256Builder](https://docs.rs/arrow/latest/arrow/array/type.Decimal256Builder.html) * [array::Decimal32Array](https://docs.rs/arrow/latest/arrow/array/type.Decimal32Array.html) * [array::Decimal32BufferBuilder](https://docs.rs/arrow/latest/arrow/array/type.Decimal32BufferBuilder.html) * [array::Decimal32Builder](https://docs.rs/arrow/latest/arrow/array/type.Decimal32Builder.html) * [array::Decimal64Array](https://docs.rs/arrow/latest/arrow/array/type.Decimal64Array.html) * [array::Decimal64BufferBuilder](https://docs.rs/arrow/latest/arrow/array/type.Decimal64BufferBuilder.html) * [array::Decimal64Builder](https://docs.rs/arrow/latest/arrow/array/type.Decimal64Builder.html) * [array::DurationMicrosecondArray](https://docs.rs/arrow/latest/arrow/array/type.DurationMicrosecondArray.html) * [array::DurationMicrosecondBufferBuilder](https://docs.rs/arrow/latest/arrow/array/type.DurationMicrosecondBufferBuilder.html) * [array::DurationMicrosecondBuilder](https://docs.rs/arrow/latest/arrow/array/type.DurationMicrosecondBuilder.html) * [array::DurationMillisecondArray](https://docs.rs/arrow/latest/arrow/array/type.DurationMillisecondArray.html) * [array::DurationMillisecondBufferBuilder](https://docs.rs/arrow/latest/arrow/array/type.DurationMillisecondBufferBuilder.html) * [array::DurationMillisecondBuilder](https://docs.rs/arrow/latest/arrow/array/type.DurationMillisecondBuilder.html) * [array::DurationNanosecondArray](https://docs.rs/arrow/latest/arrow/array/type.DurationNanosecondArray.html) * [array::DurationNanosecondBufferBuilder](https://docs.rs/arrow/latest/arrow/array/type.DurationNanosecondBufferBuilder.html) * [array::DurationNanosecondBuilder](https://docs.rs/arrow/latest/arrow/array/type.DurationNanosecondBuilder.html) * [array::DurationSecondArray](https://docs.rs/arrow/latest/arrow/array/type.DurationSecondArray.html) * [array::DurationSecondBufferBuilder](https://docs.rs/arrow/latest/arrow/array/type.DurationSecondBufferBuilder.html) * [array::DurationSecondBuilder](https://docs.rs/arrow/latest/arrow/array/type.DurationSecondBuilder.html) * [array::DynComparator](https://docs.rs/arrow/latest/arrow/array/type.DynComparator.html) * [array::FixedSizeBinaryIter](https://docs.rs/arrow/latest/arrow/array/type.FixedSizeBinaryIter.html) * [array::FixedSizeListIter](https://docs.rs/arrow/latest/arrow/array/type.FixedSizeListIter.html) * [array::Float16Array](https://docs.rs/arrow/latest/arrow/array/type.Float16Array.html) * [array::Float16BufferBuilder](https://docs.rs/arrow/latest/arrow/array/type.Float16BufferBuilder.html) * [array::Float16Builder](https://docs.rs/arrow/latest/arrow/array/type.Float16Builder.html) * [array::Float32Array](https://docs.rs/arrow/latest/arrow/array/type.Float32Array.html) * [array::Float32BufferBuilder](https://docs.rs/arrow/latest/arrow/array/type.Float32BufferBuilder.html) * [array::Float32Builder](https://docs.rs/arrow/latest/arrow/array/type.Float32Builder.html) * [array::Float64Array](https://docs.rs/arrow/latest/arrow/array/type.Float64Array.html) * [array::Float64BufferBuilder](https://docs.rs/arrow/latest/arrow/array/type.Float64BufferBuilder.html) * [array::Float64Builder](https://docs.rs/arrow/latest/arrow/array/type.Float64Builder.html) * [array::GenericBinaryArray](https://docs.rs/arrow/latest/arrow/array/type.GenericBinaryArray.html) * [array::GenericBinaryBuilder](https://docs.rs/arrow/latest/arrow/array/type.GenericBinaryBuilder.html) * [array::GenericBinaryIter](https://docs.rs/arrow/latest/arrow/array/type.GenericBinaryIter.html) * [array::GenericListArrayIter](https://docs.rs/arrow/latest/arrow/array/type.GenericListArrayIter.html) * [array::GenericListViewArrayIter](https://docs.rs/arrow/latest/arrow/array/type.GenericListViewArrayIter.html) * [array::GenericStringArray](https://docs.rs/arrow/latest/arrow/array/type.GenericStringArray.html) * [array::GenericStringBuilder](https://docs.rs/arrow/latest/arrow/array/type.GenericStringBuilder.html) * [array::GenericStringIter](https://docs.rs/arrow/latest/arrow/array/type.GenericStringIter.html) * [array::Int16Array](https://docs.rs/arrow/latest/arrow/array/type.Int16Array.html) * [array::Int16BufferBuilder](https://docs.rs/arrow/latest/arrow/array/type.Int16BufferBuilder.html) * [array::Int16Builder](https://docs.rs/arrow/latest/arrow/array/type.Int16Builder.html) * [array::Int16DictionaryArray](https://docs.rs/arrow/latest/arrow/array/type.Int16DictionaryArray.html) * [array::Int16RunArray](https://docs.rs/arrow/latest/arrow/array/type.Int16RunArray.html) * [array::Int32Array](https://docs.rs/arrow/latest/arrow/array/type.Int32Array.html) * [array::Int32BufferBuilder](https://docs.rs/arrow/latest/arrow/array/type.Int32BufferBuilder.html) * [array::Int32Builder](https://docs.rs/arrow/latest/arrow/array/type.Int32Builder.html) * [array::Int32DictionaryArray](https://docs.rs/arrow/latest/arrow/array/type.Int32DictionaryArray.html) * [array::Int32RunArray](https://docs.rs/arrow/latest/arrow/array/type.Int32RunArray.html) * [array::Int64Array](https://docs.rs/arrow/latest/arrow/array/type.Int64Array.html) * [array::Int64BufferBuilder](https://docs.rs/arrow/latest/arrow/array/type.Int64BufferBuilder.html) * [array::Int64Builder](https://docs.rs/arrow/latest/arrow/array/type.Int64Builder.html) * [array::Int64DictionaryArray](https://docs.rs/arrow/latest/arrow/array/type.Int64DictionaryArray.html) * [array::Int64RunArray](https://docs.rs/arrow/latest/arrow/array/type.Int64RunArray.html) * [array::Int8Array](https://docs.rs/arrow/latest/arrow/array/type.Int8Array.html) * [array::Int8BufferBuilder](https://docs.rs/arrow/latest/arrow/array/type.Int8BufferBuilder.html) * [array::Int8Builder](https://docs.rs/arrow/latest/arrow/array/type.Int8Builder.html) * [array::Int8DictionaryArray](https://docs.rs/arrow/latest/arrow/array/type.Int8DictionaryArray.html) * [array::IntervalDayTimeArray](https://docs.rs/arrow/latest/arrow/array/type.IntervalDayTimeArray.html) * [array::IntervalDayTimeBufferBuilder](https://docs.rs/arrow/latest/arrow/array/type.IntervalDayTimeBufferBuilder.html) * [array::IntervalDayTimeBuilder](https://docs.rs/arrow/latest/arrow/array/type.IntervalDayTimeBuilder.html) * [array::IntervalMonthDayNanoArray](https://docs.rs/arrow/latest/arrow/array/type.IntervalMonthDayNanoArray.html) * [array::IntervalMonthDayNanoBufferBuilder](https://docs.rs/arrow/latest/arrow/array/type.IntervalMonthDayNanoBufferBuilder.html) * [array::IntervalMonthDayNanoBuilder](https://docs.rs/arrow/latest/arrow/array/type.IntervalMonthDayNanoBuilder.html) * [array::IntervalYearMonthArray](https://docs.rs/arrow/latest/arrow/array/type.IntervalYearMonthArray.html) * [array::IntervalYearMonthBufferBuilder](https://docs.rs/arrow/latest/arrow/array/type.IntervalYearMonthBufferBuilder.html) * [array::IntervalYearMonthBuilder](https://docs.rs/arrow/latest/arrow/array/type.IntervalYearMonthBuilder.html) * [array::LargeBinaryArray](https://docs.rs/arrow/latest/arrow/array/type.LargeBinaryArray.html) * [array::LargeBinaryBuilder](https://docs.rs/arrow/latest/arrow/array/type.LargeBinaryBuilder.html) * [array::LargeBinaryDictionaryBuilder](https://docs.rs/arrow/latest/arrow/array/type.LargeBinaryDictionaryBuilder.html) * [array::LargeBinaryRunBuilder](https://docs.rs/arrow/latest/arrow/array/type.LargeBinaryRunBuilder.html) * [array::LargeListArray](https://docs.rs/arrow/latest/arrow/array/type.LargeListArray.html) * [array::LargeListBuilder](https://docs.rs/arrow/latest/arrow/array/type.LargeListBuilder.html) * [array::LargeListViewArray](https://docs.rs/arrow/latest/arrow/array/type.LargeListViewArray.html) * [array::LargeListViewBuilder](https://docs.rs/arrow/latest/arrow/array/type.LargeListViewBuilder.html) * [array::LargeStringArray](https://docs.rs/arrow/latest/arrow/array/type.LargeStringArray.html) * [array::LargeStringBuilder](https://docs.rs/arrow/latest/arrow/array/type.LargeStringBuilder.html) * [array::LargeStringDictionaryBuilder](https://docs.rs/arrow/latest/arrow/array/type.LargeStringDictionaryBuilder.html) * [array::LargeStringRunBuilder](https://docs.rs/arrow/latest/arrow/array/type.LargeStringRunBuilder.html) * [array::ListArray](https://docs.rs/arrow/latest/arrow/array/type.ListArray.html) * [array::ListBuilder](https://docs.rs/arrow/latest/arrow/array/type.ListBuilder.html) * [array::ListViewArray](https://docs.rs/arrow/latest/arrow/array/type.ListViewArray.html) * [array::ListViewBuilder](https://docs.rs/arrow/latest/arrow/array/type.ListViewBuilder.html) * [array::MapArrayIter](https://docs.rs/arrow/latest/arrow/array/type.MapArrayIter.html) * [array::PrimitiveIter](https://docs.rs/arrow/latest/arrow/array/type.PrimitiveIter.html) * [array::StringArray](https://docs.rs/arrow/latest/arrow/array/type.StringArray.html) * [array::StringBuilder](https://docs.rs/arrow/latest/arrow/array/type.StringBuilder.html) * [array::StringDictionaryBuilder](https://docs.rs/arrow/latest/arrow/array/type.StringDictionaryBuilder.html) * [array::StringRunBuilder](https://docs.rs/arrow/latest/arrow/array/type.StringRunBuilder.html) * [array::StringViewArray](https://docs.rs/arrow/latest/arrow/array/type.StringViewArray.html) * [array::StringViewBuilder](https://docs.rs/arrow/latest/arrow/array/type.StringViewBuilder.html) * [array::Time32MillisecondArray](https://docs.rs/arrow/latest/arrow/array/type.Time32MillisecondArray.html) * [array::Time32MillisecondBufferBuilder](https://docs.rs/arrow/latest/arrow/array/type.Time32MillisecondBufferBuilder.html) * [array::Time32MillisecondBuilder](https://docs.rs/arrow/latest/arrow/array/type.Time32MillisecondBuilder.html) * [array::Time32SecondArray](https://docs.rs/arrow/latest/arrow/array/type.Time32SecondArray.html) * [array::Time32SecondBufferBuilder](https://docs.rs/arrow/latest/arrow/array/type.Time32SecondBufferBuilder.html) * [array::Time32SecondBuilder](https://docs.rs/arrow/latest/arrow/array/type.Time32SecondBuilder.html) * [array::Time64MicrosecondArray](https://docs.rs/arrow/latest/arrow/array/type.Time64MicrosecondArray.html) * [array::Time64MicrosecondBufferBuilder](https://docs.rs/arrow/latest/arrow/array/type.Time64MicrosecondBufferBuilder.html) * [array::Time64MicrosecondBuilder](https://docs.rs/arrow/latest/arrow/array/type.Time64MicrosecondBuilder.html) * [array::Time64NanosecondArray](https://docs.rs/arrow/latest/arrow/array/type.Time64NanosecondArray.html) * [array::Time64NanosecondBufferBuilder](https://docs.rs/arrow/latest/arrow/array/type.Time64NanosecondBufferBuilder.html) * [array::Time64NanosecondBuilder](https://docs.rs/arrow/latest/arrow/array/type.Time64NanosecondBuilder.html) * [array::TimestampMicrosecondArray](https://docs.rs/arrow/latest/arrow/array/type.TimestampMicrosecondArray.html) * [array::TimestampMicrosecondBufferBuilder](https://docs.rs/arrow/latest/arrow/array/type.TimestampMicrosecondBufferBuilder.html) * [array::TimestampMicrosecondBuilder](https://docs.rs/arrow/latest/arrow/array/type.TimestampMicrosecondBuilder.html) * [array::TimestampMillisecondArray](https://docs.rs/arrow/latest/arrow/array/type.TimestampMillisecondArray.html) * [array::TimestampMillisecondBufferBuilder](https://docs.rs/arrow/latest/arrow/array/type.TimestampMillisecondBufferBuilder.html) * [array::TimestampMillisecondBuilder](https://docs.rs/arrow/latest/arrow/array/type.TimestampMillisecondBuilder.html) * [array::TimestampNanosecondArray](https://docs.rs/arrow/latest/arrow/array/type.TimestampNanosecondArray.html) * [array::TimestampNanosecondBufferBuilder](https://docs.rs/arrow/latest/arrow/array/type.TimestampNanosecondBufferBuilder.html) * [array::TimestampNanosecondBuilder](https://docs.rs/arrow/latest/arrow/array/type.TimestampNanosecondBuilder.html) * [array::TimestampSecondArray](https://docs.rs/arrow/latest/arrow/array/type.TimestampSecondArray.html) * [array::TimestampSecondBufferBuilder](https://docs.rs/arrow/latest/arrow/array/type.TimestampSecondBufferBuilder.html) * [array::TimestampSecondBuilder](https://docs.rs/arrow/latest/arrow/array/type.TimestampSecondBuilder.html) * [array::UInt16Array](https://docs.rs/arrow/latest/arrow/array/type.UInt16Array.html) * [array::UInt16BufferBuilder](https://docs.rs/arrow/latest/arrow/array/type.UInt16BufferBuilder.html) * [array::UInt16Builder](https://docs.rs/arrow/latest/arrow/array/type.UInt16Builder.html) * [array::UInt16DictionaryArray](https://docs.rs/arrow/latest/arrow/array/type.UInt16DictionaryArray.html) * [array::UInt32Array](https://docs.rs/arrow/latest/arrow/array/type.UInt32Array.html) * [array::UInt32BufferBuilder](https://docs.rs/arrow/latest/arrow/array/type.UInt32BufferBuilder.html) * [array::UInt32Builder](https://docs.rs/arrow/latest/arrow/array/type.UInt32Builder.html) * [array::UInt32DictionaryArray](https://docs.rs/arrow/latest/arrow/array/type.UInt32DictionaryArray.html) * [array::UInt64Array](https://docs.rs/arrow/latest/arrow/array/type.UInt64Array.html) * [array::UInt64BufferBuilder](https://docs.rs/arrow/latest/arrow/array/type.UInt64BufferBuilder.html) * [array::UInt64Builder](https://docs.rs/arrow/latest/arrow/array/type.UInt64Builder.html) * [array::UInt64DictionaryArray](https://docs.rs/arrow/latest/arrow/array/type.UInt64DictionaryArray.html) * [array::UInt8Array](https://docs.rs/arrow/latest/arrow/array/type.UInt8Array.html) * [array::UInt8BufferBuilder](https://docs.rs/arrow/latest/arrow/array/type.UInt8BufferBuilder.html) * [array::UInt8Builder](https://docs.rs/arrow/latest/arrow/array/type.UInt8Builder.html) * [array::UInt8DictionaryArray](https://docs.rs/arrow/latest/arrow/array/type.UInt8DictionaryArray.html) * [array::array::ArrayRef](https://docs.rs/arrow/latest/arrow/array/array/type.ArrayRef.html) * [array::array::BinaryArray](https://docs.rs/arrow/latest/arrow/array/array/type.BinaryArray.html) * [array::array::BinaryViewArray](https://docs.rs/arrow/latest/arrow/array/array/type.BinaryViewArray.html) * [array::array::Date32Array](https://docs.rs/arrow/latest/arrow/array/array/type.Date32Array.html) * [array::array::Date64Array](https://docs.rs/arrow/latest/arrow/array/array/type.Date64Array.html) * [array::array::Decimal128Array](https://docs.rs/arrow/latest/arrow/array/array/type.Decimal128Array.html) * [array::array::Decimal256Array](https://docs.rs/arrow/latest/arrow/array/array/type.Decimal256Array.html) * [array::array::Decimal32Array](https://docs.rs/arrow/latest/arrow/array/array/type.Decimal32Array.html) * [array::array::Decimal64Array](https://docs.rs/arrow/latest/arrow/array/array/type.Decimal64Array.html) * [array::array::DurationMicrosecondArray](https://docs.rs/arrow/latest/arrow/array/array/type.DurationMicrosecondArray.html) * [array::array::DurationMillisecondArray](https://docs.rs/arrow/latest/arrow/array/array/type.DurationMillisecondArray.html) * [array::array::DurationNanosecondArray](https://docs.rs/arrow/latest/arrow/array/array/type.DurationNanosecondArray.html) * [array::array::DurationSecondArray](https://docs.rs/arrow/latest/arrow/array/array/type.DurationSecondArray.html) * [array::array::Float16Array](https://docs.rs/arrow/latest/arrow/array/array/type.Float16Array.html) * [array::array::Float32Array](https://docs.rs/arrow/latest/arrow/array/array/type.Float32Array.html) * [array::array::Float64Array](https://docs.rs/arrow/latest/arrow/array/array/type.Float64Array.html) * [array::array::GenericBinaryArray](https://docs.rs/arrow/latest/arrow/array/array/type.GenericBinaryArray.html) * [array::array::GenericStringArray](https://docs.rs/arrow/latest/arrow/array/array/type.GenericStringArray.html) * [array::array::Int16Array](https://docs.rs/arrow/latest/arrow/array/array/type.Int16Array.html) * [array::array::Int16DictionaryArray](https://docs.rs/arrow/latest/arrow/array/array/type.Int16DictionaryArray.html) * [array::array::Int16RunArray](https://docs.rs/arrow/latest/arrow/array/array/type.Int16RunArray.html) * [array::array::Int32Array](https://docs.rs/arrow/latest/arrow/array/array/type.Int32Array.html) * [array::array::Int32DictionaryArray](https://docs.rs/arrow/latest/arrow/array/array/type.Int32DictionaryArray.html) * [array::array::Int32RunArray](https://docs.rs/arrow/latest/arrow/array/array/type.Int32RunArray.html) * [array::array::Int64Array](https://docs.rs/arrow/latest/arrow/array/array/type.Int64Array.html) * [array::array::Int64DictionaryArray](https://docs.rs/arrow/latest/arrow/array/array/type.Int64DictionaryArray.html) * [array::array::Int64RunArray](https://docs.rs/arrow/latest/arrow/array/array/type.Int64RunArray.html) * [array::array::Int8Array](https://docs.rs/arrow/latest/arrow/array/array/type.Int8Array.html) * [array::array::Int8DictionaryArray](https://docs.rs/arrow/latest/arrow/array/array/type.Int8DictionaryArray.html) * [array::array::IntervalDayTimeArray](https://docs.rs/arrow/latest/arrow/array/array/type.IntervalDayTimeArray.html) * [array::array::IntervalMonthDayNanoArray](https://docs.rs/arrow/latest/arrow/array/array/type.IntervalMonthDayNanoArray.html) * [array::array::IntervalYearMonthArray](https://docs.rs/arrow/latest/arrow/array/array/type.IntervalYearMonthArray.html) * [array::array::LargeBinaryArray](https://docs.rs/arrow/latest/arrow/array/array/type.LargeBinaryArray.html) * [array::array::LargeListArray](https://docs.rs/arrow/latest/arrow/array/array/type.LargeListArray.html) * [array::array::LargeListViewArray](https://docs.rs/arrow/latest/arrow/array/array/type.LargeListViewArray.html) * [array::array::LargeStringArray](https://docs.rs/arrow/latest/arrow/array/array/type.LargeStringArray.html) * [array::array::ListArray](https://docs.rs/arrow/latest/arrow/array/array/type.ListArray.html) * [array::array::ListViewArray](https://docs.rs/arrow/latest/arrow/array/array/type.ListViewArray.html) * [array::array::StringArray](https://docs.rs/arrow/latest/arrow/array/array/type.StringArray.html) * [array::array::StringViewArray](https://docs.rs/arrow/latest/arrow/array/array/type.StringViewArray.html) * [array::array::Time32MillisecondArray](https://docs.rs/arrow/latest/arrow/array/array/type.Time32MillisecondArray.html) * [array::array::Time32SecondArray](https://docs.rs/arrow/latest/arrow/array/array/type.Time32SecondArray.html) * [array::array::Time64MicrosecondArray](https://docs.rs/arrow/latest/arrow/array/array/type.Time64MicrosecondArray.html) * [array::array::Time64NanosecondArray](https://docs.rs/arrow/latest/arrow/array/array/type.Time64NanosecondArray.html) * [array::array::TimestampMicrosecondArray](https://docs.rs/arrow/latest/arrow/array/array/type.TimestampMicrosecondArray.html) * [array::array::TimestampMillisecondArray](https://docs.rs/arrow/latest/arrow/array/array/type.TimestampMillisecondArray.html) * [array::array::TimestampNanosecondArray](https://docs.rs/arrow/latest/arrow/array/array/type.TimestampNanosecondArray.html) * [array::array::TimestampSecondArray](https://docs.rs/arrow/latest/arrow/array/array/type.TimestampSecondArray.html) * [array::array::UInt16Array](https://docs.rs/arrow/latest/arrow/array/array/type.UInt16Array.html) * [array::array::UInt16DictionaryArray](https://docs.rs/arrow/latest/arrow/array/array/type.UInt16DictionaryArray.html) * [array::array::UInt32Array](https://docs.rs/arrow/latest/arrow/array/array/type.UInt32Array.html) * [array::array::UInt32DictionaryArray](https://docs.rs/arrow/latest/arrow/array/array/type.UInt32DictionaryArray.html) * [array::array::UInt64Array](https://docs.rs/arrow/latest/arrow/array/array/type.UInt64Array.html) * [array::array::UInt64DictionaryArray](https://docs.rs/arrow/latest/arrow/array/array/type.UInt64DictionaryArray.html) * [array::array::UInt8Array](https://docs.rs/arrow/latest/arrow/array/array/type.UInt8Array.html) * [array::array::UInt8DictionaryArray](https://docs.rs/arrow/latest/arrow/array/array/type.UInt8DictionaryArray.html) * [array::builder::BinaryBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.BinaryBuilder.html) * [array::builder::BinaryDictionaryBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.BinaryDictionaryBuilder.html) * [array::builder::BinaryRunBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.BinaryRunBuilder.html) * [array::builder::BinaryViewBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.BinaryViewBuilder.html) * [array::builder::Date32BufferBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.Date32BufferBuilder.html) * [array::builder::Date32Builder](https://docs.rs/arrow/latest/arrow/array/builder/type.Date32Builder.html) * [array::builder::Date64BufferBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.Date64BufferBuilder.html) * [array::builder::Date64Builder](https://docs.rs/arrow/latest/arrow/array/builder/type.Date64Builder.html) * [array::builder::Decimal128BufferBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.Decimal128BufferBuilder.html) * [array::builder::Decimal128Builder](https://docs.rs/arrow/latest/arrow/array/builder/type.Decimal128Builder.html) * [array::builder::Decimal256BufferBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.Decimal256BufferBuilder.html) * [array::builder::Decimal256Builder](https://docs.rs/arrow/latest/arrow/array/builder/type.Decimal256Builder.html) * [array::builder::Decimal32BufferBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.Decimal32BufferBuilder.html) * [array::builder::Decimal32Builder](https://docs.rs/arrow/latest/arrow/array/builder/type.Decimal32Builder.html) * [array::builder::Decimal64BufferBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.Decimal64BufferBuilder.html) * [array::builder::Decimal64Builder](https://docs.rs/arrow/latest/arrow/array/builder/type.Decimal64Builder.html) * [array::builder::DurationMicrosecondBufferBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.DurationMicrosecondBufferBuilder.html) * [array::builder::DurationMicrosecondBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.DurationMicrosecondBuilder.html) * [array::builder::DurationMillisecondBufferBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.DurationMillisecondBufferBuilder.html) * [array::builder::DurationMillisecondBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.DurationMillisecondBuilder.html) * [array::builder::DurationNanosecondBufferBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.DurationNanosecondBufferBuilder.html) * [array::builder::DurationNanosecondBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.DurationNanosecondBuilder.html) * [array::builder::DurationSecondBufferBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.DurationSecondBufferBuilder.html) * [array::builder::DurationSecondBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.DurationSecondBuilder.html) * [array::builder::Float16BufferBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.Float16BufferBuilder.html) * [array::builder::Float16Builder](https://docs.rs/arrow/latest/arrow/array/builder/type.Float16Builder.html) * [array::builder::Float32BufferBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.Float32BufferBuilder.html) * [array::builder::Float32Builder](https://docs.rs/arrow/latest/arrow/array/builder/type.Float32Builder.html) * [array::builder::Float64BufferBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.Float64BufferBuilder.html) * [array::builder::Float64Builder](https://docs.rs/arrow/latest/arrow/array/builder/type.Float64Builder.html) * [array::builder::GenericBinaryBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.GenericBinaryBuilder.html) * [array::builder::GenericStringBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.GenericStringBuilder.html) * [array::builder::Int16BufferBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.Int16BufferBuilder.html) * [array::builder::Int16Builder](https://docs.rs/arrow/latest/arrow/array/builder/type.Int16Builder.html) * [array::builder::Int32BufferBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.Int32BufferBuilder.html) * [array::builder::Int32Builder](https://docs.rs/arrow/latest/arrow/array/builder/type.Int32Builder.html) * [array::builder::Int64BufferBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.Int64BufferBuilder.html) * [array::builder::Int64Builder](https://docs.rs/arrow/latest/arrow/array/builder/type.Int64Builder.html) * [array::builder::Int8BufferBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.Int8BufferBuilder.html) * [array::builder::Int8Builder](https://docs.rs/arrow/latest/arrow/array/builder/type.Int8Builder.html) * [array::builder::IntervalDayTimeBufferBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.IntervalDayTimeBufferBuilder.html) * [array::builder::IntervalDayTimeBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.IntervalDayTimeBuilder.html) * [array::builder::IntervalMonthDayNanoBufferBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.IntervalMonthDayNanoBufferBuilder.html) * [array::builder::IntervalMonthDayNanoBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.IntervalMonthDayNanoBuilder.html) * [array::builder::IntervalYearMonthBufferBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.IntervalYearMonthBufferBuilder.html) * [array::builder::IntervalYearMonthBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.IntervalYearMonthBuilder.html) * [array::builder::LargeBinaryBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.LargeBinaryBuilder.html) * [array::builder::LargeBinaryDictionaryBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.LargeBinaryDictionaryBuilder.html) * [array::builder::LargeBinaryRunBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.LargeBinaryRunBuilder.html) * [array::builder::LargeListBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.LargeListBuilder.html) * [array::builder::LargeListViewBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.LargeListViewBuilder.html) * [array::builder::LargeStringBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.LargeStringBuilder.html) * [array::builder::LargeStringDictionaryBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.LargeStringDictionaryBuilder.html) * [array::builder::LargeStringRunBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.LargeStringRunBuilder.html) * [array::builder::ListBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.ListBuilder.html) * [array::builder::ListViewBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.ListViewBuilder.html) * [array::builder::StringBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.StringBuilder.html) * [array::builder::StringDictionaryBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.StringDictionaryBuilder.html) * [array::builder::StringRunBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.StringRunBuilder.html) * [array::builder::StringViewBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.StringViewBuilder.html) * [array::builder::Time32MillisecondBufferBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.Time32MillisecondBufferBuilder.html) * [array::builder::Time32MillisecondBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.Time32MillisecondBuilder.html) * [array::builder::Time32SecondBufferBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.Time32SecondBufferBuilder.html) * [array::builder::Time32SecondBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.Time32SecondBuilder.html) * [array::builder::Time64MicrosecondBufferBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.Time64MicrosecondBufferBuilder.html) * [array::builder::Time64MicrosecondBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.Time64MicrosecondBuilder.html) * [array::builder::Time64NanosecondBufferBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.Time64NanosecondBufferBuilder.html) * [array::builder::Time64NanosecondBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.Time64NanosecondBuilder.html) * [array::builder::TimestampMicrosecondBufferBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.TimestampMicrosecondBufferBuilder.html) * [array::builder::TimestampMicrosecondBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.TimestampMicrosecondBuilder.html) * [array::builder::TimestampMillisecondBufferBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.TimestampMillisecondBufferBuilder.html) * [array::builder::TimestampMillisecondBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.TimestampMillisecondBuilder.html) * [array::builder::TimestampNanosecondBufferBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.TimestampNanosecondBufferBuilder.html) * [array::builder::TimestampNanosecondBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.TimestampNanosecondBuilder.html) * [array::builder::TimestampSecondBufferBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.TimestampSecondBufferBuilder.html) * [array::builder::TimestampSecondBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.TimestampSecondBuilder.html) * [array::builder::UInt16BufferBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.UInt16BufferBuilder.html) * [array::builder::UInt16Builder](https://docs.rs/arrow/latest/arrow/array/builder/type.UInt16Builder.html) * [array::builder::UInt32BufferBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.UInt32BufferBuilder.html) * [array::builder::UInt32Builder](https://docs.rs/arrow/latest/arrow/array/builder/type.UInt32Builder.html) * [array::builder::UInt64BufferBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.UInt64BufferBuilder.html) * [array::builder::UInt64Builder](https://docs.rs/arrow/latest/arrow/array/builder/type.UInt64Builder.html) * [array::builder::UInt8BufferBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.UInt8BufferBuilder.html) * [array::builder::UInt8Builder](https://docs.rs/arrow/latest/arrow/array/builder/type.UInt8Builder.html) * [array::iterator::BooleanIter](https://docs.rs/arrow/latest/arrow/array/iterator/type.BooleanIter.html) * [array::iterator::FixedSizeBinaryIter](https://docs.rs/arrow/latest/arrow/array/iterator/type.FixedSizeBinaryIter.html) * [array::iterator::FixedSizeListIter](https://docs.rs/arrow/latest/arrow/array/iterator/type.FixedSizeListIter.html) * [array::iterator::GenericBinaryIter](https://docs.rs/arrow/latest/arrow/array/iterator/type.GenericBinaryIter.html) * [array::iterator::GenericListArrayIter](https://docs.rs/arrow/latest/arrow/array/iterator/type.GenericListArrayIter.html) * [array::iterator::GenericListViewArrayIter](https://docs.rs/arrow/latest/arrow/array/iterator/type.GenericListViewArrayIter.html) * [array::iterator::GenericStringIter](https://docs.rs/arrow/latest/arrow/array/iterator/type.GenericStringIter.html) * [array::iterator::MapArrayIter](https://docs.rs/arrow/latest/arrow/array/iterator/type.MapArrayIter.html) * [array::iterator::PrimitiveIter](https://docs.rs/arrow/latest/arrow/array/iterator/type.PrimitiveIter.html) * [array::types::BinaryType](https://docs.rs/arrow/latest/arrow/array/types/type.BinaryType.html) * [array::types::LargeBinaryType](https://docs.rs/arrow/latest/arrow/array/types/type.LargeBinaryType.html) * [array::types::LargeUtf8Type](https://docs.rs/arrow/latest/arrow/array/types/type.LargeUtf8Type.html) * [array::types::Utf8Type](https://docs.rs/arrow/latest/arrow/array/types/type.Utf8Type.html) * [compute::kernels::cast\_utils::MonthDayNano](https://docs.rs/arrow/latest/arrow/compute/kernels/cast_utils/type.MonthDayNano.html) * [datatypes::BinaryType](https://docs.rs/arrow/latest/arrow/datatypes/type.BinaryType.html) * [datatypes::FieldRef](https://docs.rs/arrow/latest/arrow/datatypes/type.FieldRef.html) * [datatypes::LargeBinaryType](https://docs.rs/arrow/latest/arrow/datatypes/type.LargeBinaryType.html) * [datatypes::LargeUtf8Type](https://docs.rs/arrow/latest/arrow/datatypes/type.LargeUtf8Type.html) * [datatypes::SchemaRef](https://docs.rs/arrow/latest/arrow/datatypes/type.SchemaRef.html) * [datatypes::Utf8Type](https://docs.rs/arrow/latest/arrow/datatypes/type.Utf8Type.html) * [error::Result](https://docs.rs/arrow/latest/arrow/error/type.Result.html) * [tensor::BooleanTensor](https://docs.rs/arrow/latest/arrow/tensor/type.BooleanTensor.html) * [tensor::Date32Tensor](https://docs.rs/arrow/latest/arrow/tensor/type.Date32Tensor.html) * [tensor::Date64Tensor](https://docs.rs/arrow/latest/arrow/tensor/type.Date64Tensor.html) * [tensor::Decimal128Tensor](https://docs.rs/arrow/latest/arrow/tensor/type.Decimal128Tensor.html) * [tensor::Decimal256Tensor](https://docs.rs/arrow/latest/arrow/tensor/type.Decimal256Tensor.html) * [tensor::Decimal32Tensor](https://docs.rs/arrow/latest/arrow/tensor/type.Decimal32Tensor.html) * [tensor::Decimal64Tensor](https://docs.rs/arrow/latest/arrow/tensor/type.Decimal64Tensor.html) * [tensor::DurationMicrosecondTensor](https://docs.rs/arrow/latest/arrow/tensor/type.DurationMicrosecondTensor.html) * [tensor::DurationMillisecondTensor](https://docs.rs/arrow/latest/arrow/tensor/type.DurationMillisecondTensor.html) * [tensor::DurationNanosecondTensor](https://docs.rs/arrow/latest/arrow/tensor/type.DurationNanosecondTensor.html) * [tensor::DurationSecondTensor](https://docs.rs/arrow/latest/arrow/tensor/type.DurationSecondTensor.html) * [tensor::Float16Tensor](https://docs.rs/arrow/latest/arrow/tensor/type.Float16Tensor.html) * [tensor::Float32Tensor](https://docs.rs/arrow/latest/arrow/tensor/type.Float32Tensor.html) * [tensor::Float64Tensor](https://docs.rs/arrow/latest/arrow/tensor/type.Float64Tensor.html) * [tensor::Int16Tensor](https://docs.rs/arrow/latest/arrow/tensor/type.Int16Tensor.html) * [tensor::Int32Tensor](https://docs.rs/arrow/latest/arrow/tensor/type.Int32Tensor.html) * [tensor::Int64Tensor](https://docs.rs/arrow/latest/arrow/tensor/type.Int64Tensor.html) * [tensor::Int8Tensor](https://docs.rs/arrow/latest/arrow/tensor/type.Int8Tensor.html) * [tensor::IntervalDayTimeTensor](https://docs.rs/arrow/latest/arrow/tensor/type.IntervalDayTimeTensor.html) * [tensor::IntervalMonthDayNanoTensor](https://docs.rs/arrow/latest/arrow/tensor/type.IntervalMonthDayNanoTensor.html) * [tensor::IntervalYearMonthTensor](https://docs.rs/arrow/latest/arrow/tensor/type.IntervalYearMonthTensor.html) * [tensor::Time32MillisecondTensor](https://docs.rs/arrow/latest/arrow/tensor/type.Time32MillisecondTensor.html) * [tensor::Time32SecondTensor](https://docs.rs/arrow/latest/arrow/tensor/type.Time32SecondTensor.html) * [tensor::Time64MicrosecondTensor](https://docs.rs/arrow/latest/arrow/tensor/type.Time64MicrosecondTensor.html) * [tensor::Time64NanosecondTensor](https://docs.rs/arrow/latest/arrow/tensor/type.Time64NanosecondTensor.html) * [tensor::TimestampMicrosecondTensor](https://docs.rs/arrow/latest/arrow/tensor/type.TimestampMicrosecondTensor.html) * [tensor::TimestampMillisecondTensor](https://docs.rs/arrow/latest/arrow/tensor/type.TimestampMillisecondTensor.html) * [tensor::TimestampNanosecondTensor](https://docs.rs/arrow/latest/arrow/tensor/type.TimestampNanosecondTensor.html) * [tensor::TimestampSecondTensor](https://docs.rs/arrow/latest/arrow/tensor/type.TimestampSecondTensor.html) * [tensor::UInt16Tensor](https://docs.rs/arrow/latest/arrow/tensor/type.UInt16Tensor.html) * [tensor::UInt32Tensor](https://docs.rs/arrow/latest/arrow/tensor/type.UInt32Tensor.html) * [tensor::UInt64Tensor](https://docs.rs/arrow/latest/arrow/tensor/type.UInt64Tensor.html) * [tensor::UInt8Tensor](https://docs.rs/arrow/latest/arrow/tensor/type.UInt8Tensor.html) * [util::bit\_chunk\_iterator::UnalignedBitChunkIterator](https://docs.rs/arrow/latest/arrow/util/bit_chunk_iterator/type.UnalignedBitChunkIterator.html) * [util::display::FormatResult](https://docs.rs/arrow/latest/arrow/util/display/type.FormatResult.html) ### Constants * [ARROW\_VERSION](https://docs.rs/arrow/latest/arrow/constant.ARROW_VERSION.html) * [alloc::ALIGNMENT](https://docs.rs/arrow/latest/arrow/alloc/constant.ALIGNMENT.html) * [array::temporal\_conversions::MICROSECONDS](https://docs.rs/arrow/latest/arrow/array/temporal_conversions/constant.MICROSECONDS.html) * [array::temporal\_conversions::MICROSECONDS\_IN\_DAY](https://docs.rs/arrow/latest/arrow/array/temporal_conversions/constant.MICROSECONDS_IN_DAY.html) * [array::temporal\_conversions::MILLISECONDS](https://docs.rs/arrow/latest/arrow/array/temporal_conversions/constant.MILLISECONDS.html) * [array::temporal\_conversions::MILLISECONDS\_IN\_DAY](https://docs.rs/arrow/latest/arrow/array/temporal_conversions/constant.MILLISECONDS_IN_DAY.html) * [array::temporal\_conversions::NANOSECONDS](https://docs.rs/arrow/latest/arrow/array/temporal_conversions/constant.NANOSECONDS.html) * [array::temporal\_conversions::NANOSECONDS\_IN\_DAY](https://docs.rs/arrow/latest/arrow/array/temporal_conversions/constant.NANOSECONDS_IN_DAY.html) * [array::temporal\_conversions::SECONDS\_IN\_DAY](https://docs.rs/arrow/latest/arrow/array/temporal_conversions/constant.SECONDS_IN_DAY.html) * [array::temporal\_conversions::UNIX\_EPOCH\_DAY](https://docs.rs/arrow/latest/arrow/array/temporal_conversions/constant.UNIX_EPOCH_DAY.html) * [datatypes::DECIMAL128\_MAX\_PRECISION](https://docs.rs/arrow/latest/arrow/datatypes/constant.DECIMAL128_MAX_PRECISION.html) * [datatypes::DECIMAL128\_MAX\_SCALE](https://docs.rs/arrow/latest/arrow/datatypes/constant.DECIMAL128_MAX_SCALE.html) * [datatypes::DECIMAL256\_MAX\_PRECISION](https://docs.rs/arrow/latest/arrow/datatypes/constant.DECIMAL256_MAX_PRECISION.html) * [datatypes::DECIMAL256\_MAX\_SCALE](https://docs.rs/arrow/latest/arrow/datatypes/constant.DECIMAL256_MAX_SCALE.html) * [datatypes::DECIMAL32\_DEFAULT\_SCALE](https://docs.rs/arrow/latest/arrow/datatypes/constant.DECIMAL32_DEFAULT_SCALE.html) * [datatypes::DECIMAL32\_MAX\_PRECISION](https://docs.rs/arrow/latest/arrow/datatypes/constant.DECIMAL32_MAX_PRECISION.html) * [datatypes::DECIMAL32\_MAX\_SCALE](https://docs.rs/arrow/latest/arrow/datatypes/constant.DECIMAL32_MAX_SCALE.html) * [datatypes::DECIMAL64\_DEFAULT\_SCALE](https://docs.rs/arrow/latest/arrow/datatypes/constant.DECIMAL64_DEFAULT_SCALE.html) * [datatypes::DECIMAL64\_MAX\_PRECISION](https://docs.rs/arrow/latest/arrow/datatypes/constant.DECIMAL64_MAX_PRECISION.html) * [datatypes::DECIMAL64\_MAX\_SCALE](https://docs.rs/arrow/latest/arrow/datatypes/constant.DECIMAL64_MAX_SCALE.html) * [datatypes::DECIMAL\_DEFAULT\_SCALE](https://docs.rs/arrow/latest/arrow/datatypes/constant.DECIMAL_DEFAULT_SCALE.html) * [datatypes::MAX\_DECIMAL128\_FOR\_EACH\_PRECISION](https://docs.rs/arrow/latest/arrow/datatypes/constant.MAX_DECIMAL128_FOR_EACH_PRECISION.html) * [datatypes::MAX\_DECIMAL256\_FOR\_EACH\_PRECISION](https://docs.rs/arrow/latest/arrow/datatypes/constant.MAX_DECIMAL256_FOR_EACH_PRECISION.html) * [datatypes::MAX\_DECIMAL32\_FOR\_EACH\_PRECISION](https://docs.rs/arrow/latest/arrow/datatypes/constant.MAX_DECIMAL32_FOR_EACH_PRECISION.html) * [datatypes::MAX\_DECIMAL64\_FOR\_EACH\_PRECISION](https://docs.rs/arrow/latest/arrow/datatypes/constant.MAX_DECIMAL64_FOR_EACH_PRECISION.html) * [datatypes::MAX\_DECIMAL\_FOR\_EACH\_PRECISION](https://docs.rs/arrow/latest/arrow/datatypes/constant.MAX_DECIMAL_FOR_EACH_PRECISION.html) * [datatypes::MIN\_DECIMAL128\_FOR\_EACH\_PRECISION](https://docs.rs/arrow/latest/arrow/datatypes/constant.MIN_DECIMAL128_FOR_EACH_PRECISION.html) * [datatypes::MIN\_DECIMAL256\_FOR\_EACH\_PRECISION](https://docs.rs/arrow/latest/arrow/datatypes/constant.MIN_DECIMAL256_FOR_EACH_PRECISION.html) * [datatypes::MIN\_DECIMAL32\_FOR\_EACH\_PRECISION](https://docs.rs/arrow/latest/arrow/datatypes/constant.MIN_DECIMAL32_FOR_EACH_PRECISION.html) * [datatypes::MIN\_DECIMAL64\_FOR\_EACH\_PRECISION](https://docs.rs/arrow/latest/arrow/datatypes/constant.MIN_DECIMAL64_FOR_EACH_PRECISION.html) * [datatypes::MIN\_DECIMAL\_FOR\_EACH\_PRECISION](https://docs.rs/arrow/latest/arrow/datatypes/constant.MIN_DECIMAL_FOR_EACH_PRECISION.html) * [temporal\_conversions::MICROSECONDS](https://docs.rs/arrow/latest/arrow/temporal_conversions/constant.MICROSECONDS.html) * [temporal\_conversions::MICROSECONDS\_IN\_DAY](https://docs.rs/arrow/latest/arrow/temporal_conversions/constant.MICROSECONDS_IN_DAY.html) * [temporal\_conversions::MILLISECONDS](https://docs.rs/arrow/latest/arrow/temporal_conversions/constant.MILLISECONDS.html) * [temporal\_conversions::MILLISECONDS\_IN\_DAY](https://docs.rs/arrow/latest/arrow/temporal_conversions/constant.MILLISECONDS_IN_DAY.html) * [temporal\_conversions::NANOSECONDS](https://docs.rs/arrow/latest/arrow/temporal_conversions/constant.NANOSECONDS.html) * [temporal\_conversions::NANOSECONDS\_IN\_DAY](https://docs.rs/arrow/latest/arrow/temporal_conversions/constant.NANOSECONDS_IN_DAY.html) * [temporal\_conversions::SECONDS\_IN\_DAY](https://docs.rs/arrow/latest/arrow/temporal_conversions/constant.SECONDS_IN_DAY.html) * [temporal\_conversions::UNIX\_EPOCH\_DAY](https://docs.rs/arrow/latest/arrow/temporal_conversions/constant.UNIX_EPOCH_DAY.html) --- # sort in arrow::compute - Rust [Docs.rs](https://docs.rs/) * [arrow-58.1.0](https://docs.rs/arrow/latest/arrow/compute/fn.sort.html# "Rust implementation of Apache Arrow") * arrow 58.1.0 * [Permalink](https://docs.rs/arrow/58.1.0/arrow/compute/fn.sort.html "Get a link to this specific version") * [Docs.rs crate page](https://docs.rs/crate/arrow/latest "See arrow in docs.rs") * [Apache-2.0](https://spdx.org/licenses/Apache-2.0) * Links * [Homepage](https://github.com/apache/arrow-rs) * [Repository](https://github.com/apache/arrow-rs) * [crates.io](https://crates.io/crates/arrow "See arrow in crates.io") * [Source](https://docs.rs/crate/arrow/latest/source/ "Browse source of arrow-58.1.0") * Owners * [andygrove](https://crates.io/users/andygrove) * [kou](https://crates.io/users/kou) * [kszucs](https://crates.io/users/kszucs) * [xhochy](https://crates.io/users/xhochy) * [nevi-me](https://crates.io/users/nevi-me) * [alamb](https://crates.io/users/alamb) * [tustvold](https://crates.io/users/tustvold) * Dependencies * * [arrow-arith ^58.1.0 _normal_](https://docs.rs/arrow-arith/^58.1.0/) * [arrow-array ^58.1.0 _normal_](https://docs.rs/arrow-array/^58.1.0/) * [arrow-buffer ^58.1.0 _normal_](https://docs.rs/arrow-buffer/^58.1.0/) * [arrow-cast ^58.1.0 _normal_](https://docs.rs/arrow-cast/^58.1.0/) * [arrow-csv ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-csv/^58.1.0/) * [arrow-data ^58.1.0 _normal_](https://docs.rs/arrow-data/^58.1.0/) * [arrow-ipc ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-ipc/^58.1.0/) * [arrow-json ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-json/^58.1.0/) * [arrow-ord ^58.1.0 _normal_](https://docs.rs/arrow-ord/^58.1.0/) * [arrow-pyarrow ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-pyarrow/^58.1.0/) * [arrow-row ^58.1.0 _normal_](https://docs.rs/arrow-row/^58.1.0/) * [arrow-schema ^58.1.0 _normal_](https://docs.rs/arrow-schema/^58.1.0/) * [arrow-select ^58.1.0 _normal_](https://docs.rs/arrow-select/^58.1.0/) * [arrow-string ^58.1.0 _normal_](https://docs.rs/arrow-string/^58.1.0/) * [half ^2.1 _normal_ _optional_](https://docs.rs/half/^2.1/) * [rand ^0.9 _normal_ _optional_](https://docs.rs/rand/^0.9/) * [bytes ^1.9 _dev_](https://docs.rs/bytes/^1.9/) * [chrono ^0.4.40 _dev_](https://docs.rs/chrono/^0.4.40/) * [criterion ^0.8.0 _dev_](https://docs.rs/criterion/^0.8.0/) * [half ^2.1 _dev_](https://docs.rs/half/^2.1/) * [memmap2 ^0.9.3 _dev_](https://docs.rs/memmap2/^0.9.3/) * [rand ^0.9 _dev_](https://docs.rs/rand/^0.9/) * [serde ^1.0 _dev_](https://docs.rs/serde/^1.0/) * Versions * [**100%** of the crate is documented](https://docs.rs/crate/arrow/latest) * [Platform](https://docs.rs/arrow/latest/arrow/compute/fn.sort.html#) * [x86\_64-unknown-linux-gnu](https://docs.rs/crate/arrow/latest/target-redirect/arrow/compute/fn.sort.html) * [Feature flags](https://docs.rs/crate/arrow/latest/features "Browse available feature flags of arrow-58.1.0") * [docs.rs](https://docs.rs/arrow/latest/arrow/compute/fn.sort.html#) * [About docs.rs](https://docs.rs/about) * [Badges](https://docs.rs/about/badges) * [Builds](https://docs.rs/about/builds) * [Metadata](https://docs.rs/about/metadata) * [Shorthand URLs](https://docs.rs/about/redirections) * [Download](https://docs.rs/about/download) * [Rustdoc JSON](https://docs.rs/about/rustdoc-json) * [Build queue](https://docs.rs/releases/queue) * [Privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#docs.rs) * [Rust](https://docs.rs/arrow/latest/arrow/compute/fn.sort.html#) * [Rust website](https://www.rust-lang.org/) * [The Book](https://doc.rust-lang.org/book/) * [Standard Library API Reference](https://doc.rust-lang.org/std/) * [Rust by Example](https://doc.rust-lang.org/rust-by-example/) * [The Cargo Guide](https://doc.rust-lang.org/cargo/guide/) * [Clippy Documentation](https://doc.rust-lang.org/nightly/clippy) [Skip to main content](https://docs.rs/arrow/latest/arrow/compute/fn.sort.html#main-content) [sort](https://docs.rs/arrow/latest/arrow/compute/fn.sort.html#) ----------------------------------------------------------------- [arrow](https://docs.rs/arrow/latest/arrow/index.html) ::[compute](https://docs.rs/arrow/latest/arrow/compute/index.html) Function sort Copy item path ============================ [Source](https://docs.rs/arrow-ord/58.1.0/x86_64-unknown-linux-gnu/src/arrow_ord/sort.rs.html#57) pub fn sort( values: &dyn Array, options: Option, ) -> Result, ArrowError> Expand description Sort the `ArrayRef` using `SortOptions`. Performs a sort on values and indices. Nulls are ordered according to the `nulls_first` flag in `options`. Floats are sorted using IEEE 754 totalOrder Returns an `ArrowError::ComputeError(String)` if the array type is either unsupported by `sort_to_indices` or `take`. Note: this is an unstable\_sort, meaning it may not preserve the order of equal elements. [§](https://docs.rs/arrow/latest/arrow/compute/fn.sort.html#example) Example ---------------------------------------------------------------------------- let array = Int32Array::from(vec![5, 4, 3, 2, 1]); let sorted_array = sort(&array, None).unwrap(); assert_eq!(sorted_array.as_ref(), &Int32Array::from(vec![1, 2, 3, 4, 5])); --- # min in arrow::compute - Rust [Docs.rs](https://docs.rs/) * [arrow-58.1.0](https://docs.rs/arrow/latest/arrow/compute/fn.min.html# "Rust implementation of Apache Arrow") * arrow 58.1.0 * [Permalink](https://docs.rs/arrow/58.1.0/arrow/compute/fn.min.html "Get a link to this specific version") * [Docs.rs crate page](https://docs.rs/crate/arrow/latest "See arrow in docs.rs") * [Apache-2.0](https://spdx.org/licenses/Apache-2.0) * Links * [Homepage](https://github.com/apache/arrow-rs) * [Repository](https://github.com/apache/arrow-rs) * [crates.io](https://crates.io/crates/arrow "See arrow in crates.io") * [Source](https://docs.rs/crate/arrow/latest/source/ "Browse source of arrow-58.1.0") * Owners * [andygrove](https://crates.io/users/andygrove) * [kou](https://crates.io/users/kou) * [kszucs](https://crates.io/users/kszucs) * [xhochy](https://crates.io/users/xhochy) * [nevi-me](https://crates.io/users/nevi-me) * [alamb](https://crates.io/users/alamb) * [tustvold](https://crates.io/users/tustvold) * Dependencies * * [arrow-arith ^58.1.0 _normal_](https://docs.rs/arrow-arith/^58.1.0/) * [arrow-array ^58.1.0 _normal_](https://docs.rs/arrow-array/^58.1.0/) * [arrow-buffer ^58.1.0 _normal_](https://docs.rs/arrow-buffer/^58.1.0/) * [arrow-cast ^58.1.0 _normal_](https://docs.rs/arrow-cast/^58.1.0/) * [arrow-csv ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-csv/^58.1.0/) * [arrow-data ^58.1.0 _normal_](https://docs.rs/arrow-data/^58.1.0/) * [arrow-ipc ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-ipc/^58.1.0/) * [arrow-json ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-json/^58.1.0/) * [arrow-ord ^58.1.0 _normal_](https://docs.rs/arrow-ord/^58.1.0/) * [arrow-pyarrow ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-pyarrow/^58.1.0/) * [arrow-row ^58.1.0 _normal_](https://docs.rs/arrow-row/^58.1.0/) * [arrow-schema ^58.1.0 _normal_](https://docs.rs/arrow-schema/^58.1.0/) * [arrow-select ^58.1.0 _normal_](https://docs.rs/arrow-select/^58.1.0/) * [arrow-string ^58.1.0 _normal_](https://docs.rs/arrow-string/^58.1.0/) * [half ^2.1 _normal_ _optional_](https://docs.rs/half/^2.1/) * [rand ^0.9 _normal_ _optional_](https://docs.rs/rand/^0.9/) * [bytes ^1.9 _dev_](https://docs.rs/bytes/^1.9/) * [chrono ^0.4.40 _dev_](https://docs.rs/chrono/^0.4.40/) * [criterion ^0.8.0 _dev_](https://docs.rs/criterion/^0.8.0/) * [half ^2.1 _dev_](https://docs.rs/half/^2.1/) * [memmap2 ^0.9.3 _dev_](https://docs.rs/memmap2/^0.9.3/) * [rand ^0.9 _dev_](https://docs.rs/rand/^0.9/) * [serde ^1.0 _dev_](https://docs.rs/serde/^1.0/) * Versions * [**100%** of the crate is documented](https://docs.rs/crate/arrow/latest) * [Platform](https://docs.rs/arrow/latest/arrow/compute/fn.min.html#) * [x86\_64-unknown-linux-gnu](https://docs.rs/crate/arrow/latest/target-redirect/arrow/compute/fn.min.html) * [Feature flags](https://docs.rs/crate/arrow/latest/features "Browse available feature flags of arrow-58.1.0") * [docs.rs](https://docs.rs/arrow/latest/arrow/compute/fn.min.html#) * [About docs.rs](https://docs.rs/about) * [Badges](https://docs.rs/about/badges) * [Builds](https://docs.rs/about/builds) * [Metadata](https://docs.rs/about/metadata) * [Shorthand URLs](https://docs.rs/about/redirections) * [Download](https://docs.rs/about/download) * [Rustdoc JSON](https://docs.rs/about/rustdoc-json) * [Build queue](https://docs.rs/releases/queue) * [Privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#docs.rs) * [Rust](https://docs.rs/arrow/latest/arrow/compute/fn.min.html#) * [Rust website](https://www.rust-lang.org/) * [The Book](https://doc.rust-lang.org/book/) * [Standard Library API Reference](https://doc.rust-lang.org/std/) * [Rust by Example](https://doc.rust-lang.org/rust-by-example/) * [The Cargo Guide](https://doc.rust-lang.org/cargo/guide/) * [Clippy Documentation](https://doc.rust-lang.org/nightly/clippy) [Skip to main content](https://docs.rs/arrow/latest/arrow/compute/fn.min.html#main-content) [min](https://docs.rs/arrow/latest/arrow/compute/fn.min.html#) --------------------------------------------------------------- [arrow](https://docs.rs/arrow/latest/arrow/index.html) ::[compute](https://docs.rs/arrow/latest/arrow/compute/index.html) Function min Copy item path =========================== [Source](https://docs.rs/arrow-arith/58.1.0/x86_64-unknown-linux-gnu/src/arrow_arith/aggregate.rs.html#943-945) pub fn min( array: &PrimitiveArray, ) -> Option<::Native>where T: ArrowNumericType, ::Native: PartialOrd, Expand description Returns the minimum value in the array, according to the natural order. For floating point arrays any NaN values are considered to be greater than any other non-null value [§](https://docs.rs/arrow/latest/arrow/compute/fn.min.html#example) Example --------------------------------------------------------------------------- let array = Int32Array::from(vec![8, 2, 4]); let result = min(&array); assert_eq!(result, Some(2)); --- # take in arrow::compute - Rust [Docs.rs](https://docs.rs/) * [arrow-58.1.0](https://docs.rs/arrow/latest/arrow/compute/fn.take.html# "Rust implementation of Apache Arrow") * arrow 58.1.0 * [Permalink](https://docs.rs/arrow/58.1.0/arrow/compute/fn.take.html "Get a link to this specific version") * [Docs.rs crate page](https://docs.rs/crate/arrow/latest "See arrow in docs.rs") * [Apache-2.0](https://spdx.org/licenses/Apache-2.0) * Links * [Homepage](https://github.com/apache/arrow-rs) * [Repository](https://github.com/apache/arrow-rs) * [crates.io](https://crates.io/crates/arrow "See arrow in crates.io") * [Source](https://docs.rs/crate/arrow/latest/source/ "Browse source of arrow-58.1.0") * Owners * [andygrove](https://crates.io/users/andygrove) * [kou](https://crates.io/users/kou) * [kszucs](https://crates.io/users/kszucs) * [xhochy](https://crates.io/users/xhochy) * [nevi-me](https://crates.io/users/nevi-me) * [alamb](https://crates.io/users/alamb) * [tustvold](https://crates.io/users/tustvold) * Dependencies * * [arrow-arith ^58.1.0 _normal_](https://docs.rs/arrow-arith/^58.1.0/) * [arrow-array ^58.1.0 _normal_](https://docs.rs/arrow-array/^58.1.0/) * [arrow-buffer ^58.1.0 _normal_](https://docs.rs/arrow-buffer/^58.1.0/) * [arrow-cast ^58.1.0 _normal_](https://docs.rs/arrow-cast/^58.1.0/) * [arrow-csv ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-csv/^58.1.0/) * [arrow-data ^58.1.0 _normal_](https://docs.rs/arrow-data/^58.1.0/) * [arrow-ipc ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-ipc/^58.1.0/) * [arrow-json ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-json/^58.1.0/) * [arrow-ord ^58.1.0 _normal_](https://docs.rs/arrow-ord/^58.1.0/) * [arrow-pyarrow ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-pyarrow/^58.1.0/) * [arrow-row ^58.1.0 _normal_](https://docs.rs/arrow-row/^58.1.0/) * [arrow-schema ^58.1.0 _normal_](https://docs.rs/arrow-schema/^58.1.0/) * [arrow-select ^58.1.0 _normal_](https://docs.rs/arrow-select/^58.1.0/) * [arrow-string ^58.1.0 _normal_](https://docs.rs/arrow-string/^58.1.0/) * [half ^2.1 _normal_ _optional_](https://docs.rs/half/^2.1/) * [rand ^0.9 _normal_ _optional_](https://docs.rs/rand/^0.9/) * [bytes ^1.9 _dev_](https://docs.rs/bytes/^1.9/) * [chrono ^0.4.40 _dev_](https://docs.rs/chrono/^0.4.40/) * [criterion ^0.8.0 _dev_](https://docs.rs/criterion/^0.8.0/) * [half ^2.1 _dev_](https://docs.rs/half/^2.1/) * [memmap2 ^0.9.3 _dev_](https://docs.rs/memmap2/^0.9.3/) * [rand ^0.9 _dev_](https://docs.rs/rand/^0.9/) * [serde ^1.0 _dev_](https://docs.rs/serde/^1.0/) * Versions * [**100%** of the crate is documented](https://docs.rs/crate/arrow/latest) * [Platform](https://docs.rs/arrow/latest/arrow/compute/fn.take.html#) * [x86\_64-unknown-linux-gnu](https://docs.rs/crate/arrow/latest/target-redirect/arrow/compute/fn.take.html) * [Feature flags](https://docs.rs/crate/arrow/latest/features "Browse available feature flags of arrow-58.1.0") * [docs.rs](https://docs.rs/arrow/latest/arrow/compute/fn.take.html#) * [About docs.rs](https://docs.rs/about) * [Badges](https://docs.rs/about/badges) * [Builds](https://docs.rs/about/builds) * [Metadata](https://docs.rs/about/metadata) * [Shorthand URLs](https://docs.rs/about/redirections) * [Download](https://docs.rs/about/download) * [Rustdoc JSON](https://docs.rs/about/rustdoc-json) * [Build queue](https://docs.rs/releases/queue) * [Privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#docs.rs) * [Rust](https://docs.rs/arrow/latest/arrow/compute/fn.take.html#) * [Rust website](https://www.rust-lang.org/) * [The Book](https://doc.rust-lang.org/book/) * [Standard Library API Reference](https://doc.rust-lang.org/std/) * [Rust by Example](https://doc.rust-lang.org/rust-by-example/) * [The Cargo Guide](https://doc.rust-lang.org/cargo/guide/) * [Clippy Documentation](https://doc.rust-lang.org/nightly/clippy) [Skip to main content](https://docs.rs/arrow/latest/arrow/compute/fn.take.html#main-content) [take](https://docs.rs/arrow/latest/arrow/compute/fn.take.html#) ----------------------------------------------------------------- [arrow](https://docs.rs/arrow/latest/arrow/index.html) ::[compute](https://docs.rs/arrow/latest/arrow/compute/index.html) Function take Copy item path ============================ [Source](https://docs.rs/arrow-select/58.1.0/x86_64-unknown-linux-gnu/src/arrow_select/take.rs.html#88-92) pub fn take( values: &dyn Array, indices: &dyn Array, options: Option, ) -> Result, ArrowError> Expand description Take elements by index from [Array](https://docs.rs/arrow/latest/arrow/array/trait.Array.html "trait arrow::array::Array") , creating a new [Array](https://docs.rs/arrow/latest/arrow/array/trait.Array.html "trait arrow::array::Array") from those indexes. ┌─────────────────┐ ┌─────────┐ ┌─────────────────┐ │ A │ │ 0 │ │ A │ ├─────────────────┤ ├─────────┤ ├─────────────────┤ │ D │ │ 2 │ │ B │ ├─────────────────┤ ├─────────┤ take(values, indices) ├─────────────────┤ │ B │ │ 3 │ ─────────────────────────▶ │ C │ ├─────────────────┤ ├─────────┤ ├─────────────────┤ │ C │ │ 1 │ │ D │ ├─────────────────┤ └─────────┘ └─────────────────┘ │ E │ └─────────────────┘ values array indices array result For selecting values by index from multiple arrays see [`crate::interleave`](https://docs.rs/arrow/latest/arrow/compute/kernels/interleave/index.html "mod arrow::compute::kernels::interleave") Note that this kernel, similar to other kernels in this crate, will avoid allocating where not necessary. Consequently the returned array may share buffers with the inputs [§](https://docs.rs/arrow/latest/arrow/compute/fn.take.html#errors) Errors -------------------------------------------------------------------------- This function errors whenever: * An index cannot be casted to `usize` (typically 32 bit architectures) * An index is out of bounds and `options` is set to check bounds. [§](https://docs.rs/arrow/latest/arrow/compute/fn.take.html#safety) Safety -------------------------------------------------------------------------- When `options` is not set to check bounds, taking indexes after `len` will panic. [§](https://docs.rs/arrow/latest/arrow/compute/fn.take.html#see-also) See also ------------------------------------------------------------------------------ * [`BatchCoalescer`](https://docs.rs/arrow/latest/arrow/compute/struct.BatchCoalescer.html "struct arrow::compute::BatchCoalescer") : to filter multiple [`RecordBatch`](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html "struct arrow::array::RecordBatch") and coalesce the results into a single array. [§](https://docs.rs/arrow/latest/arrow/compute/fn.take.html#examples) Examples ------------------------------------------------------------------------------ let values = StringArray::from(vec!["zero", "one", "two"]); // Take items at index 2, and 1: let indices = UInt32Array::from(vec![2, 1]); let taken = take(&values, &indices, None).unwrap(); let taken = taken.as_string::(); assert_eq!(*taken, StringArray::from(vec!["two", "one"])); --- # max in arrow::compute - Rust [Docs.rs](https://docs.rs/) * [arrow-58.1.0](https://docs.rs/arrow/latest/arrow/compute/fn.max.html# "Rust implementation of Apache Arrow") * arrow 58.1.0 * [Permalink](https://docs.rs/arrow/58.1.0/arrow/compute/fn.max.html "Get a link to this specific version") * [Docs.rs crate page](https://docs.rs/crate/arrow/latest "See arrow in docs.rs") * [Apache-2.0](https://spdx.org/licenses/Apache-2.0) * Links * [Homepage](https://github.com/apache/arrow-rs) * [Repository](https://github.com/apache/arrow-rs) * [crates.io](https://crates.io/crates/arrow "See arrow in crates.io") * [Source](https://docs.rs/crate/arrow/latest/source/ "Browse source of arrow-58.1.0") * Owners * [andygrove](https://crates.io/users/andygrove) * [kou](https://crates.io/users/kou) * [kszucs](https://crates.io/users/kszucs) * [xhochy](https://crates.io/users/xhochy) * [nevi-me](https://crates.io/users/nevi-me) * [alamb](https://crates.io/users/alamb) * [tustvold](https://crates.io/users/tustvold) * Dependencies * * [arrow-arith ^58.1.0 _normal_](https://docs.rs/arrow-arith/^58.1.0/) * [arrow-array ^58.1.0 _normal_](https://docs.rs/arrow-array/^58.1.0/) * [arrow-buffer ^58.1.0 _normal_](https://docs.rs/arrow-buffer/^58.1.0/) * [arrow-cast ^58.1.0 _normal_](https://docs.rs/arrow-cast/^58.1.0/) * [arrow-csv ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-csv/^58.1.0/) * [arrow-data ^58.1.0 _normal_](https://docs.rs/arrow-data/^58.1.0/) * [arrow-ipc ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-ipc/^58.1.0/) * [arrow-json ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-json/^58.1.0/) * [arrow-ord ^58.1.0 _normal_](https://docs.rs/arrow-ord/^58.1.0/) * [arrow-pyarrow ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-pyarrow/^58.1.0/) * [arrow-row ^58.1.0 _normal_](https://docs.rs/arrow-row/^58.1.0/) * [arrow-schema ^58.1.0 _normal_](https://docs.rs/arrow-schema/^58.1.0/) * [arrow-select ^58.1.0 _normal_](https://docs.rs/arrow-select/^58.1.0/) * [arrow-string ^58.1.0 _normal_](https://docs.rs/arrow-string/^58.1.0/) * [half ^2.1 _normal_ _optional_](https://docs.rs/half/^2.1/) * [rand ^0.9 _normal_ _optional_](https://docs.rs/rand/^0.9/) * [bytes ^1.9 _dev_](https://docs.rs/bytes/^1.9/) * [chrono ^0.4.40 _dev_](https://docs.rs/chrono/^0.4.40/) * [criterion ^0.8.0 _dev_](https://docs.rs/criterion/^0.8.0/) * [half ^2.1 _dev_](https://docs.rs/half/^2.1/) * [memmap2 ^0.9.3 _dev_](https://docs.rs/memmap2/^0.9.3/) * [rand ^0.9 _dev_](https://docs.rs/rand/^0.9/) * [serde ^1.0 _dev_](https://docs.rs/serde/^1.0/) * Versions * [**100%** of the crate is documented](https://docs.rs/crate/arrow/latest) * [Platform](https://docs.rs/arrow/latest/arrow/compute/fn.max.html#) * [x86\_64-unknown-linux-gnu](https://docs.rs/crate/arrow/latest/target-redirect/arrow/compute/fn.max.html) * [Feature flags](https://docs.rs/crate/arrow/latest/features "Browse available feature flags of arrow-58.1.0") * [docs.rs](https://docs.rs/arrow/latest/arrow/compute/fn.max.html#) * [About docs.rs](https://docs.rs/about) * [Badges](https://docs.rs/about/badges) * [Builds](https://docs.rs/about/builds) * [Metadata](https://docs.rs/about/metadata) * [Shorthand URLs](https://docs.rs/about/redirections) * [Download](https://docs.rs/about/download) * [Rustdoc JSON](https://docs.rs/about/rustdoc-json) * [Build queue](https://docs.rs/releases/queue) * [Privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#docs.rs) * [Rust](https://docs.rs/arrow/latest/arrow/compute/fn.max.html#) * [Rust website](https://www.rust-lang.org/) * [The Book](https://doc.rust-lang.org/book/) * [Standard Library API Reference](https://doc.rust-lang.org/std/) * [Rust by Example](https://doc.rust-lang.org/rust-by-example/) * [The Cargo Guide](https://doc.rust-lang.org/cargo/guide/) * [Clippy Documentation](https://doc.rust-lang.org/nightly/clippy) [Skip to main content](https://docs.rs/arrow/latest/arrow/compute/fn.max.html#main-content) [max](https://docs.rs/arrow/latest/arrow/compute/fn.max.html#) --------------------------------------------------------------- [arrow](https://docs.rs/arrow/latest/arrow/index.html) ::[compute](https://docs.rs/arrow/latest/arrow/compute/index.html) Function max Copy item path =========================== [Source](https://docs.rs/arrow-arith/58.1.0/x86_64-unknown-linux-gnu/src/arrow_arith/aggregate.rs.html#961-963) pub fn max( array: &PrimitiveArray, ) -> Option<::Native>where T: ArrowNumericType, ::Native: PartialOrd, Expand description Returns the maximum value in the array, according to the natural order. For floating point arrays any NaN values are considered to be greater than any other non-null value [§](https://docs.rs/arrow/latest/arrow/compute/fn.max.html#example) Example --------------------------------------------------------------------------- let array = Int32Array::from(vec![4, 8, 2]); let result = max(&array); assert_eq!(result, Some(8)); --- # sum in arrow::compute - Rust [Docs.rs](https://docs.rs/) * [arrow-58.1.0](https://docs.rs/arrow/latest/arrow/compute/fn.sum.html# "Rust implementation of Apache Arrow") * arrow 58.1.0 * [Permalink](https://docs.rs/arrow/58.1.0/arrow/compute/fn.sum.html "Get a link to this specific version") * [Docs.rs crate page](https://docs.rs/crate/arrow/latest "See arrow in docs.rs") * [Apache-2.0](https://spdx.org/licenses/Apache-2.0) * Links * [Homepage](https://github.com/apache/arrow-rs) * [Repository](https://github.com/apache/arrow-rs) * [crates.io](https://crates.io/crates/arrow "See arrow in crates.io") * [Source](https://docs.rs/crate/arrow/latest/source/ "Browse source of arrow-58.1.0") * Owners * [andygrove](https://crates.io/users/andygrove) * [kou](https://crates.io/users/kou) * [kszucs](https://crates.io/users/kszucs) * [xhochy](https://crates.io/users/xhochy) * [nevi-me](https://crates.io/users/nevi-me) * [alamb](https://crates.io/users/alamb) * [tustvold](https://crates.io/users/tustvold) * Dependencies * * [arrow-arith ^58.1.0 _normal_](https://docs.rs/arrow-arith/^58.1.0/) * [arrow-array ^58.1.0 _normal_](https://docs.rs/arrow-array/^58.1.0/) * [arrow-buffer ^58.1.0 _normal_](https://docs.rs/arrow-buffer/^58.1.0/) * [arrow-cast ^58.1.0 _normal_](https://docs.rs/arrow-cast/^58.1.0/) * [arrow-csv ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-csv/^58.1.0/) * [arrow-data ^58.1.0 _normal_](https://docs.rs/arrow-data/^58.1.0/) * [arrow-ipc ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-ipc/^58.1.0/) * [arrow-json ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-json/^58.1.0/) * [arrow-ord ^58.1.0 _normal_](https://docs.rs/arrow-ord/^58.1.0/) * [arrow-pyarrow ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-pyarrow/^58.1.0/) * [arrow-row ^58.1.0 _normal_](https://docs.rs/arrow-row/^58.1.0/) * [arrow-schema ^58.1.0 _normal_](https://docs.rs/arrow-schema/^58.1.0/) * [arrow-select ^58.1.0 _normal_](https://docs.rs/arrow-select/^58.1.0/) * [arrow-string ^58.1.0 _normal_](https://docs.rs/arrow-string/^58.1.0/) * [half ^2.1 _normal_ _optional_](https://docs.rs/half/^2.1/) * [rand ^0.9 _normal_ _optional_](https://docs.rs/rand/^0.9/) * [bytes ^1.9 _dev_](https://docs.rs/bytes/^1.9/) * [chrono ^0.4.40 _dev_](https://docs.rs/chrono/^0.4.40/) * [criterion ^0.8.0 _dev_](https://docs.rs/criterion/^0.8.0/) * [half ^2.1 _dev_](https://docs.rs/half/^2.1/) * [memmap2 ^0.9.3 _dev_](https://docs.rs/memmap2/^0.9.3/) * [rand ^0.9 _dev_](https://docs.rs/rand/^0.9/) * [serde ^1.0 _dev_](https://docs.rs/serde/^1.0/) * Versions * [**100%** of the crate is documented](https://docs.rs/crate/arrow/latest) * [Platform](https://docs.rs/arrow/latest/arrow/compute/fn.sum.html#) * [x86\_64-unknown-linux-gnu](https://docs.rs/crate/arrow/latest/target-redirect/arrow/compute/fn.sum.html) * [Feature flags](https://docs.rs/crate/arrow/latest/features "Browse available feature flags of arrow-58.1.0") * [docs.rs](https://docs.rs/arrow/latest/arrow/compute/fn.sum.html#) * [About docs.rs](https://docs.rs/about) * [Badges](https://docs.rs/about/badges) * [Builds](https://docs.rs/about/builds) * [Metadata](https://docs.rs/about/metadata) * [Shorthand URLs](https://docs.rs/about/redirections) * [Download](https://docs.rs/about/download) * [Rustdoc JSON](https://docs.rs/about/rustdoc-json) * [Build queue](https://docs.rs/releases/queue) * [Privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#docs.rs) * [Rust](https://docs.rs/arrow/latest/arrow/compute/fn.sum.html#) * [Rust website](https://www.rust-lang.org/) * [The Book](https://doc.rust-lang.org/book/) * [Standard Library API Reference](https://doc.rust-lang.org/std/) * [Rust by Example](https://doc.rust-lang.org/rust-by-example/) * [The Cargo Guide](https://doc.rust-lang.org/cargo/guide/) * [Clippy Documentation](https://doc.rust-lang.org/nightly/clippy) [Skip to main content](https://docs.rs/arrow/latest/arrow/compute/fn.sum.html#main-content) [sum](https://docs.rs/arrow/latest/arrow/compute/fn.sum.html#) --------------------------------------------------------------- [arrow](https://docs.rs/arrow/latest/arrow/index.html) ::[compute](https://docs.rs/arrow/latest/arrow/compute/index.html) Function sum Copy item path =========================== [Source](https://docs.rs/arrow-arith/58.1.0/x86_64-unknown-linux-gnu/src/arrow_arith/aggregate.rs.html#925-927) pub fn sum( array: &PrimitiveArray, ) -> Option<::Native>where T: ArrowNumericType, ::Native: ArrowNativeTypeOp, Expand description Returns the sum of values in the primitive array. Returns `None` if the array is empty or only contains null values. This doesn’t detect overflow in release mode by default. Once overflowing, the result will wrap around. For an overflow-checking variant, use [`sum_checked`](https://docs.rs/arrow/latest/arrow/compute/fn.sum_checked.html "fn arrow::compute::sum_checked") instead. --- # RecordBatch in arrow::array - Rust [Docs.rs](https://docs.rs/) * [arrow-58.1.0](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html# "Rust implementation of Apache Arrow") * arrow 58.1.0 * [Permalink](https://docs.rs/arrow/58.1.0/arrow/array/struct.RecordBatch.html "Get a link to this specific version") * [Docs.rs crate page](https://docs.rs/crate/arrow/latest "See arrow in docs.rs") * [Apache-2.0](https://spdx.org/licenses/Apache-2.0) * Links * [Homepage](https://github.com/apache/arrow-rs) * [Repository](https://github.com/apache/arrow-rs) * [crates.io](https://crates.io/crates/arrow "See arrow in crates.io") * [Source](https://docs.rs/crate/arrow/latest/source/ "Browse source of arrow-58.1.0") * Owners * [andygrove](https://crates.io/users/andygrove) * [kou](https://crates.io/users/kou) * [kszucs](https://crates.io/users/kszucs) * [xhochy](https://crates.io/users/xhochy) * [nevi-me](https://crates.io/users/nevi-me) * [alamb](https://crates.io/users/alamb) * [tustvold](https://crates.io/users/tustvold) * Dependencies * * [arrow-arith ^58.1.0 _normal_](https://docs.rs/arrow-arith/^58.1.0/) * [arrow-array ^58.1.0 _normal_](https://docs.rs/arrow-array/^58.1.0/) * [arrow-buffer ^58.1.0 _normal_](https://docs.rs/arrow-buffer/^58.1.0/) * [arrow-cast ^58.1.0 _normal_](https://docs.rs/arrow-cast/^58.1.0/) * [arrow-csv ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-csv/^58.1.0/) * [arrow-data ^58.1.0 _normal_](https://docs.rs/arrow-data/^58.1.0/) * [arrow-ipc ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-ipc/^58.1.0/) * [arrow-json ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-json/^58.1.0/) * [arrow-ord ^58.1.0 _normal_](https://docs.rs/arrow-ord/^58.1.0/) * [arrow-pyarrow ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-pyarrow/^58.1.0/) * [arrow-row ^58.1.0 _normal_](https://docs.rs/arrow-row/^58.1.0/) * [arrow-schema ^58.1.0 _normal_](https://docs.rs/arrow-schema/^58.1.0/) * [arrow-select ^58.1.0 _normal_](https://docs.rs/arrow-select/^58.1.0/) * [arrow-string ^58.1.0 _normal_](https://docs.rs/arrow-string/^58.1.0/) * [half ^2.1 _normal_ _optional_](https://docs.rs/half/^2.1/) * [rand ^0.9 _normal_ _optional_](https://docs.rs/rand/^0.9/) * [bytes ^1.9 _dev_](https://docs.rs/bytes/^1.9/) * [chrono ^0.4.40 _dev_](https://docs.rs/chrono/^0.4.40/) * [criterion ^0.8.0 _dev_](https://docs.rs/criterion/^0.8.0/) * [half ^2.1 _dev_](https://docs.rs/half/^2.1/) * [memmap2 ^0.9.3 _dev_](https://docs.rs/memmap2/^0.9.3/) * [rand ^0.9 _dev_](https://docs.rs/rand/^0.9/) * [serde ^1.0 _dev_](https://docs.rs/serde/^1.0/) * Versions * [**100%** of the crate is documented](https://docs.rs/crate/arrow/latest) * [Platform](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html#) * [x86\_64-unknown-linux-gnu](https://docs.rs/crate/arrow/latest/target-redirect/arrow/array/struct.RecordBatch.html) * [Feature flags](https://docs.rs/crate/arrow/latest/features "Browse available feature flags of arrow-58.1.0") * [docs.rs](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html#) * [About docs.rs](https://docs.rs/about) * [Badges](https://docs.rs/about/badges) * [Builds](https://docs.rs/about/builds) * [Metadata](https://docs.rs/about/metadata) * [Shorthand URLs](https://docs.rs/about/redirections) * [Download](https://docs.rs/about/download) * [Rustdoc JSON](https://docs.rs/about/rustdoc-json) * [Build queue](https://docs.rs/releases/queue) * [Privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#docs.rs) * [Rust](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html#) * [Rust website](https://www.rust-lang.org/) * [The Book](https://doc.rust-lang.org/book/) * [Standard Library API Reference](https://doc.rust-lang.org/std/) * [Rust by Example](https://doc.rust-lang.org/rust-by-example/) * [The Cargo Guide](https://doc.rust-lang.org/cargo/guide/) * [Clippy Documentation](https://doc.rust-lang.org/nightly/clippy) [Skip to main content](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html#main-content) [RecordBatch](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html#) --------------------------------------------------------------------------------- [arrow](https://docs.rs/arrow/latest/arrow/index.html) ::[array](https://docs.rs/arrow/latest/arrow/array/index.html) Struct RecordBatch Copy item path ================================= [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/record_batch.rs.html#224) pub struct RecordBatch { /* private fields */ } Expand description A two-dimensional batch of column-oriented data with a defined [schema](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html "struct arrow::datatypes::Schema") . A `RecordBatch` is a two-dimensional dataset of a number of contiguous arrays, each the same length. A record batch has a schema which must match its arrays’ datatypes. Record batches are a convenient unit of work for various serialization and computation functions, possibly incremental. Use the [`record_batch!`](https://docs.rs/arrow/latest/arrow/array/macro.record_batch.html "macro arrow::array::record_batch") macro to create a [`RecordBatch`](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html "struct arrow::array::RecordBatch") from literal slice of values, useful for rapid prototyping and testing. Example: use arrow_array::record_batch; let batch = record_batch!( ("a", Int32, [1, 2, 3]), ("b", Float64, [Some(4.0), None, Some(5.0)]), ("c", Utf8, ["alpha", "beta", "gamma"]) ); Implementations[§](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html#implementations) ----------------------------------------------------------------------------------------------------- [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/record_batch.rs.html#234) [§](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html#impl-RecordBatch) ### impl [RecordBatch](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html "struct arrow::array::RecordBatch") [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/record_batch.rs.html#263) #### pub fn [try\_new](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html#method.try_new) ( schema: [Arc](https://doc.rust-lang.org/nightly/alloc/sync/struct.Arc.html "struct alloc::sync::Arc") <[Schema](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html "struct arrow::datatypes::Schema") \>, columns: [Vec](https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html "struct alloc::vec::Vec") <[Arc](https://doc.rust-lang.org/nightly/alloc/sync/struct.Arc.html "struct alloc::sync::Arc") >, ) -> [Result](https://doc.rust-lang.org/nightly/core/result/enum.Result.html "enum core::result::Result") <[RecordBatch](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html "struct arrow::array::RecordBatch") , [ArrowError](https://docs.rs/arrow/latest/arrow/error/enum.ArrowError.html "enum arrow::error::ArrowError") \> Creates a `RecordBatch` from a schema and columns. Expects the following: * `!columns.is_empty()` * `schema.fields.len() == columns.len()` * `schema.fields[i].data_type() == columns[i].data_type()` * `columns[i].len() == columns[j].len()` If the conditions are not met, an error is returned. ##### [§](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html#example) Example let id_array = Int32Array::from(vec![1, 2, 3, 4, 5]); let schema = Schema::new(vec![\ Field::new("id", DataType::Int32, false)\ ]); let batch = RecordBatch::try_new( Arc::new(schema), vec![Arc::new(id_array)] ).unwrap(); [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/record_batch.rs.html#283-287) #### pub unsafe fn [new\_unchecked](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html#method.new_unchecked) ( schema: [Arc](https://doc.rust-lang.org/nightly/alloc/sync/struct.Arc.html "struct alloc::sync::Arc") <[Schema](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html "struct arrow::datatypes::Schema") \>, columns: [Vec](https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html "struct alloc::vec::Vec") <[Arc](https://doc.rust-lang.org/nightly/alloc/sync/struct.Arc.html "struct alloc::sync::Arc") >, row\_count: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) , ) -> [RecordBatch](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html "struct arrow::array::RecordBatch") Creates a `RecordBatch` from a schema and columns, without validation. See [`Self::try_new`](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html#method.try_new "associated function arrow::array::RecordBatch::try_new") for the checked version. ##### [§](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html#safety) Safety Expects the following: * `schema.fields.len() == columns.len()` * `schema.fields[i].data_type() == columns[i].data_type()` * `columns[i].len() == row_count` Note: if the schema does not match the underlying data exactly, it can lead to undefined behavior, for example, via conversion to a `StructArray`, which in turn could lead to incorrect access. [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/record_batch.rs.html#299-303) #### pub fn [try\_new\_with\_options](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html#method.try_new_with_options) ( schema: [Arc](https://doc.rust-lang.org/nightly/alloc/sync/struct.Arc.html "struct alloc::sync::Arc") <[Schema](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html "struct arrow::datatypes::Schema") \>, columns: [Vec](https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html "struct alloc::vec::Vec") <[Arc](https://doc.rust-lang.org/nightly/alloc/sync/struct.Arc.html "struct alloc::sync::Arc") >, options: &[RecordBatchOptions](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatchOptions.html "struct arrow::array::RecordBatchOptions") , ) -> [Result](https://doc.rust-lang.org/nightly/core/result/enum.Result.html "enum core::result::Result") <[RecordBatch](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html "struct arrow::array::RecordBatch") , [ArrowError](https://docs.rs/arrow/latest/arrow/error/enum.ArrowError.html "enum arrow::error::ArrowError") \> Creates a `RecordBatch` from a schema and columns, with additional options, such as whether to strictly validate field names. See [`RecordBatch::try_new`](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html#method.try_new "associated function arrow::array::RecordBatch::try_new") for the expected conditions. [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/record_batch.rs.html#308) #### pub fn [new\_empty](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html#method.new_empty) (schema: [Arc](https://doc.rust-lang.org/nightly/alloc/sync/struct.Arc.html "struct alloc::sync::Arc") <[Schema](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html "struct arrow::datatypes::Schema") \>) -> [RecordBatch](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html "struct arrow::array::RecordBatch") Creates a new empty [`RecordBatch`](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html "struct arrow::array::RecordBatch") . [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/record_batch.rs.html#397) #### pub fn [into\_parts](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html#method.into_parts) (self) -> ([Arc](https://doc.rust-lang.org/nightly/alloc/sync/struct.Arc.html "struct alloc::sync::Arc") <[Schema](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html "struct arrow::datatypes::Schema") \>, [Vec](https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html "struct alloc::vec::Vec") <[Arc](https://doc.rust-lang.org/nightly/alloc/sync/struct.Arc.html "struct alloc::sync::Arc") >, [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) ) Return the schema, columns and row count of this [`RecordBatch`](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html "struct arrow::array::RecordBatch") [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/record_batch.rs.html#407) #### pub fn [with\_schema](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html#method.with_schema) (self, schema: [Arc](https://doc.rust-lang.org/nightly/alloc/sync/struct.Arc.html "struct alloc::sync::Arc") <[Schema](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html "struct arrow::datatypes::Schema") \>) -> [Result](https://doc.rust-lang.org/nightly/core/result/enum.Result.html "enum core::result::Result") <[RecordBatch](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html "struct arrow::array::RecordBatch") , [ArrowError](https://docs.rs/arrow/latest/arrow/error/enum.ArrowError.html "enum arrow::error::ArrowError") \> Override the schema of this [`RecordBatch`](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html "struct arrow::array::RecordBatch") Returns an error if `schema` is not a superset of the current schema as determined by [`Schema::contains`](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html#method.contains "method arrow::datatypes::Schema::contains") See also [`Self::schema_metadata_mut`](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html#method.schema_metadata_mut "method arrow::array::RecordBatch::schema_metadata_mut") . [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/record_batch.rs.html#423) #### pub fn [schema](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html#method.schema) (&self) -> [Arc](https://doc.rust-lang.org/nightly/alloc/sync/struct.Arc.html "struct alloc::sync::Arc") <[Schema](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html "struct arrow::datatypes::Schema") \> Returns the [`Schema`](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html "struct arrow::datatypes::Schema") of the record batch. [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/record_batch.rs.html#428) #### pub fn [schema\_ref](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html#method.schema_ref) (&self) -> &[Arc](https://doc.rust-lang.org/nightly/alloc/sync/struct.Arc.html "struct alloc::sync::Arc") <[Schema](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html "struct arrow::datatypes::Schema") \> Returns a reference to the [`Schema`](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html "struct arrow::datatypes::Schema") of the record batch. [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/record_batch.rs.html#449) #### pub fn [schema\_metadata\_mut](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html#method.schema_metadata_mut) (&mut self) -> &mut [HashMap](https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html "struct std::collections::hash::map::HashMap") <[String](https://doc.rust-lang.org/nightly/alloc/string/struct.String.html "struct alloc::string::String") , [String](https://doc.rust-lang.org/nightly/alloc/string/struct.String.html "struct alloc::string::String") \> Mutable access to the metadata of the schema. This allows you to modify [`Schema::metadata`](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html#method.metadata "method arrow::datatypes::Schema::metadata") of [`Self::schema`](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html#method.schema "method arrow::array::RecordBatch::schema") in a convenient and fast way. Note this will clone the entire underlying `Schema` object if it is currently shared ##### [§](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html#example-1) Example let mut batch = record_batch!(("a", Int32, [1, 2, 3])).unwrap(); // Initially, the metadata is empty assert!(batch.schema().metadata().get("key").is_none()); // Insert a key-value pair into the metadata batch.schema_metadata_mut().insert("key".into(), "value".into()); assert_eq!(batch.schema().metadata().get("key"), Some(&String::from("value"))); [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/record_batch.rs.html#455) #### pub fn [project](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html#method.project) (&self, indices: &\[[usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html)\ \]) -> [Result](https://doc.rust-lang.org/nightly/core/result/enum.Result.html "enum core::result::Result") <[RecordBatch](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html "struct arrow::array::RecordBatch") , [ArrowError](https://docs.rs/arrow/latest/arrow/error/enum.ArrowError.html "enum arrow::error::ArrowError") \> Projects the schema onto the specified columns [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/record_batch.rs.html#541) #### pub fn [normalize](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html#method.normalize) ( &self, separator: &[str](https://doc.rust-lang.org/nightly/std/primitive.str.html) , max\_level: [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <[usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) \>, ) -> [Result](https://doc.rust-lang.org/nightly/core/result/enum.Result.html "enum core::result::Result") <[RecordBatch](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html "struct arrow::array::RecordBatch") , [ArrowError](https://docs.rs/arrow/latest/arrow/error/enum.ArrowError.html "enum arrow::error::ArrowError") \> Normalize a semi-structured [`RecordBatch`](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html "struct arrow::array::RecordBatch") into a flat table. Nested [`Field`](https://docs.rs/arrow/latest/arrow/datatypes/struct.Field.html "struct arrow::datatypes::Field") s will generate names separated by `separator`, up to a depth of `max_level` (unlimited if `None`). e.g. given a [`RecordBatch`](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html "struct arrow::array::RecordBatch") with schema: "foo": StructArray<"bar": Utf8> A separator of `"."` would generate a batch with the schema: "foo.bar": Utf8 Note that giving a depth of `Some(0)` to `max_level` is the same as passing in `None`; it will be treated as unlimited. ##### [§](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html#example-2) Example let animals: ArrayRef = Arc::new(StringArray::from(vec!["Parrot", ""])); let n_legs: ArrayRef = Arc::new(Int64Array::from(vec![Some(2), Some(4)])); let animals_field = Arc::new(Field::new("animals", DataType::Utf8, true)); let n_legs_field = Arc::new(Field::new("n_legs", DataType::Int64, true)); let a = Arc::new(StructArray::from(vec![\ (animals_field.clone(), Arc::new(animals.clone()) as ArrayRef),\ (n_legs_field.clone(), Arc::new(n_legs.clone()) as ArrayRef),\ ])); let schema = Schema::new(vec![\ Field::new(\ "a",\ DataType::Struct(Fields::from(vec![animals_field, n_legs_field])),\ false,\ )\ ]); let normalized = RecordBatch::try_new(Arc::new(schema), vec![a]) .expect("valid conversion") .normalize(".", None) .expect("valid normalization"); let expected = RecordBatch::try_from_iter_with_nullable(vec![\ ("a.animals", animals.clone(), true),\ ("a.n_legs", n_legs.clone(), true),\ ]) .expect("valid conversion"); assert_eq!(expected, normalized); [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/record_batch.rs.html#602) #### pub fn [num\_columns](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html#method.num_columns) (&self) -> [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) Returns the number of columns in the record batch. ##### [§](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html#example-3) Example let id_array = Int32Array::from(vec![1, 2, 3, 4, 5]); let schema = Schema::new(vec![\ Field::new("id", DataType::Int32, false)\ ]); let batch = RecordBatch::try_new(Arc::new(schema), vec![Arc::new(id_array)]).unwrap(); assert_eq!(batch.num_columns(), 1); [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/record_batch.rs.html#624) #### pub fn [num\_rows](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html#method.num_rows) (&self) -> [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) Returns the number of rows in each column. ##### [§](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html#example-4) Example let id_array = Int32Array::from(vec![1, 2, 3, 4, 5]); let schema = Schema::new(vec![\ Field::new("id", DataType::Int32, false)\ ]); let batch = RecordBatch::try_new(Arc::new(schema), vec![Arc::new(id_array)]).unwrap(); assert_eq!(batch.num_rows(), 5); [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/record_batch.rs.html#633) #### pub fn [column](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html#method.column) (&self, index: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) ) -> &[Arc](https://doc.rust-lang.org/nightly/alloc/sync/struct.Arc.html "struct alloc::sync::Arc") Get a reference to a column’s array by index. ##### [§](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html#panics) Panics Panics if `index` is outside of `0..num_columns`. [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/record_batch.rs.html#638) #### pub fn [column\_by\_name](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html#method.column_by_name) (&self, name: &[str](https://doc.rust-lang.org/nightly/std/primitive.str.html) ) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <&[Arc](https://doc.rust-lang.org/nightly/alloc/sync/struct.Arc.html "struct alloc::sync::Arc") > Get a reference to a column’s array by name. [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/record_batch.rs.html#645) #### pub fn [columns](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html#method.columns) (&self) -> &\[[Arc](https://doc.rust-lang.org/nightly/alloc/sync/struct.Arc.html "struct alloc::sync::Arc")\ \] Get a reference to all columns in the record batch. [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/record_batch.rs.html#676) #### pub fn [remove\_column](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html#method.remove_column) (&mut self, index: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) ) -> [Arc](https://doc.rust-lang.org/nightly/alloc/sync/struct.Arc.html "struct alloc::sync::Arc") Remove column by index and return it. Return the `ArrayRef` if the column is removed. ##### [§](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html#panics-1) Panics Panics if \`index\`\` out of bounds. ##### [§](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html#example-5) Example use std::sync::Arc; use arrow_array::{BooleanArray, Int32Array, RecordBatch}; use arrow_schema::{DataType, Field, Schema}; let id_array = Int32Array::from(vec![1, 2, 3, 4, 5]); let bool_array = BooleanArray::from(vec![true, false, false, true, true]); let schema = Schema::new(vec![\ Field::new("id", DataType::Int32, false),\ Field::new("bool", DataType::Boolean, false),\ ]); let mut batch = RecordBatch::try_new(Arc::new(schema), vec![Arc::new(id_array), Arc::new(bool_array)]).unwrap(); let removed_column = batch.remove_column(0); assert_eq!(removed_column.as_any().downcast_ref::().unwrap(), &Int32Array::from(vec![1, 2, 3, 4, 5])); assert_eq!(batch.num_columns(), 1); [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/record_batch.rs.html#689) #### pub fn [slice](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html#method.slice) (&self, offset: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) , length: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) ) -> [RecordBatch](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html "struct arrow::array::RecordBatch") Return a new RecordBatch where each column is sliced according to `offset` and `length` ##### [§](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html#panics-2) Panics Panics if `offset` with `length` is greater than column length. [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/record_batch.rs.html#741-744) #### pub fn [try\_from\_iter](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html#method.try_from_iter) (value: I) -> [Result](https://doc.rust-lang.org/nightly/core/result/enum.Result.html "enum core::result::Result") <[RecordBatch](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html "struct arrow::array::RecordBatch") , [ArrowError](https://docs.rs/arrow/latest/arrow/error/enum.ArrowError.html "enum arrow::error::ArrowError") \> where I: [IntoIterator](https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html "trait core::iter::traits::collect::IntoIterator") )>, F: [AsRef](https://doc.rust-lang.org/nightly/core/convert/trait.AsRef.html "trait core::convert::AsRef") <[str](https://doc.rust-lang.org/nightly/std/primitive.str.html) \>, Create a `RecordBatch` from an iterable list of pairs of the form `(field_name, array)`, with the same requirements on fields and arrays as [`RecordBatch::try_new`](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html#method.try_new "associated function arrow::array::RecordBatch::try_new") . This method is often used to create a single `RecordBatch` from arrays, e.g. for testing. The resulting schema is marked as nullable for each column if the array for that column is has any nulls. To explicitly specify nullibility, use [`RecordBatch::try_from_iter_with_nullable`](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html#method.try_from_iter_with_nullable "associated function arrow::array::RecordBatch::try_from_iter_with_nullable") Example: let a: ArrayRef = Arc::new(Int32Array::from(vec![1, 2])); let b: ArrayRef = Arc::new(StringArray::from(vec!["a", "b"])); let record_batch = RecordBatch::try_from_iter(vec![\ ("a", a),\ ("b", b),\ ]); Another way to quickly create a [`RecordBatch`](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html "struct arrow::array::RecordBatch") is to use the [`record_batch!`](https://docs.rs/arrow/latest/arrow/array/macro.record_batch.html "macro arrow::array::record_batch") macro, which is particularly helpful for rapid prototyping and testing. Example: use arrow_array::record_batch; let batch = record_batch!( ("a", Int32, [1, 2, 3]), ("b", Float64, [Some(4.0), None, Some(5.0)]), ("c", Utf8, ["alpha", "beta", "gamma"]) ); [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/record_batch.rs.html#778-781) #### pub fn [try\_from\_iter\_with\_nullable](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html#method.try_from_iter_with_nullable) ( value: I, ) -> [Result](https://doc.rust-lang.org/nightly/core/result/enum.Result.html "enum core::result::Result") <[RecordBatch](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html "struct arrow::array::RecordBatch") , [ArrowError](https://docs.rs/arrow/latest/arrow/error/enum.ArrowError.html "enum arrow::error::ArrowError") \> where I: [IntoIterator](https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html "trait core::iter::traits::collect::IntoIterator") , [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) )>, F: [AsRef](https://doc.rust-lang.org/nightly/core/convert/trait.AsRef.html "trait core::convert::AsRef") <[str](https://doc.rust-lang.org/nightly/std/primitive.str.html) \>, Create a `RecordBatch` from an iterable list of tuples of the form `(field_name, array, nullable)`, with the same requirements on fields and arrays as [`RecordBatch::try_new`](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html#method.try_new "associated function arrow::array::RecordBatch::try_new") . This method is often used to create a single `RecordBatch` from arrays, e.g. for testing. Example: let a: ArrayRef = Arc::new(Int32Array::from(vec![1, 2])); let b: ArrayRef = Arc::new(StringArray::from(vec![Some("a"), Some("b")])); // Note neither `a` nor `b` has any actual nulls, but we mark // b an nullable let record_batch = RecordBatch::try_from_iter_with_nullable(vec![\ ("a", a, false),\ ("b", b, true),\ ]); [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/record_batch.rs.html#806) #### pub fn [claim](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html#method.claim) (&self, pool: &dyn [MemoryPool](https://docs.rs/arrow-buffer/58.1.0/x86_64-unknown-linux-gnu/arrow_buffer/pool/trait.MemoryPool.html "trait arrow_buffer::pool::MemoryPool") ) Available on **crate feature `pool`** only. Registers all buffers in this record batch with the provided [`MemoryPool`](https://docs.rs/arrow-buffer/58.1.0/x86_64-unknown-linux-gnu/arrow_buffer/pool/trait.MemoryPool.html "trait arrow_buffer::pool::MemoryPool") . This claims memory for all columns in the batch by calling [`Array::claim`](https://docs.rs/arrow/latest/arrow/array/trait.Array.html#method.claim "method arrow::array::Array::claim") on each column. [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/record_batch.rs.html#818) #### pub fn [get\_array\_memory\_size](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html#method.get_array_memory_size) (&self) -> [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) Returns the total number of bytes of memory occupied physically by this batch. Note that this does not always correspond to the exact memory usage of a `RecordBatch` (might overestimate), since multiple columns can share the same buffers or slices thereof, the memory used by the shared buffers might be counted multiple times. Trait Implementations[§](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html#trait-implementations) ----------------------------------------------------------------------------------------------------------------- [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/record_batch.rs.html#223) [§](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html#impl-Clone-for-RecordBatch) ### impl [Clone](https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html "trait core::clone::Clone") for [RecordBatch](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html "struct arrow::array::RecordBatch") [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/record_batch.rs.html#223) [§](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html#method.clone) #### fn [clone](https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone) (&self) -> [RecordBatch](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html "struct arrow::array::RecordBatch") Returns a duplicate of the value. [Read more](https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone) 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/clone.rs.html#245-247) [§](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html#method.clone_from) #### fn [clone\_from](https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from) (&mut self, source: &Self) Performs copy-assignment from `source`. [Read more](https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from) [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/record_batch.rs.html#223) [§](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html#impl-Debug-for-RecordBatch) ### impl [Debug](https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html "trait core::fmt::Debug") for [RecordBatch](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html "struct arrow::array::RecordBatch") [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/record_batch.rs.html#223) [§](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html#method.fmt) #### fn [fmt](https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt) (&self, f: &mut [Formatter](https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html "struct core::fmt::Formatter") <'\_>) -> [Result](https://doc.rust-lang.org/nightly/core/result/enum.Result.html "enum core::result::Result") <[()](https://doc.rust-lang.org/nightly/std/primitive.unit.html) , [Error](https://doc.rust-lang.org/nightly/core/fmt/struct.Error.html "struct core::fmt::Error") \> Formats the value using the given formatter. [Read more](https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt) [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/record_batch.rs.html#879) [§](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html#impl-From%3C%26StructArray%3E-for-RecordBatch) ### impl [From](https://doc.rust-lang.org/nightly/core/convert/trait.From.html "trait core::convert::From") <&[StructArray](https://docs.rs/arrow/latest/arrow/array/struct.StructArray.html "struct arrow::array::StructArray") \> for [RecordBatch](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html "struct arrow::array::RecordBatch") [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/record_batch.rs.html#880) [§](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html#method.from-2) #### fn [from](https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from) (struct\_array: &[StructArray](https://docs.rs/arrow/latest/arrow/array/struct.StructArray.html "struct arrow::array::StructArray") ) -> [RecordBatch](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html "struct arrow::array::RecordBatch") Converts to this type from the input type. [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/struct_array.rs.html#522) [§](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html#impl-From%3CRecordBatch%3E-for-StructArray) ### impl [From](https://doc.rust-lang.org/nightly/core/convert/trait.From.html "trait core::convert::From") <[RecordBatch](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html "struct arrow::array::RecordBatch") \> for [StructArray](https://docs.rs/arrow/latest/arrow/array/struct.StructArray.html "struct arrow::array::StructArray") [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/struct_array.rs.html#523) [§](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html#method.from) #### fn [from](https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from) (value: [RecordBatch](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html "struct arrow::array::RecordBatch") ) -> [StructArray](https://docs.rs/arrow/latest/arrow/array/struct.StructArray.html "struct arrow::array::StructArray") Converts to this type from the input type. [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/record_batch.rs.html#861) [§](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html#impl-From%3CStructArray%3E-for-RecordBatch) ### impl [From](https://doc.rust-lang.org/nightly/core/convert/trait.From.html "trait core::convert::From") <[StructArray](https://docs.rs/arrow/latest/arrow/array/struct.StructArray.html "struct arrow::array::StructArray") \> for [RecordBatch](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html "struct arrow::array::RecordBatch") [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/record_batch.rs.html#862) [§](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html#method.from-1) #### fn [from](https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from) (value: [StructArray](https://docs.rs/arrow/latest/arrow/array/struct.StructArray.html "struct arrow::array::StructArray") ) -> [RecordBatch](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html "struct arrow::array::RecordBatch") Converts to this type from the input type. [Source](https://docs.rs/arrow-pyarrow/58.1.0/x86_64-unknown-linux-gnu/src/arrow_pyarrow/lib.rs.html#360) [§](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html#impl-FromPyArrow-for-RecordBatch) ### impl [FromPyArrow](https://docs.rs/arrow-pyarrow/58.1.0/x86_64-unknown-linux-gnu/arrow_pyarrow/trait.FromPyArrow.html "trait arrow_pyarrow::FromPyArrow") for [RecordBatch](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html "struct arrow::array::RecordBatch") [Source](https://docs.rs/arrow-pyarrow/58.1.0/x86_64-unknown-linux-gnu/src/arrow_pyarrow/lib.rs.html#361) [§](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html#method.from_pyarrow_bound) #### fn [from\_pyarrow\_bound](https://docs.rs/arrow-pyarrow/58.1.0/x86_64-unknown-linux-gnu/arrow_pyarrow/trait.FromPyArrow.html#tymethod.from_pyarrow_bound) (value: &[Bound](https://docs.rs/pyo3/0.28.2/x86_64-unknown-linux-gnu/pyo3/instance/struct.Bound.html "struct pyo3::instance::Bound") <'\_, [PyAny](https://docs.rs/pyo3/0.28.2/x86_64-unknown-linux-gnu/pyo3/types/any/struct.PyAny.html "struct pyo3::types::any::PyAny") \>) -> [Result](https://doc.rust-lang.org/nightly/core/result/enum.Result.html "enum core::result::Result") <[RecordBatch](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html "struct arrow::array::RecordBatch") , [PyErr](https://docs.rs/pyo3/0.28.2/x86_64-unknown-linux-gnu/pyo3/err/struct.PyErr.html "struct pyo3::err::PyErr") \> Convert a Python object to an arrow-rs type. [Read more](https://docs.rs/arrow-pyarrow/58.1.0/x86_64-unknown-linux-gnu/arrow_pyarrow/trait.FromPyArrow.html#tymethod.from_pyarrow_bound) [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/record_batch.rs.html#885) [§](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html#impl-Index%3C%26str%3E-for-RecordBatch) ### impl [Index](https://doc.rust-lang.org/nightly/core/ops/index/trait.Index.html "trait core::ops::index::Index") <&[str](https://doc.rust-lang.org/nightly/std/primitive.str.html) \> for [RecordBatch](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html "struct arrow::array::RecordBatch") [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/record_batch.rs.html#893) [§](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html#method.index) #### fn [index](https://doc.rust-lang.org/nightly/core/ops/index/trait.Index.html#tymethod.index) (&self, name: &[str](https://doc.rust-lang.org/nightly/std/primitive.str.html) ) -> &<[RecordBatch](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html "struct arrow::array::RecordBatch") as [Index](https://doc.rust-lang.org/nightly/core/ops/index/trait.Index.html "trait core::ops::index::Index") <&[str](https://doc.rust-lang.org/nightly/std/primitive.str.html) \>>::[Output](https://doc.rust-lang.org/nightly/core/ops/index/trait.Index.html#associatedtype.Output "type core::ops::index::Index::Output") Get a reference to a column’s array by name. ##### [§](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html#panics-3) Panics Panics if the name is not in the schema. [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/record_batch.rs.html#886) [§](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html#associatedtype.Output) #### type [Output](https://doc.rust-lang.org/nightly/core/ops/index/trait.Index.html#associatedtype.Output) = [Arc](https://doc.rust-lang.org/nightly/alloc/sync/struct.Arc.html "struct alloc::sync::Arc") The returned type after indexing. [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/record_batch.rs.html#223) [§](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html#impl-PartialEq-for-RecordBatch) ### impl [PartialEq](https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html "trait core::cmp::PartialEq") for [RecordBatch](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html "struct arrow::array::RecordBatch") [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/record_batch.rs.html#223) [§](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html#method.eq) #### fn [eq](https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq) (&self, other: &[RecordBatch](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html "struct arrow::array::RecordBatch") ) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) Tests for `self` and `other` values to be equal, and is used by `==`. 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#264) [§](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html#method.ne) #### fn [ne](https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne) (&self, other: [&Rhs](https://doc.rust-lang.org/nightly/std/primitive.reference.html) ) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) Tests for `!=`. The default implementation is almost always sufficient, and should not be overridden without very good reason. [Source](https://docs.rs/arrow-pyarrow/58.1.0/x86_64-unknown-linux-gnu/src/arrow_pyarrow/lib.rs.html#441) [§](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html#impl-ToPyArrow-for-RecordBatch) ### impl [ToPyArrow](https://docs.rs/arrow-pyarrow/58.1.0/x86_64-unknown-linux-gnu/arrow_pyarrow/trait.ToPyArrow.html "trait arrow_pyarrow::ToPyArrow") for [RecordBatch](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html "struct arrow::array::RecordBatch") [Source](https://docs.rs/arrow-pyarrow/58.1.0/x86_64-unknown-linux-gnu/src/arrow_pyarrow/lib.rs.html#442) [§](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html#method.to_pyarrow) #### fn [to\_pyarrow](https://docs.rs/arrow-pyarrow/58.1.0/x86_64-unknown-linux-gnu/arrow_pyarrow/trait.ToPyArrow.html#tymethod.to_pyarrow) <'py>(&self, py: [Python](https://docs.rs/pyo3/0.28.2/x86_64-unknown-linux-gnu/pyo3/marker/struct.Python.html "struct pyo3::marker::Python") <'py>) -> [Result](https://doc.rust-lang.org/nightly/core/result/enum.Result.html "enum core::result::Result") <[Bound](https://docs.rs/pyo3/0.28.2/x86_64-unknown-linux-gnu/pyo3/instance/struct.Bound.html "struct pyo3::instance::Bound") <'py, [PyAny](https://docs.rs/pyo3/0.28.2/x86_64-unknown-linux-gnu/pyo3/types/any/struct.PyAny.html "struct pyo3::types::any::PyAny") \>, [PyErr](https://docs.rs/pyo3/0.28.2/x86_64-unknown-linux-gnu/pyo3/err/struct.PyErr.html "struct pyo3::err::PyErr") \> Convert the implemented type into a Python object without consuming it. [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/record_batch.rs.html#223) [§](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html#impl-StructuralPartialEq-for-RecordBatch) ### impl [StructuralPartialEq](https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html "trait core::marker::StructuralPartialEq") for [RecordBatch](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html "struct arrow::array::RecordBatch") Auto Trait Implementations[§](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html#synthetic-implementations) -------------------------------------------------------------------------------------------------------------------------- [§](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html#impl-Freeze-for-RecordBatch) ### impl [Freeze](https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html "trait core::marker::Freeze") for [RecordBatch](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html "struct arrow::array::RecordBatch") [§](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html#impl-RefUnwindSafe-for-RecordBatch) ### impl ![RefUnwindSafe](https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html "trait core::panic::unwind_safe::RefUnwindSafe") for [RecordBatch](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html "struct arrow::array::RecordBatch") [§](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html#impl-Send-for-RecordBatch) ### impl [Send](https://doc.rust-lang.org/nightly/core/marker/trait.Send.html "trait core::marker::Send") for [RecordBatch](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html "struct arrow::array::RecordBatch") [§](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html#impl-Sync-for-RecordBatch) ### impl [Sync](https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html "trait core::marker::Sync") for [RecordBatch](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html "struct arrow::array::RecordBatch") [§](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html#impl-Unpin-for-RecordBatch) ### impl [Unpin](https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html "trait core::marker::Unpin") for [RecordBatch](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html "struct arrow::array::RecordBatch") [§](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html#impl-UnsafeUnpin-for-RecordBatch) ### impl [UnsafeUnpin](https://doc.rust-lang.org/nightly/core/marker/trait.UnsafeUnpin.html "trait core::marker::UnsafeUnpin") for [RecordBatch](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html "struct arrow::array::RecordBatch") [§](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html#impl-UnwindSafe-for-RecordBatch) ### impl ![UnwindSafe](https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html "trait core::panic::unwind_safe::UnwindSafe") for [RecordBatch](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html "struct arrow::array::RecordBatch") Blanket Implementations[§](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html#blanket-implementations) --------------------------------------------------------------------------------------------------------------------- [Source](https://doc.rust-lang.org/nightly/src/core/any.rs.html#141) [§](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html#impl-Any-for-T) ### impl [Any](https://doc.rust-lang.org/nightly/core/any/trait.Any.html "trait core::any::Any") for T where T: 'static + ?[Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , [Source](https://doc.rust-lang.org/nightly/src/core/any.rs.html#142) [§](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html#method.type_id) #### fn [type\_id](https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id) (&self) -> [TypeId](https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html "struct core::any::TypeId") Gets the `TypeId` of `self`. [Read more](https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id) [Source](https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#212) [§](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html#impl-Borrow%3CT%3E-for-T) ### impl [Borrow](https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html "trait core::borrow::Borrow") for T where T: ?[Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , [Source](https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#214) [§](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html#method.borrow) #### fn [borrow](https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow) (&self) -> [&T](https://doc.rust-lang.org/nightly/std/primitive.reference.html) Immutably borrows from an owned value. [Read more](https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow) [Source](https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#221) [§](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html#impl-BorrowMut%3CT%3E-for-T) ### impl [BorrowMut](https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html "trait core::borrow::BorrowMut") for T where T: ?[Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , [Source](https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#222) [§](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html#method.borrow_mut) #### fn [borrow\_mut](https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut) (&mut self) -> [&mut T](https://doc.rust-lang.org/nightly/std/primitive.reference.html) Mutably borrows from an owned value. [Read more](https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut) [Source](https://doc.rust-lang.org/nightly/src/core/clone.rs.html#547) [§](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html#impl-CloneToUninit-for-T) ### impl [CloneToUninit](https://doc.rust-lang.org/nightly/core/clone/trait.CloneToUninit.html "trait core::clone::CloneToUninit") for T where T: [Clone](https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html "trait core::clone::Clone") , [Source](https://doc.rust-lang.org/nightly/src/core/clone.rs.html#549) [§](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html#method.clone_to_uninit) #### unsafe fn [clone\_to\_uninit](https://doc.rust-lang.org/nightly/core/clone/trait.CloneToUninit.html#tymethod.clone_to_uninit) (&self, dest: [\*mut](https://doc.rust-lang.org/nightly/std/primitive.pointer.html) [u8](https://doc.rust-lang.org/nightly/std/primitive.u8.html) ) 🔬This is a nightly-only experimental API. (`clone_to_uninit`) Performs copy-assignment from `self` to `dest`. [Read more](https://doc.rust-lang.org/nightly/core/clone/trait.CloneToUninit.html#tymethod.clone_to_uninit) [Source](https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#785) [§](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html#impl-From%3CT%3E-for-T) ### impl [From](https://doc.rust-lang.org/nightly/core/convert/trait.From.html "trait core::convert::From") for T [Source](https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#788) [§](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html#method.from-3) #### fn [from](https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from) (t: T) -> T Returns the argument unchanged. [Source](https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#767-769) [§](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html#impl-Into%3CU%3E-for-T) ### impl [Into](https://doc.rust-lang.org/nightly/core/convert/trait.Into.html "trait core::convert::Into") for T where U: [From](https://doc.rust-lang.org/nightly/core/convert/trait.From.html "trait core::convert::From") , [Source](https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#777) [§](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html#method.into) #### fn [into](https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into) (self) -> U Calls `U::from(self)`. That is, this conversion is whatever the implementation of `[From](https://doc.rust-lang.org/nightly/core/convert/trait.From.html "trait core::convert::From") for U` chooses to do. [Source](https://docs.rs/arrow-pyarrow/58.1.0/x86_64-unknown-linux-gnu/src/arrow_pyarrow/lib.rs.html#115) [§](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html#impl-IntoPyArrow-for-T) ### impl [IntoPyArrow](https://docs.rs/arrow-pyarrow/58.1.0/x86_64-unknown-linux-gnu/arrow_pyarrow/trait.IntoPyArrow.html "trait arrow_pyarrow::IntoPyArrow") for T where T: [ToPyArrow](https://docs.rs/arrow-pyarrow/58.1.0/x86_64-unknown-linux-gnu/arrow_pyarrow/trait.ToPyArrow.html "trait arrow_pyarrow::ToPyArrow") , [Source](https://docs.rs/arrow-pyarrow/58.1.0/x86_64-unknown-linux-gnu/src/arrow_pyarrow/lib.rs.html#116) [§](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html#method.into_pyarrow) #### fn [into\_pyarrow](https://docs.rs/arrow-pyarrow/58.1.0/x86_64-unknown-linux-gnu/arrow_pyarrow/trait.IntoPyArrow.html#tymethod.into_pyarrow) <'py>(self, py: [Python](https://docs.rs/pyo3/0.28.2/x86_64-unknown-linux-gnu/pyo3/marker/struct.Python.html "struct pyo3::marker::Python") <'py>) -> [Result](https://doc.rust-lang.org/nightly/core/result/enum.Result.html "enum core::result::Result") <[Bound](https://docs.rs/pyo3/0.28.2/x86_64-unknown-linux-gnu/pyo3/instance/struct.Bound.html "struct pyo3::instance::Bound") <'py, [PyAny](https://docs.rs/pyo3/0.28.2/x86_64-unknown-linux-gnu/pyo3/types/any/struct.PyAny.html "struct pyo3::types::any::PyAny") \>, [PyErr](https://docs.rs/pyo3/0.28.2/x86_64-unknown-linux-gnu/pyo3/err/struct.PyErr.html "struct pyo3::err::PyErr") \> Convert the implemented type into a Python object while consuming it. [Source](https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#72-74) [§](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html#impl-ToOwned-for-T) ### impl [ToOwned](https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html "trait alloc::borrow::ToOwned") for T where T: [Clone](https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html "trait core::clone::Clone") , [Source](https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#76) [§](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html#associatedtype.Owned) #### type [Owned](https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned) = T The resulting type after obtaining ownership. [Source](https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#77) [§](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html#method.to_owned) #### fn [to\_owned](https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned) (&self) -> T Creates owned data from borrowed data, usually by cloning. [Read more](https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned) [Source](https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#81) [§](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html#method.clone_into) #### fn [clone\_into](https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into) (&self, target: [&mut T](https://doc.rust-lang.org/nightly/std/primitive.reference.html) ) Uses borrowed data to replace owned data, usually by cloning. [Read more](https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into) [Source](https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#827-829) [§](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html#impl-TryFrom%3CU%3E-for-T) ### impl [TryFrom](https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html "trait core::convert::TryFrom") for T where U: [Into](https://doc.rust-lang.org/nightly/core/convert/trait.Into.html "trait core::convert::Into") , [Source](https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#831) [§](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html#associatedtype.Error-1) #### type [Error](https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error) = [Infallible](https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html "enum core::convert::Infallible") The type returned in the event of a conversion error. [Source](https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#834) [§](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html#method.try_from) #### fn [try\_from](https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from) (value: U) -> [Result](https://doc.rust-lang.org/nightly/core/result/enum.Result.html "enum core::result::Result") >::[Error](https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error "type core::convert::TryFrom::Error") \> Performs the conversion. [Source](https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#811-813) [§](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html#impl-TryInto%3CU%3E-for-T) ### impl [TryInto](https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html "trait core::convert::TryInto") for T where U: [TryFrom](https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html "trait core::convert::TryFrom") , [Source](https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#815) [§](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html#associatedtype.Error) #### type [Error](https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error) = >::[Error](https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error "type core::convert::TryFrom::Error") The type returned in the event of a conversion error. [Source](https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#818) [§](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html#method.try_into) #### fn [try\_into](https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into) (self) -> [Result](https://doc.rust-lang.org/nightly/core/result/enum.Result.html "enum core::result::Result") >::[Error](https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error "type core::convert::TryFrom::Error") \> Performs the conversion. [Source](https://docs.rs/ppv-lite86/0.2.21/x86_64-unknown-linux-gnu/src/ppv_lite86/types.rs.html#221-223) [§](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html#impl-VZip%3CV%3E-for-T) ### impl [VZip](https://docs.rs/ppv-lite86/0.2.21/x86_64-unknown-linux-gnu/ppv_lite86/types/trait.VZip.html "trait ppv_lite86::types::VZip") for T where V: [MultiLane](https://docs.rs/ppv-lite86/0.2.21/x86_64-unknown-linux-gnu/ppv_lite86/types/trait.MultiLane.html "trait ppv_lite86::types::MultiLane") , [Source](https://docs.rs/ppv-lite86/0.2.21/x86_64-unknown-linux-gnu/src/ppv_lite86/types.rs.html#226) [§](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html#method.vzip) #### fn [vzip](https://docs.rs/ppv-lite86/0.2.21/x86_64-unknown-linux-gnu/ppv_lite86/types/trait.VZip.html#tymethod.vzip) (self) -> V [Source](https://docs.rs/pyo3/0.28.2/x86_64-unknown-linux-gnu/src/pyo3/marker.rs.html#188) [§](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html#impl-Ungil-for-T) ### impl [Ungil](https://docs.rs/pyo3/0.28.2/x86_64-unknown-linux-gnu/pyo3/marker/trait.Ungil.html "trait pyo3::marker::Ungil") for T where T: [Send](https://doc.rust-lang.org/nightly/core/marker/trait.Send.html "trait core::marker::Send") , --- # arrow::util::pretty - Rust [Docs.rs](https://docs.rs/) * [arrow-58.1.0](https://docs.rs/arrow/latest/arrow/util/pretty/index.html# "Rust implementation of Apache Arrow") * arrow 58.1.0 * [Permalink](https://docs.rs/arrow/58.1.0/arrow/util/pretty/ "Get a link to this specific version") * [Docs.rs crate page](https://docs.rs/crate/arrow/latest "See arrow in docs.rs") * [Apache-2.0](https://spdx.org/licenses/Apache-2.0) * Links * [Homepage](https://github.com/apache/arrow-rs) * [Repository](https://github.com/apache/arrow-rs) * [crates.io](https://crates.io/crates/arrow "See arrow in crates.io") * [Source](https://docs.rs/crate/arrow/latest/source/ "Browse source of arrow-58.1.0") * Owners * [andygrove](https://crates.io/users/andygrove) * [kou](https://crates.io/users/kou) * [kszucs](https://crates.io/users/kszucs) * [xhochy](https://crates.io/users/xhochy) * [nevi-me](https://crates.io/users/nevi-me) * [alamb](https://crates.io/users/alamb) * [tustvold](https://crates.io/users/tustvold) * Dependencies * * [arrow-arith ^58.1.0 _normal_](https://docs.rs/arrow-arith/^58.1.0/) * [arrow-array ^58.1.0 _normal_](https://docs.rs/arrow-array/^58.1.0/) * [arrow-buffer ^58.1.0 _normal_](https://docs.rs/arrow-buffer/^58.1.0/) * [arrow-cast ^58.1.0 _normal_](https://docs.rs/arrow-cast/^58.1.0/) * [arrow-csv ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-csv/^58.1.0/) * [arrow-data ^58.1.0 _normal_](https://docs.rs/arrow-data/^58.1.0/) * [arrow-ipc ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-ipc/^58.1.0/) * [arrow-json ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-json/^58.1.0/) * [arrow-ord ^58.1.0 _normal_](https://docs.rs/arrow-ord/^58.1.0/) * [arrow-pyarrow ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-pyarrow/^58.1.0/) * [arrow-row ^58.1.0 _normal_](https://docs.rs/arrow-row/^58.1.0/) * [arrow-schema ^58.1.0 _normal_](https://docs.rs/arrow-schema/^58.1.0/) * [arrow-select ^58.1.0 _normal_](https://docs.rs/arrow-select/^58.1.0/) * [arrow-string ^58.1.0 _normal_](https://docs.rs/arrow-string/^58.1.0/) * [half ^2.1 _normal_ _optional_](https://docs.rs/half/^2.1/) * [rand ^0.9 _normal_ _optional_](https://docs.rs/rand/^0.9/) * [bytes ^1.9 _dev_](https://docs.rs/bytes/^1.9/) * [chrono ^0.4.40 _dev_](https://docs.rs/chrono/^0.4.40/) * [criterion ^0.8.0 _dev_](https://docs.rs/criterion/^0.8.0/) * [half ^2.1 _dev_](https://docs.rs/half/^2.1/) * [memmap2 ^0.9.3 _dev_](https://docs.rs/memmap2/^0.9.3/) * [rand ^0.9 _dev_](https://docs.rs/rand/^0.9/) * [serde ^1.0 _dev_](https://docs.rs/serde/^1.0/) * Versions * [**100%** of the crate is documented](https://docs.rs/crate/arrow/latest) * [Platform](https://docs.rs/arrow/latest/arrow/util/pretty/index.html#) * [x86\_64-unknown-linux-gnu](https://docs.rs/crate/arrow/latest/target-redirect/arrow/util/pretty/) * [Feature flags](https://docs.rs/crate/arrow/latest/features "Browse available feature flags of arrow-58.1.0") * [docs.rs](https://docs.rs/arrow/latest/arrow/util/pretty/index.html#) * [About docs.rs](https://docs.rs/about) * [Badges](https://docs.rs/about/badges) * [Builds](https://docs.rs/about/builds) * [Metadata](https://docs.rs/about/metadata) * [Shorthand URLs](https://docs.rs/about/redirections) * [Download](https://docs.rs/about/download) * [Rustdoc JSON](https://docs.rs/about/rustdoc-json) * [Build queue](https://docs.rs/releases/queue) * [Privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#docs.rs) * [Rust](https://docs.rs/arrow/latest/arrow/util/pretty/index.html#) * [Rust website](https://www.rust-lang.org/) * [The Book](https://doc.rust-lang.org/book/) * [Standard Library API Reference](https://doc.rust-lang.org/std/) * [Rust by Example](https://doc.rust-lang.org/rust-by-example/) * [The Cargo Guide](https://doc.rust-lang.org/cargo/guide/) * [Clippy Documentation](https://doc.rust-lang.org/nightly/clippy) [Skip to main content](https://docs.rs/arrow/latest/arrow/util/pretty/index.html#main-content) [Module pretty](https://docs.rs/arrow/latest/arrow/util/pretty/index.html#) ---------------------------------------------------------------------------- [arrow](https://docs.rs/arrow/latest/arrow/index.html) ::[util](https://docs.rs/arrow/latest/arrow/util/index.html) Module pretty Copy item path ============================ [Source](https://docs.rs/arrow-cast/58.1.0/x86_64-unknown-linux-gnu/src/arrow_cast/lib.rs.html#31) Available on **crate feature `prettyprint`** only. Expand description Utilities for pretty printing [`RecordBatch`](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html "struct arrow::array::RecordBatch") es and [`Array`](https://docs.rs/arrow/latest/arrow/array/trait.Array.html "trait arrow::array::Array") s. Note this module is not available unless `feature = "prettyprint"` is enabled. Functions[§](https://docs.rs/arrow/latest/arrow/util/pretty/index.html#functions) ---------------------------------------------------------------------------------- [pretty\_format\_batches](https://docs.rs/arrow/latest/arrow/util/pretty/fn.pretty_format_batches.html "fn arrow::util::pretty::pretty_format_batches") Create a visual representation of [`RecordBatch`](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html "struct arrow::array::RecordBatch") es [pretty\_format\_batches\_with\_options](https://docs.rs/arrow/latest/arrow/util/pretty/fn.pretty_format_batches_with_options.html "fn arrow::util::pretty::pretty_format_batches_with_options") Create a visual representation of [`RecordBatch`](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html "struct arrow::array::RecordBatch") es with formatting options. [pretty\_format\_batches\_with\_schema](https://docs.rs/arrow/latest/arrow/util/pretty/fn.pretty_format_batches_with_schema.html "fn arrow::util::pretty::pretty_format_batches_with_schema") Create a visual representation of [`RecordBatch`](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html "struct arrow::array::RecordBatch") es with a provided schema. [pretty\_format\_columns](https://docs.rs/arrow/latest/arrow/util/pretty/fn.pretty_format_columns.html "fn arrow::util::pretty::pretty_format_columns") Create a visual representation of [`ArrayRef`](https://docs.rs/arrow/latest/arrow/array/type.ArrayRef.html "type arrow::array::ArrayRef") [pretty\_format\_columns\_with\_options](https://docs.rs/arrow/latest/arrow/util/pretty/fn.pretty_format_columns_with_options.html "fn arrow::util::pretty::pretty_format_columns_with_options") Create a visual representation of [`ArrayRef`](https://docs.rs/arrow/latest/arrow/array/type.ArrayRef.html "type arrow::array::ArrayRef") with formatting options. [print\_batches](https://docs.rs/arrow/latest/arrow/util/pretty/fn.print_batches.html "fn arrow::util::pretty::print_batches") Prints a visual representation of record batches to stdout [print\_columns](https://docs.rs/arrow/latest/arrow/util/pretty/fn.print_columns.html "fn arrow::util::pretty::print_columns") Prints a visual representation of a list of column to stdout --- # arrow::array::builder - Rust [Docs.rs](https://docs.rs/) * [arrow-58.1.0](https://docs.rs/arrow/latest/arrow/array/builder/index.html# "Rust implementation of Apache Arrow") * arrow 58.1.0 * [Permalink](https://docs.rs/arrow/58.1.0/arrow/array/builder/ "Get a link to this specific version") * [Docs.rs crate page](https://docs.rs/crate/arrow/latest "See arrow in docs.rs") * [Apache-2.0](https://spdx.org/licenses/Apache-2.0) * Links * [Homepage](https://github.com/apache/arrow-rs) * [Repository](https://github.com/apache/arrow-rs) * [crates.io](https://crates.io/crates/arrow "See arrow in crates.io") * [Source](https://docs.rs/crate/arrow/latest/source/ "Browse source of arrow-58.1.0") * Owners * [andygrove](https://crates.io/users/andygrove) * [kou](https://crates.io/users/kou) * [kszucs](https://crates.io/users/kszucs) * [xhochy](https://crates.io/users/xhochy) * [nevi-me](https://crates.io/users/nevi-me) * [alamb](https://crates.io/users/alamb) * [tustvold](https://crates.io/users/tustvold) * Dependencies * * [arrow-arith ^58.1.0 _normal_](https://docs.rs/arrow-arith/^58.1.0/) * [arrow-array ^58.1.0 _normal_](https://docs.rs/arrow-array/^58.1.0/) * [arrow-buffer ^58.1.0 _normal_](https://docs.rs/arrow-buffer/^58.1.0/) * [arrow-cast ^58.1.0 _normal_](https://docs.rs/arrow-cast/^58.1.0/) * [arrow-csv ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-csv/^58.1.0/) * [arrow-data ^58.1.0 _normal_](https://docs.rs/arrow-data/^58.1.0/) * [arrow-ipc ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-ipc/^58.1.0/) * [arrow-json ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-json/^58.1.0/) * [arrow-ord ^58.1.0 _normal_](https://docs.rs/arrow-ord/^58.1.0/) * [arrow-pyarrow ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-pyarrow/^58.1.0/) * [arrow-row ^58.1.0 _normal_](https://docs.rs/arrow-row/^58.1.0/) * [arrow-schema ^58.1.0 _normal_](https://docs.rs/arrow-schema/^58.1.0/) * [arrow-select ^58.1.0 _normal_](https://docs.rs/arrow-select/^58.1.0/) * [arrow-string ^58.1.0 _normal_](https://docs.rs/arrow-string/^58.1.0/) * [half ^2.1 _normal_ _optional_](https://docs.rs/half/^2.1/) * [rand ^0.9 _normal_ _optional_](https://docs.rs/rand/^0.9/) * [bytes ^1.9 _dev_](https://docs.rs/bytes/^1.9/) * [chrono ^0.4.40 _dev_](https://docs.rs/chrono/^0.4.40/) * [criterion ^0.8.0 _dev_](https://docs.rs/criterion/^0.8.0/) * [half ^2.1 _dev_](https://docs.rs/half/^2.1/) * [memmap2 ^0.9.3 _dev_](https://docs.rs/memmap2/^0.9.3/) * [rand ^0.9 _dev_](https://docs.rs/rand/^0.9/) * [serde ^1.0 _dev_](https://docs.rs/serde/^1.0/) * Versions * [**100%** of the crate is documented](https://docs.rs/crate/arrow/latest) * [Platform](https://docs.rs/arrow/latest/arrow/array/builder/index.html#) * [x86\_64-unknown-linux-gnu](https://docs.rs/crate/arrow/latest/target-redirect/arrow/array/builder/) * [Feature flags](https://docs.rs/crate/arrow/latest/features "Browse available feature flags of arrow-58.1.0") * [docs.rs](https://docs.rs/arrow/latest/arrow/array/builder/index.html#) * [About docs.rs](https://docs.rs/about) * [Badges](https://docs.rs/about/badges) * [Builds](https://docs.rs/about/builds) * [Metadata](https://docs.rs/about/metadata) * [Shorthand URLs](https://docs.rs/about/redirections) * [Download](https://docs.rs/about/download) * [Rustdoc JSON](https://docs.rs/about/rustdoc-json) * [Build queue](https://docs.rs/releases/queue) * [Privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#docs.rs) * [Rust](https://docs.rs/arrow/latest/arrow/array/builder/index.html#) * [Rust website](https://www.rust-lang.org/) * [The Book](https://doc.rust-lang.org/book/) * [Standard Library API Reference](https://doc.rust-lang.org/std/) * [Rust by Example](https://doc.rust-lang.org/rust-by-example/) * [The Cargo Guide](https://doc.rust-lang.org/cargo/guide/) * [Clippy Documentation](https://doc.rust-lang.org/nightly/clippy) [Skip to main content](https://docs.rs/arrow/latest/arrow/array/builder/index.html#main-content) [Module builder](https://docs.rs/arrow/latest/arrow/array/builder/index.html#) ------------------------------------------------------------------------------- [arrow](https://docs.rs/arrow/latest/arrow/index.html) ::[array](https://docs.rs/arrow/latest/arrow/array/index.html) Module builder Copy item path ============================= [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/lib.rs.html#249) Expand description Defines push-based APIs for constructing arrays [§](https://docs.rs/arrow/latest/arrow/array/builder/index.html#basic-usage) Basic Usage ---------------------------------------------------------------------------------------- Builders can be used to build simple, non-nested arrays let mut a = Int32Builder::new(); a.append_value(1); a.append_null(); a.append_value(2); let a = a.finish(); assert_eq!(a, PrimitiveArray::from(vec![Some(1), None, Some(2)])); let mut a = StringBuilder::new(); a.append_value("foo"); a.append_value("bar"); a.append_null(); let a = a.finish(); assert_eq!(a, StringArray::from_iter([Some("foo"), Some("bar"), None])); [§](https://docs.rs/arrow/latest/arrow/array/builder/index.html#nested-usage) Nested Usage ------------------------------------------------------------------------------------------ Builders can also be used to build more complex nested arrays, such as lists let mut a = ListBuilder::new(Int32Builder::new()); // [1, 2] a.values().append_value(1); a.values().append_value(2); a.append(true); // null a.append(false); // [] a.append(true); // [3, null] a.values().append_value(3); a.values().append_null(); a.append(true); // [[1, 2], null, [], [3, null]] let a = a.finish(); assert_eq!(a, ListArray::from_iter_primitive::([\ Some(vec![Some(1), Some(2)]),\ None,\ Some(vec![]),\ Some(vec![Some(3), None])] )) [§](https://docs.rs/arrow/latest/arrow/array/builder/index.html#using-the-extend-trait-to-append-values-from-an-iterable) Using the [`Extend`](https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.Extend.html "trait core::iter::traits::collect::Extend") trait to append values from an iterable: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ let mut builder = StringBuilder::new(); builder.extend(vec![Some("🍐"), Some("🍎"), None]); assert_eq!(builder.finish().len(), 3); [§](https://docs.rs/arrow/latest/arrow/array/builder/index.html#using-the-extend-trait-to-write-generic-functions) Using the [`Extend`](https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.Extend.html "trait core::iter::traits::collect::Extend") trait to write generic functions: ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- // For generic methods that fill a list of values for an [`ArrayBuilder`], use the [`Extend`] trait. fn filter_and_fill>(builder: &mut impl Extend, values: I, filter: V) where V: PartialEq { builder.extend(values.into_iter().filter(|v| *v == filter)); } let mut string_builder = StringBuilder::new(); filter_and_fill( &mut string_builder, vec![Some("🍐"), Some("🍎"), None], Some("🍎"), ); assert_eq!(string_builder.finish().len(), 1); let mut int_builder = Int32Builder::new(); filter_and_fill( &mut int_builder, vec![Some(11), Some(42), None], Some(42), ); assert_eq!(int_builder.finish().len(), 1); // For generic methods that fill lists-of-lists for an [`ArrayBuilder`], use the [`Extend`] trait. fn filter_and_fill_if_contains>>( list_builder: &mut impl Extend>, values: I, filter: Option, ) where T: PartialEq, for<'a> &'a V: IntoIterator>, { list_builder.extend(values.into_iter().filter(|string: &Option| { string .as_ref() .map(|str: &V| str.into_iter().any(|ch: &Option| ch == &filter)) .unwrap_or(false) })); } let builder = StringBuilder::new(); let mut list_builder = ListBuilder::new(builder); let pear_pear = vec![Some("🍐"),Some("🍐")]; let pear_app = vec![Some("🍐"),Some("🍎")]; filter_and_fill_if_contains( &mut list_builder, vec![Some(pear_pear), Some(pear_app), None], Some("🍎"), ); assert_eq!(list_builder.finish().len(), 1); [§](https://docs.rs/arrow/latest/arrow/array/builder/index.html#custom-builders) Custom Builders ------------------------------------------------------------------------------------------------ It is common to have a collection of statically defined Rust types that you want to convert to Arrow arrays. An example of doing so is below /// A custom row representation struct MyRow { i32: i32, optional_i32: Option, string: Option, i32_list: Option>>, } /// Converts `Vec` into `StructArray` #[derive(Debug, Default)] struct MyRowBuilder { i32: Int32Builder, string: StringBuilder, i32_list: ListBuilder, } impl MyRowBuilder { fn append(&mut self, row: &MyRow) { self.i32.append_value(row.i32); self.string.append_option(row.string.as_ref()); self.i32_list.append_option(row.i32_list.as_ref().map(|x| x.iter().copied())); } /// Note: returns StructArray to allow nesting within another array if desired fn finish(&mut self) -> StructArray { let i32 = Arc::new(self.i32.finish()) as ArrayRef; let i32_field = Arc::new(Field::new("i32", DataType::Int32, false)); let string = Arc::new(self.string.finish()) as ArrayRef; let string_field = Arc::new(Field::new("i32", DataType::Utf8, false)); let i32_list = Arc::new(self.i32_list.finish()) as ArrayRef; let value_field = Arc::new(Field::new_list_field(DataType::Int32, true)); let i32_list_field = Arc::new(Field::new("i32_list", DataType::List(value_field), true)); StructArray::from(vec![\ (i32_field, i32),\ (string_field, string),\ (i32_list_field, i32_list),\ ]) } } /// For building arrays in generic code, use Extend instead of the append_* methods /// e.g. append_value, append_option, append_null impl<'a> Extend<&'a MyRow> for MyRowBuilder { fn extend>(&mut self, iter: T) { iter.into_iter().for_each(|row| self.append(row)); } } /// Converts a slice of [`MyRow`] to a [`RecordBatch`] fn rows_to_batch(rows: &[MyRow]) -> RecordBatch { let mut builder = MyRowBuilder::default(); builder.extend(rows); RecordBatch::from(&builder.finish()) } [§](https://docs.rs/arrow/latest/arrow/array/builder/index.html#null--validity-masks) Null / Validity Masks ----------------------------------------------------------------------------------------------------------- The [`NullBufferBuilder`](https://docs.rs/arrow/latest/arrow/array/struct.NullBufferBuilder.html "struct arrow::array::NullBufferBuilder") is optimized for creating the null mask for an array. let mut builder = NullBufferBuilder::new(8); let mut builder = NullBufferBuilder::new(8); builder.append_n_non_nulls(7); builder.append_null(); let buffer = builder.finish().unwrap(); assert_eq!(buffer.len(), 8); assert_eq!(buffer.iter().collect::>(), vec![true, true, true, true, true, true, true, false]); Structs[§](https://docs.rs/arrow/latest/arrow/array/builder/index.html#structs) -------------------------------------------------------------------------------- [BooleanBufferBuilder](https://docs.rs/arrow/latest/arrow/array/builder/struct.BooleanBufferBuilder.html "struct arrow::array::builder::BooleanBufferBuilder") Builder for [`BooleanBuffer`](https://docs.rs/arrow/latest/arrow/buffer/struct.BooleanBuffer.html "struct arrow::buffer::BooleanBuffer") [BooleanBuilder](https://docs.rs/arrow/latest/arrow/array/builder/struct.BooleanBuilder.html "struct arrow::array::builder::BooleanBuilder") Builder for [`BooleanArray`](https://docs.rs/arrow/latest/arrow/array/struct.BooleanArray.html "struct arrow::array::BooleanArray") [BufferBuilder](https://docs.rs/arrow/latest/arrow/array/builder/struct.BufferBuilder.html "struct arrow::array::builder::BufferBuilder") Builder for creating Arrow [`Buffer`](https://docs.rs/arrow/latest/arrow/buffer/struct.Buffer.html "struct arrow::buffer::Buffer") objects [FixedSizeBinaryBuilder](https://docs.rs/arrow/latest/arrow/array/builder/struct.FixedSizeBinaryBuilder.html "struct arrow::array::builder::FixedSizeBinaryBuilder") Builder for [`FixedSizeBinaryArray`](https://docs.rs/arrow/latest/arrow/array/struct.FixedSizeBinaryArray.html "struct arrow::array::FixedSizeBinaryArray") [FixedSizeBinaryDictionaryBuilder](https://docs.rs/arrow/latest/arrow/array/builder/struct.FixedSizeBinaryDictionaryBuilder.html "struct arrow::array::builder::FixedSizeBinaryDictionaryBuilder") Builder for [`DictionaryArray`](https://docs.rs/arrow/latest/arrow/array/struct.DictionaryArray.html "struct arrow::array::DictionaryArray") of [`FixedSizeBinaryArray`](https://docs.rs/arrow/latest/arrow/array/struct.FixedSizeBinaryArray.html "struct arrow::array::FixedSizeBinaryArray") [FixedSizeListBuilder](https://docs.rs/arrow/latest/arrow/array/builder/struct.FixedSizeListBuilder.html "struct arrow::array::builder::FixedSizeListBuilder") Builder for [`FixedSizeListArray`](https://docs.rs/arrow/latest/arrow/array/struct.FixedSizeListArray.html "struct arrow::array::FixedSizeListArray") [GenericByteBuilder](https://docs.rs/arrow/latest/arrow/array/builder/struct.GenericByteBuilder.html "struct arrow::array::builder::GenericByteBuilder") Builder for [`GenericByteArray`](https://docs.rs/arrow/latest/arrow/array/struct.GenericByteArray.html "struct arrow::array::GenericByteArray") [GenericByteDictionaryBuilder](https://docs.rs/arrow/latest/arrow/array/builder/struct.GenericByteDictionaryBuilder.html "struct arrow::array::builder::GenericByteDictionaryBuilder") Builder for [`DictionaryArray`](https://docs.rs/arrow/latest/arrow/array/struct.DictionaryArray.html "struct arrow::array::DictionaryArray") of [`GenericByteArray`](https://docs.rs/arrow/latest/arrow/array/struct.GenericByteArray.html "struct arrow::array::GenericByteArray") [GenericByteRunBuilder](https://docs.rs/arrow/latest/arrow/array/builder/struct.GenericByteRunBuilder.html "struct arrow::array::builder::GenericByteRunBuilder") Builder for [`RunArray`](https://docs.rs/arrow/latest/arrow/array/struct.RunArray.html "struct arrow::array::RunArray") of [`GenericByteArray`](https://docs.rs/arrow/latest/arrow/array/struct.GenericByteArray.html "struct arrow::array::GenericByteArray") [GenericByteViewBuilder](https://docs.rs/arrow/latest/arrow/array/builder/struct.GenericByteViewBuilder.html "struct arrow::array::builder::GenericByteViewBuilder") A builder for [`GenericByteViewArray`](https://docs.rs/arrow/latest/arrow/array/struct.GenericByteViewArray.html "struct arrow::array::GenericByteViewArray") [GenericListBuilder](https://docs.rs/arrow/latest/arrow/array/builder/struct.GenericListBuilder.html "struct arrow::array::builder::GenericListBuilder") Builder for [`GenericListArray`](https://docs.rs/arrow/latest/arrow/array/struct.GenericListArray.html "struct arrow::array::GenericListArray") [GenericListViewBuilder](https://docs.rs/arrow/latest/arrow/array/builder/struct.GenericListViewBuilder.html "struct arrow::array::builder::GenericListViewBuilder") Builder for [`GenericListViewArray`](https://docs.rs/arrow/latest/arrow/array/struct.GenericListViewArray.html "struct arrow::array::GenericListViewArray") [MapBuilder](https://docs.rs/arrow/latest/arrow/array/builder/struct.MapBuilder.html "struct arrow::array::builder::MapBuilder") Builder for [`MapArray`](https://docs.rs/arrow/latest/arrow/array/struct.MapArray.html "struct arrow::array::MapArray") [MapFieldNames](https://docs.rs/arrow/latest/arrow/array/builder/struct.MapFieldNames.html "struct arrow::array::builder::MapFieldNames") The [`Field`](https://docs.rs/arrow/latest/arrow/datatypes/struct.Field.html "struct arrow::datatypes::Field") names for a [`MapArray`](https://docs.rs/arrow/latest/arrow/array/struct.MapArray.html "struct arrow::array::MapArray") [NullBufferBuilder](https://docs.rs/arrow/latest/arrow/array/builder/struct.NullBufferBuilder.html "struct arrow::array::builder::NullBufferBuilder") Builder for creating [`NullBuffer`](https://docs.rs/arrow/latest/arrow/buffer/struct.NullBuffer.html "struct arrow::buffer::NullBuffer") s (bitmaps indicating validity/nulls). [NullBuilder](https://docs.rs/arrow/latest/arrow/array/builder/struct.NullBuilder.html "struct arrow::array::builder::NullBuilder") Builder for [`NullArray`](https://docs.rs/arrow/latest/arrow/array/struct.NullArray.html "struct arrow::array::NullArray") [OffsetBufferBuilder](https://docs.rs/arrow/latest/arrow/array/builder/struct.OffsetBufferBuilder.html "struct arrow::array::builder::OffsetBufferBuilder") Builder of [`OffsetBuffer`](https://docs.rs/arrow/latest/arrow/buffer/struct.OffsetBuffer.html "struct arrow::buffer::OffsetBuffer") [PrimitiveBuilder](https://docs.rs/arrow/latest/arrow/array/builder/struct.PrimitiveBuilder.html "struct arrow::array::builder::PrimitiveBuilder") Builder for [`PrimitiveArray`](https://docs.rs/arrow/latest/arrow/array/struct.PrimitiveArray.html "struct arrow::array::PrimitiveArray") [PrimitiveDictionaryBuilder](https://docs.rs/arrow/latest/arrow/array/builder/struct.PrimitiveDictionaryBuilder.html "struct arrow::array::builder::PrimitiveDictionaryBuilder") Builder for [`DictionaryArray`](https://docs.rs/arrow/latest/arrow/array/struct.DictionaryArray.html "struct arrow::array::DictionaryArray") of [`PrimitiveArray`](https://docs.rs/arrow/latest/arrow/array/struct.PrimitiveArray.html "struct arrow::array::PrimitiveArray") [PrimitiveRunBuilder](https://docs.rs/arrow/latest/arrow/array/builder/struct.PrimitiveRunBuilder.html "struct arrow::array::builder::PrimitiveRunBuilder") Builder for [`RunArray`](https://docs.rs/arrow/latest/arrow/array/struct.RunArray.html "struct arrow::array::RunArray") of [`PrimitiveArray`](https://docs.rs/arrow/latest/arrow/array/struct.PrimitiveArray.html "struct arrow::array::PrimitiveArray") [StructBuilder](https://docs.rs/arrow/latest/arrow/array/builder/struct.StructBuilder.html "struct arrow::array::builder::StructBuilder") Builder for [`StructArray`](https://docs.rs/arrow/latest/arrow/array/struct.StructArray.html "struct arrow::array::StructArray") [UnionBuilder](https://docs.rs/arrow/latest/arrow/array/builder/struct.UnionBuilder.html "struct arrow::array::builder::UnionBuilder") Builder for [`UnionArray`](https://docs.rs/arrow/latest/arrow/array/struct.UnionArray.html "struct arrow::array::UnionArray") Traits[§](https://docs.rs/arrow/latest/arrow/array/builder/index.html#traits) ------------------------------------------------------------------------------ [ArrayBuilder](https://docs.rs/arrow/latest/arrow/array/builder/trait.ArrayBuilder.html "trait arrow::array::builder::ArrayBuilder") Trait for dealing with different array builders at runtime [BinaryLikeArrayBuilder](https://docs.rs/arrow/latest/arrow/array/builder/trait.BinaryLikeArrayBuilder.html "trait arrow::array::builder::BinaryLikeArrayBuilder") Trait for binary-like array builders [StringLikeArrayBuilder](https://docs.rs/arrow/latest/arrow/array/builder/trait.StringLikeArrayBuilder.html "trait arrow::array::builder::StringLikeArrayBuilder") Trait for string-like array builders Functions[§](https://docs.rs/arrow/latest/arrow/array/builder/index.html#functions) ------------------------------------------------------------------------------------ [make\_builder](https://docs.rs/arrow/latest/arrow/array/builder/fn.make_builder.html "fn arrow::array::builder::make_builder") Returns a builder with capacity for `capacity` elements of datatype `DataType`. [make\_view](https://docs.rs/arrow/latest/arrow/array/builder/fn.make_view.html "fn arrow::array::builder::make_view") Create a view based on the given data, block id and offset. Type Aliases[§](https://docs.rs/arrow/latest/arrow/array/builder/index.html#types) ----------------------------------------------------------------------------------- [BinaryBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.BinaryBuilder.html "type arrow::array::builder::BinaryBuilder") Builder for [`BinaryArray`](https://docs.rs/arrow/latest/arrow/array/type.BinaryArray.html "type arrow::array::BinaryArray") [BinaryDictionaryBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.BinaryDictionaryBuilder.html "type arrow::array::builder::BinaryDictionaryBuilder") Builder for [`DictionaryArray`](https://docs.rs/arrow/latest/arrow/array/struct.DictionaryArray.html "struct arrow::array::DictionaryArray") of [`BinaryArray`](https://docs.rs/arrow/latest/arrow/array/type.BinaryArray.html "type arrow::array::BinaryArray") [BinaryRunBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.BinaryRunBuilder.html "type arrow::array::builder::BinaryRunBuilder") Builder for [`RunArray`](https://docs.rs/arrow/latest/arrow/array/struct.RunArray.html "struct arrow::array::RunArray") of [`BinaryArray`](https://docs.rs/arrow/latest/arrow/array/type.BinaryArray.html "type arrow::array::BinaryArray") [BinaryViewBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.BinaryViewBuilder.html "type arrow::array::builder::BinaryViewBuilder") Array builder for [`BinaryViewArray`](https://docs.rs/arrow/latest/arrow/array/type.BinaryViewArray.html "type arrow::array::BinaryViewArray") [Date32BufferBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.Date32BufferBuilder.html "type arrow::array::builder::Date32BufferBuilder") Buffer builder for 32-bit date type. [Date32Builder](https://docs.rs/arrow/latest/arrow/array/builder/type.Date32Builder.html "type arrow::array::builder::Date32Builder") A 32-bit date array builder. [Date64BufferBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.Date64BufferBuilder.html "type arrow::array::builder::Date64BufferBuilder") Buffer builder for 64-bit date type. [Date64Builder](https://docs.rs/arrow/latest/arrow/array/builder/type.Date64Builder.html "type arrow::array::builder::Date64Builder") A 64-bit date array builder. [Decimal32BufferBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.Decimal32BufferBuilder.html "type arrow::array::builder::Decimal32BufferBuilder") Buffer builder for 32-bit decimal type. [Decimal32Builder](https://docs.rs/arrow/latest/arrow/array/builder/type.Decimal32Builder.html "type arrow::array::builder::Decimal32Builder") A decimal 32 array builder [Decimal64BufferBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.Decimal64BufferBuilder.html "type arrow::array::builder::Decimal64BufferBuilder") Buffer builder for 64-bit decimal type. [Decimal64Builder](https://docs.rs/arrow/latest/arrow/array/builder/type.Decimal64Builder.html "type arrow::array::builder::Decimal64Builder") A decimal 64 array builder [Decimal128BufferBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.Decimal128BufferBuilder.html "type arrow::array::builder::Decimal128BufferBuilder") Buffer builder for 128-bit decimal type. [Decimal128Builder](https://docs.rs/arrow/latest/arrow/array/builder/type.Decimal128Builder.html "type arrow::array::builder::Decimal128Builder") A decimal 128 array builder [Decimal256BufferBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.Decimal256BufferBuilder.html "type arrow::array::builder::Decimal256BufferBuilder") Buffer builder for 256-bit decimal type. [Decimal256Builder](https://docs.rs/arrow/latest/arrow/array/builder/type.Decimal256Builder.html "type arrow::array::builder::Decimal256Builder") A decimal 256 array builder [DurationMicrosecondBufferBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.DurationMicrosecondBufferBuilder.html "type arrow::array::builder::DurationMicrosecondBufferBuilder") Buffer builder for elaspsed time of microseconds unit. [DurationMicrosecondBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.DurationMicrosecondBuilder.html "type arrow::array::builder::DurationMicrosecondBuilder") An elapsed time in microseconds array builder. [DurationMillisecondBufferBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.DurationMillisecondBufferBuilder.html "type arrow::array::builder::DurationMillisecondBufferBuilder") Buffer builder for elaspsed time of milliseconds unit. [DurationMillisecondBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.DurationMillisecondBuilder.html "type arrow::array::builder::DurationMillisecondBuilder") An elapsed time in milliseconds array builder. [DurationNanosecondBufferBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.DurationNanosecondBufferBuilder.html "type arrow::array::builder::DurationNanosecondBufferBuilder") Buffer builder for elaspsed time of nanoseconds unit. [DurationNanosecondBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.DurationNanosecondBuilder.html "type arrow::array::builder::DurationNanosecondBuilder") An elapsed time in nanoseconds array builder. [DurationSecondBufferBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.DurationSecondBufferBuilder.html "type arrow::array::builder::DurationSecondBufferBuilder") Buffer builder for elaspsed time of second unit. [DurationSecondBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.DurationSecondBuilder.html "type arrow::array::builder::DurationSecondBuilder") An elapsed time in seconds array builder. [Float16BufferBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.Float16BufferBuilder.html "type arrow::array::builder::Float16BufferBuilder") Buffer builder for 16-bit floating point type. [Float16Builder](https://docs.rs/arrow/latest/arrow/array/builder/type.Float16Builder.html "type arrow::array::builder::Float16Builder") A 16-bit floating point array builder. [Float32BufferBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.Float32BufferBuilder.html "type arrow::array::builder::Float32BufferBuilder") Buffer builder for 32-bit floating point type. [Float32Builder](https://docs.rs/arrow/latest/arrow/array/builder/type.Float32Builder.html "type arrow::array::builder::Float32Builder") A 32-bit floating point array builder. [Float64BufferBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.Float64BufferBuilder.html "type arrow::array::builder::Float64BufferBuilder") Buffer builder for 64-bit floating point type. [Float64Builder](https://docs.rs/arrow/latest/arrow/array/builder/type.Float64Builder.html "type arrow::array::builder::Float64Builder") A 64-bit floating point array builder. [GenericBinaryBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.GenericBinaryBuilder.html "type arrow::array::builder::GenericBinaryBuilder") Array builder for [`GenericBinaryArray`](https://docs.rs/arrow/latest/arrow/array/type.GenericBinaryArray.html "type arrow::array::GenericBinaryArray") [GenericStringBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.GenericStringBuilder.html "type arrow::array::builder::GenericStringBuilder") Array builder for [`GenericStringArray`](https://docs.rs/arrow/latest/arrow/array/type.GenericStringArray.html "type arrow::array::GenericStringArray") [Int8BufferBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.Int8BufferBuilder.html "type arrow::array::builder::Int8BufferBuilder") Buffer builder for signed 8-bit integer type. [Int8Builder](https://docs.rs/arrow/latest/arrow/array/builder/type.Int8Builder.html "type arrow::array::builder::Int8Builder") A signed 8-bit integer array builder. [Int16BufferBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.Int16BufferBuilder.html "type arrow::array::builder::Int16BufferBuilder") Buffer builder for signed 16-bit integer type. [Int16Builder](https://docs.rs/arrow/latest/arrow/array/builder/type.Int16Builder.html "type arrow::array::builder::Int16Builder") A signed 16-bit integer array builder. [Int32BufferBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.Int32BufferBuilder.html "type arrow::array::builder::Int32BufferBuilder") Buffer builder for signed 32-bit integer type. [Int32Builder](https://docs.rs/arrow/latest/arrow/array/builder/type.Int32Builder.html "type arrow::array::builder::Int32Builder") A signed 32-bit integer array builder. [Int64BufferBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.Int64BufferBuilder.html "type arrow::array::builder::Int64BufferBuilder") Buffer builder for signed 64-bit integer type. [Int64Builder](https://docs.rs/arrow/latest/arrow/array/builder/type.Int64Builder.html "type arrow::array::builder::Int64Builder") A signed 64-bit integer array builder. [IntervalDayTimeBufferBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.IntervalDayTimeBufferBuilder.html "type arrow::array::builder::IntervalDayTimeBufferBuilder") Buffer builder for “calendar” interval in days and milliseconds. [IntervalDayTimeBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.IntervalDayTimeBuilder.html "type arrow::array::builder::IntervalDayTimeBuilder") A “calendar” interval in days and milliseconds array builder. [IntervalMonthDayNanoBufferBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.IntervalMonthDayNanoBufferBuilder.html "type arrow::array::builder::IntervalMonthDayNanoBufferBuilder") Buffer builder “calendar” interval in months, days, and nanoseconds. [IntervalMonthDayNanoBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.IntervalMonthDayNanoBuilder.html "type arrow::array::builder::IntervalMonthDayNanoBuilder") A “calendar” interval in months, days, and nanoseconds array builder. [IntervalYearMonthBufferBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.IntervalYearMonthBufferBuilder.html "type arrow::array::builder::IntervalYearMonthBufferBuilder") Buffer builder for “calendar” interval in months. [IntervalYearMonthBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.IntervalYearMonthBuilder.html "type arrow::array::builder::IntervalYearMonthBuilder") A “calendar” interval in months array builder. [LargeBinaryBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.LargeBinaryBuilder.html "type arrow::array::builder::LargeBinaryBuilder") Builder for [`LargeBinaryArray`](https://docs.rs/arrow/latest/arrow/array/type.LargeBinaryArray.html "type arrow::array::LargeBinaryArray") [LargeBinaryDictionaryBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.LargeBinaryDictionaryBuilder.html "type arrow::array::builder::LargeBinaryDictionaryBuilder") Builder for [`DictionaryArray`](https://docs.rs/arrow/latest/arrow/array/struct.DictionaryArray.html "struct arrow::array::DictionaryArray") of [`LargeBinaryArray`](https://docs.rs/arrow/latest/arrow/array/type.LargeBinaryArray.html "type arrow::array::LargeBinaryArray") [LargeBinaryRunBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.LargeBinaryRunBuilder.html "type arrow::array::builder::LargeBinaryRunBuilder") Builder for [`RunArray`](https://docs.rs/arrow/latest/arrow/array/struct.RunArray.html "struct arrow::array::RunArray") of [`LargeBinaryArray`](https://docs.rs/arrow/latest/arrow/array/type.LargeBinaryArray.html "type arrow::array::LargeBinaryArray") [LargeListBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.LargeListBuilder.html "type arrow::array::builder::LargeListBuilder") Builder for [`LargeListArray`](https://docs.rs/arrow/latest/arrow/array/type.LargeListArray.html "type arrow::array::LargeListArray") [LargeListViewBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.LargeListViewBuilder.html "type arrow::array::builder::LargeListViewBuilder") Builder for [`LargeListViewArray`](https://docs.rs/arrow/latest/arrow/array/type.LargeListViewArray.html "type arrow::array::LargeListViewArray") [LargeStringBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.LargeStringBuilder.html "type arrow::array::builder::LargeStringBuilder") Builder for [`LargeStringArray`](https://docs.rs/arrow/latest/arrow/array/type.LargeStringArray.html "type arrow::array::LargeStringArray") [LargeStringDictionaryBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.LargeStringDictionaryBuilder.html "type arrow::array::builder::LargeStringDictionaryBuilder") Builder for [`DictionaryArray`](https://docs.rs/arrow/latest/arrow/array/struct.DictionaryArray.html "struct arrow::array::DictionaryArray") of [`LargeStringArray`](https://docs.rs/arrow/latest/arrow/array/type.LargeStringArray.html "type arrow::array::LargeStringArray") [LargeStringRunBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.LargeStringRunBuilder.html "type arrow::array::builder::LargeStringRunBuilder") Builder for [`RunArray`](https://docs.rs/arrow/latest/arrow/array/struct.RunArray.html "struct arrow::array::RunArray") of [`LargeStringArray`](https://docs.rs/arrow/latest/arrow/array/type.LargeStringArray.html "type arrow::array::LargeStringArray") [ListBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.ListBuilder.html "type arrow::array::builder::ListBuilder") Builder for [`ListArray`](https://docs.rs/arrow/latest/arrow/array/type.ListArray.html "type arrow::array::ListArray") [ListViewBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.ListViewBuilder.html "type arrow::array::builder::ListViewBuilder") Builder for [`ListViewArray`](https://docs.rs/arrow/latest/arrow/array/type.ListViewArray.html "type arrow::array::ListViewArray") [StringBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.StringBuilder.html "type arrow::array::builder::StringBuilder") Builder for [`StringArray`](https://docs.rs/arrow/latest/arrow/array/type.StringArray.html "type arrow::array::StringArray") [StringDictionaryBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.StringDictionaryBuilder.html "type arrow::array::builder::StringDictionaryBuilder") Builder for [`DictionaryArray`](https://docs.rs/arrow/latest/arrow/array/struct.DictionaryArray.html "struct arrow::array::DictionaryArray") of [`StringArray`](https://docs.rs/arrow/latest/arrow/array/type.StringArray.html "type arrow::array::StringArray") [StringRunBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.StringRunBuilder.html "type arrow::array::builder::StringRunBuilder") Builder for [`RunArray`](https://docs.rs/arrow/latest/arrow/array/struct.RunArray.html "struct arrow::array::RunArray") of [`StringArray`](https://docs.rs/arrow/latest/arrow/array/type.StringArray.html "type arrow::array::StringArray") [StringViewBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.StringViewBuilder.html "type arrow::array::builder::StringViewBuilder") Array builder for [`StringViewArray`](https://docs.rs/arrow/latest/arrow/array/type.StringViewArray.html "type arrow::array::StringViewArray") [Time32MillisecondBufferBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.Time32MillisecondBufferBuilder.html "type arrow::array::builder::Time32MillisecondBufferBuilder") Buffer builder for 32-bit elaspsed time since midnight of millisecond unit. [Time32MillisecondBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.Time32MillisecondBuilder.html "type arrow::array::builder::Time32MillisecondBuilder") A 32-bit elaspsed time in milliseconds array builder. [Time32SecondBufferBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.Time32SecondBufferBuilder.html "type arrow::array::builder::Time32SecondBufferBuilder") Buffer builder for 32-bit elaspsed time since midnight of second unit. [Time32SecondBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.Time32SecondBuilder.html "type arrow::array::builder::Time32SecondBuilder") A 32-bit elaspsed time in seconds array builder. [Time64MicrosecondBufferBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.Time64MicrosecondBufferBuilder.html "type arrow::array::builder::Time64MicrosecondBufferBuilder") Buffer builder for 64-bit elaspsed time since midnight of microsecond unit. [Time64MicrosecondBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.Time64MicrosecondBuilder.html "type arrow::array::builder::Time64MicrosecondBuilder") A 64-bit elaspsed time in microseconds array builder. [Time64NanosecondBufferBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.Time64NanosecondBufferBuilder.html "type arrow::array::builder::Time64NanosecondBufferBuilder") Buffer builder for 64-bit elaspsed time since midnight of nanosecond unit. [Time64NanosecondBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.Time64NanosecondBuilder.html "type arrow::array::builder::Time64NanosecondBuilder") A 64-bit elaspsed time in nanoseconds array builder. [TimestampMicrosecondBufferBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.TimestampMicrosecondBufferBuilder.html "type arrow::array::builder::TimestampMicrosecondBufferBuilder") Buffer builder for timestamp type of microsecond unit. [TimestampMicrosecondBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.TimestampMicrosecondBuilder.html "type arrow::array::builder::TimestampMicrosecondBuilder") A timestamp microsecond array builder. [TimestampMillisecondBufferBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.TimestampMillisecondBufferBuilder.html "type arrow::array::builder::TimestampMillisecondBufferBuilder") Buffer builder for timestamp type of millisecond unit. [TimestampMillisecondBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.TimestampMillisecondBuilder.html "type arrow::array::builder::TimestampMillisecondBuilder") A timestamp millisecond array builder. [TimestampNanosecondBufferBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.TimestampNanosecondBufferBuilder.html "type arrow::array::builder::TimestampNanosecondBufferBuilder") Buffer builder for timestamp type of nanosecond unit. [TimestampNanosecondBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.TimestampNanosecondBuilder.html "type arrow::array::builder::TimestampNanosecondBuilder") A timestamp nanosecond array builder. [TimestampSecondBufferBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.TimestampSecondBufferBuilder.html "type arrow::array::builder::TimestampSecondBufferBuilder") Buffer builder for timestamp type of second unit. [TimestampSecondBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.TimestampSecondBuilder.html "type arrow::array::builder::TimestampSecondBuilder") A timestamp second array builder. [UInt8BufferBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.UInt8BufferBuilder.html "type arrow::array::builder::UInt8BufferBuilder") Buffer builder for usigned 8-bit integer type. [UInt8Builder](https://docs.rs/arrow/latest/arrow/array/builder/type.UInt8Builder.html "type arrow::array::builder::UInt8Builder") An usigned 8-bit integer array builder. [UInt16BufferBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.UInt16BufferBuilder.html "type arrow::array::builder::UInt16BufferBuilder") Buffer builder for usigned 16-bit integer type. [UInt16Builder](https://docs.rs/arrow/latest/arrow/array/builder/type.UInt16Builder.html "type arrow::array::builder::UInt16Builder") An usigned 16-bit integer array builder. [UInt32BufferBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.UInt32BufferBuilder.html "type arrow::array::builder::UInt32BufferBuilder") Buffer builder for usigned 32-bit integer type. [UInt32Builder](https://docs.rs/arrow/latest/arrow/array/builder/type.UInt32Builder.html "type arrow::array::builder::UInt32Builder") An usigned 32-bit integer array builder. [UInt64BufferBuilder](https://docs.rs/arrow/latest/arrow/array/builder/type.UInt64BufferBuilder.html "type arrow::array::builder::UInt64BufferBuilder") Buffer builder for usigned 64-bit integer type. [UInt64Builder](https://docs.rs/arrow/latest/arrow/array/builder/type.UInt64Builder.html "type arrow::array::builder::UInt64Builder") An usigned 64-bit integer array builder. --- # Schema in arrow::datatypes - Rust [Docs.rs](https://docs.rs/) * [arrow-58.1.0](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html# "Rust implementation of Apache Arrow") * arrow 58.1.0 * [Permalink](https://docs.rs/arrow/58.1.0/arrow/datatypes/struct.Schema.html "Get a link to this specific version") * [Docs.rs crate page](https://docs.rs/crate/arrow/latest "See arrow in docs.rs") * [Apache-2.0](https://spdx.org/licenses/Apache-2.0) * Links * [Homepage](https://github.com/apache/arrow-rs) * [Repository](https://github.com/apache/arrow-rs) * [crates.io](https://crates.io/crates/arrow "See arrow in crates.io") * [Source](https://docs.rs/crate/arrow/latest/source/ "Browse source of arrow-58.1.0") * Owners * [andygrove](https://crates.io/users/andygrove) * [kou](https://crates.io/users/kou) * [kszucs](https://crates.io/users/kszucs) * [xhochy](https://crates.io/users/xhochy) * [nevi-me](https://crates.io/users/nevi-me) * [alamb](https://crates.io/users/alamb) * [tustvold](https://crates.io/users/tustvold) * Dependencies * * [arrow-arith ^58.1.0 _normal_](https://docs.rs/arrow-arith/^58.1.0/) * [arrow-array ^58.1.0 _normal_](https://docs.rs/arrow-array/^58.1.0/) * [arrow-buffer ^58.1.0 _normal_](https://docs.rs/arrow-buffer/^58.1.0/) * [arrow-cast ^58.1.0 _normal_](https://docs.rs/arrow-cast/^58.1.0/) * [arrow-csv ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-csv/^58.1.0/) * [arrow-data ^58.1.0 _normal_](https://docs.rs/arrow-data/^58.1.0/) * [arrow-ipc ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-ipc/^58.1.0/) * [arrow-json ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-json/^58.1.0/) * [arrow-ord ^58.1.0 _normal_](https://docs.rs/arrow-ord/^58.1.0/) * [arrow-pyarrow ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-pyarrow/^58.1.0/) * [arrow-row ^58.1.0 _normal_](https://docs.rs/arrow-row/^58.1.0/) * [arrow-schema ^58.1.0 _normal_](https://docs.rs/arrow-schema/^58.1.0/) * [arrow-select ^58.1.0 _normal_](https://docs.rs/arrow-select/^58.1.0/) * [arrow-string ^58.1.0 _normal_](https://docs.rs/arrow-string/^58.1.0/) * [half ^2.1 _normal_ _optional_](https://docs.rs/half/^2.1/) * [rand ^0.9 _normal_ _optional_](https://docs.rs/rand/^0.9/) * [bytes ^1.9 _dev_](https://docs.rs/bytes/^1.9/) * [chrono ^0.4.40 _dev_](https://docs.rs/chrono/^0.4.40/) * [criterion ^0.8.0 _dev_](https://docs.rs/criterion/^0.8.0/) * [half ^2.1 _dev_](https://docs.rs/half/^2.1/) * [memmap2 ^0.9.3 _dev_](https://docs.rs/memmap2/^0.9.3/) * [rand ^0.9 _dev_](https://docs.rs/rand/^0.9/) * [serde ^1.0 _dev_](https://docs.rs/serde/^1.0/) * Versions * [**100%** of the crate is documented](https://docs.rs/crate/arrow/latest) * [Platform](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html#) * [x86\_64-unknown-linux-gnu](https://docs.rs/crate/arrow/latest/target-redirect/arrow/datatypes/struct.Schema.html) * [Feature flags](https://docs.rs/crate/arrow/latest/features "Browse available feature flags of arrow-58.1.0") * [docs.rs](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html#) * [About docs.rs](https://docs.rs/about) * [Badges](https://docs.rs/about/badges) * [Builds](https://docs.rs/about/builds) * [Metadata](https://docs.rs/about/metadata) * [Shorthand URLs](https://docs.rs/about/redirections) * [Download](https://docs.rs/about/download) * [Rustdoc JSON](https://docs.rs/about/rustdoc-json) * [Build queue](https://docs.rs/releases/queue) * [Privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#docs.rs) * [Rust](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html#) * [Rust website](https://www.rust-lang.org/) * [The Book](https://doc.rust-lang.org/book/) * [Standard Library API Reference](https://doc.rust-lang.org/std/) * [Rust by Example](https://doc.rust-lang.org/rust-by-example/) * [The Cargo Guide](https://doc.rust-lang.org/cargo/guide/) * [Clippy Documentation](https://doc.rust-lang.org/nightly/clippy) [Skip to main content](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html#main-content) [Schema](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html#) --------------------------------------------------------------------------- [arrow](https://docs.rs/arrow/latest/arrow/index.html) ::[datatypes](https://docs.rs/arrow/latest/arrow/datatypes/index.html) Struct Schema Copy item path ============================ [Source](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/src/arrow_schema/schema.rs.html#187) pub struct Schema { pub fields: Fields, pub metadata: HashMap, } Expand description Describes the meta-data of an ordered sequence of relative types. Note that this information is only part of the meta-data and not part of the physical memory layout. Fields[§](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html#fields) ---------------------------------------------------------------------------------- [§](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html#structfield.fields) `fields: [Fields](https://docs.rs/arrow/latest/arrow/datatypes/struct.Fields.html "struct arrow::datatypes::Fields") ` A sequence of fields that describe the schema. [§](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html#structfield.metadata) `metadata: [HashMap](https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html "struct std::collections::hash::map::HashMap") <[String](https://doc.rust-lang.org/nightly/alloc/string/struct.String.html "struct alloc::string::String") , [String](https://doc.rust-lang.org/nightly/alloc/string/struct.String.html "struct alloc::string::String") >` A map of key-value pairs containing additional metadata. Implementations[§](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html#implementations) ---------------------------------------------------------------------------------------------------- [Source](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/src/arrow_schema/schema.rs.html#194) [§](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html#impl-Schema) ### impl [Schema](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html "struct arrow::datatypes::Schema") [Source](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/src/arrow_schema/schema.rs.html#196) #### pub fn [empty](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html#method.empty) () -> [Schema](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html "struct arrow::datatypes::Schema") Creates an empty `Schema` [Source](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/src/arrow_schema/schema.rs.html#214) #### pub fn [new](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html#method.new) (fields: impl [Into](https://doc.rust-lang.org/nightly/core/convert/trait.Into.html "trait core::convert::Into") <[Fields](https://docs.rs/arrow/latest/arrow/datatypes/struct.Fields.html "struct arrow::datatypes::Fields") \>) -> [Schema](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html "struct arrow::datatypes::Schema") Creates a new [`Schema`](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html "struct arrow::datatypes::Schema") from a sequence of [`Field`](https://docs.rs/arrow/latest/arrow/datatypes/struct.Field.html "struct arrow::datatypes::Field") values. ##### [§](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html#example) Example let field_a = Field::new("a", DataType::Int64, false); let field_b = Field::new("b", DataType::Boolean, false); let schema = Schema::new(vec![field_a, field_b]); [Source](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/src/arrow_schema/schema.rs.html#236) #### pub fn [new\_with\_metadata](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html#method.new_with_metadata) ( fields: impl [Into](https://doc.rust-lang.org/nightly/core/convert/trait.Into.html "trait core::convert::Into") <[Fields](https://docs.rs/arrow/latest/arrow/datatypes/struct.Fields.html "struct arrow::datatypes::Fields") \>, metadata: [HashMap](https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html "struct std::collections::hash::map::HashMap") <[String](https://doc.rust-lang.org/nightly/alloc/string/struct.String.html "struct alloc::string::String") , [String](https://doc.rust-lang.org/nightly/alloc/string/struct.String.html "struct alloc::string::String") \>, ) -> [Schema](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html "struct arrow::datatypes::Schema") Creates a new [`Schema`](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html "struct arrow::datatypes::Schema") from a sequence of [`Field`](https://docs.rs/arrow/latest/arrow/datatypes/struct.Field.html "struct arrow::datatypes::Field") values and adds additional metadata in form of key value pairs. ##### [§](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html#example-1) Example let field_a = Field::new("a", DataType::Int64, false); let field_b = Field::new("b", DataType::Boolean, false); let mut metadata: HashMap = HashMap::new(); metadata.insert("row_count".to_string(), "100".to_string()); let schema = Schema::new_with_metadata(vec![field_a, field_b], metadata); [Source](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/src/arrow_schema/schema.rs.html#244) #### pub fn [with\_metadata](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html#method.with_metadata) (self, metadata: [HashMap](https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html "struct std::collections::hash::map::HashMap") <[String](https://doc.rust-lang.org/nightly/alloc/string/struct.String.html "struct alloc::string::String") , [String](https://doc.rust-lang.org/nightly/alloc/string/struct.String.html "struct alloc::string::String") \>) -> [Schema](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html "struct arrow::datatypes::Schema") Sets the metadata of this `Schema` to be `metadata` and returns self [Source](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/src/arrow_schema/schema.rs.html#251) #### pub fn [project](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html#method.project) (&self, indices: &\[[usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html)\ \]) -> [Result](https://doc.rust-lang.org/nightly/core/result/enum.Result.html "enum core::result::Result") <[Schema](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html "struct arrow::datatypes::Schema") , [ArrowError](https://docs.rs/arrow/latest/arrow/error/enum.ArrowError.html "enum arrow::error::ArrowError") \> Returns a new schema with only the specified columns in the new schema This carries metadata from the parent schema over as well [Source](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/src/arrow_schema/schema.rs.html#295) #### pub fn [try\_merge](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html#method.try_merge) ( schemas: impl [IntoIterator](https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html "trait core::iter::traits::collect::IntoIterator") , ) -> [Result](https://doc.rust-lang.org/nightly/core/result/enum.Result.html "enum core::result::Result") <[Schema](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html "struct arrow::datatypes::Schema") , [ArrowError](https://docs.rs/arrow/latest/arrow/error/enum.ArrowError.html "enum arrow::error::ArrowError") \> Merge schema into self if it is compatible. Struct fields will be merged recursively. Example: let merged = Schema::try_merge(vec![\ Schema::new(vec![\ Field::new("c1", DataType::Int64, false),\ Field::new("c2", DataType::Utf8, false),\ ]),\ Schema::new(vec![\ Field::new("c1", DataType::Int64, true),\ Field::new("c2", DataType::Utf8, false),\ Field::new("c3", DataType::Utf8, false),\ ]),\ ]).unwrap(); assert_eq!( merged, Schema::new(vec![\ Field::new("c1", DataType::Int64, true),\ Field::new("c2", DataType::Utf8, false),\ Field::new("c3", DataType::Utf8, false),\ ]), ); [Source](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/src/arrow_schema/schema.rs.html#323) #### pub const fn [fields](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html#method.fields) (&self) -> &[Fields](https://docs.rs/arrow/latest/arrow/datatypes/struct.Fields.html "struct arrow::datatypes::Fields") Returns an immutable reference of the vector of `Field` instances. [Source](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/src/arrow_schema/schema.rs.html#364) #### pub fn [flattened\_fields](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html#method.flattened_fields) (&self) -> [Vec](https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html "struct alloc::vec::Vec") <&[Field](https://docs.rs/arrow/latest/arrow/datatypes/struct.Field.html "struct arrow::datatypes::Field") \> Returns a vector with references to all fields (including nested fields) ##### [§](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html#example-2) Example use std::sync::Arc; use arrow_schema::{DataType, Field, Fields, Schema}; let f1 = Arc::new(Field::new("a", DataType::Boolean, false)); let f2_inner = Arc::new(Field::new("b_inner", DataType::Int8, false)); let f2 = Arc::new(Field::new("b", DataType::List(f2_inner.clone()), false)); let f3_inner1 = Arc::new(Field::new("c_inner1", DataType::Int8, false)); let f3_inner2 = Arc::new(Field::new("c_inner2", DataType::Int8, false)); let f3 = Arc::new(Field::new( "c", DataType::Struct(vec![f3_inner1.clone(), f3_inner2.clone()].into()), false )); let mut schema = Schema::new(vec![\ f1.clone(), f2.clone(), f3.clone()\ ]); assert_eq!( schema.flattened_fields(), vec![\ f1.as_ref(),\ f2.as_ref(),\ f2_inner.as_ref(),\ f3.as_ref(),\ f3_inner1.as_ref(),\ f3_inner2.as_ref()\ ] ); [Source](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/src/arrow_schema/schema.rs.html#374) #### pub fn [field](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html#method.field) (&self, i: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) ) -> &[Field](https://docs.rs/arrow/latest/arrow/datatypes/struct.Field.html "struct arrow::datatypes::Field") Returns an immutable reference of a specific [`Field`](https://docs.rs/arrow/latest/arrow/datatypes/struct.Field.html "struct arrow::datatypes::Field") instance selected using an offset within the internal `fields` vector. ##### [§](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html#panics) Panics Panics if index out of bounds [Source](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/src/arrow_schema/schema.rs.html#379) #### pub fn [field\_with\_name](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html#method.field_with_name) (&self, name: &[str](https://doc.rust-lang.org/nightly/std/primitive.str.html) ) -> [Result](https://doc.rust-lang.org/nightly/core/result/enum.Result.html "enum core::result::Result") <&[Field](https://docs.rs/arrow/latest/arrow/datatypes/struct.Field.html "struct arrow::datatypes::Field") , [ArrowError](https://docs.rs/arrow/latest/arrow/error/enum.ArrowError.html "enum arrow::error::ArrowError") \> Returns an immutable reference of a specific [`Field`](https://docs.rs/arrow/latest/arrow/datatypes/struct.Field.html "struct arrow::datatypes::Field") instance selected by name. [Source](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/src/arrow_schema/schema.rs.html#389) #### pub fn [fields\_with\_dict\_id](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html#method.fields_with_dict_id) (&self, dict\_id: [i64](https://doc.rust-lang.org/nightly/std/primitive.i64.html) ) -> [Vec](https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html "struct alloc::vec::Vec") <&[Field](https://docs.rs/arrow/latest/arrow/datatypes/struct.Field.html "struct arrow::datatypes::Field") \> 👎Deprecated since 54.0.0: The ability to preserve dictionary IDs will be removed. With it, all functions related to it. Returns a vector of immutable references to all [`Field`](https://docs.rs/arrow/latest/arrow/datatypes/struct.Field.html "struct arrow::datatypes::Field") instances selected by the dictionary ID they use. [Source](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/src/arrow_schema/schema.rs.html#398) #### pub fn [index\_of](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html#method.index_of) (&self, name: &[str](https://doc.rust-lang.org/nightly/std/primitive.str.html) ) -> [Result](https://doc.rust-lang.org/nightly/core/result/enum.Result.html "enum core::result::Result") <[usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) , [ArrowError](https://docs.rs/arrow/latest/arrow/error/enum.ArrowError.html "enum arrow::error::ArrowError") \> Find the index of the column with the given name. [Source](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/src/arrow_schema/schema.rs.html#410) #### pub const fn [metadata](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html#method.metadata) (&self) -> &[HashMap](https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html "struct std::collections::hash::map::HashMap") <[String](https://doc.rust-lang.org/nightly/alloc/string/struct.String.html "struct alloc::string::String") , [String](https://doc.rust-lang.org/nightly/alloc/string/struct.String.html "struct alloc::string::String") \> Returns an immutable reference to the Map of custom metadata key-value pairs. [Source](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/src/arrow_schema/schema.rs.html#457) #### pub fn [normalize](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html#method.normalize) ( &self, separator: &[str](https://doc.rust-lang.org/nightly/std/primitive.str.html) , max\_level: [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <[usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) \>, ) -> [Result](https://doc.rust-lang.org/nightly/core/result/enum.Result.html "enum core::result::Result") <[Schema](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html "struct arrow::datatypes::Schema") , [ArrowError](https://docs.rs/arrow/latest/arrow/error/enum.ArrowError.html "enum arrow::error::ArrowError") \> Normalize a [`Schema`](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html "struct arrow::datatypes::Schema") into a flat table. Nested [`Field`](https://docs.rs/arrow/latest/arrow/datatypes/struct.Field.html "struct arrow::datatypes::Field") s will generate names separated by `separator`, up to a depth of `max_level` (unlimited if `None`). e.g. given a [`Schema`](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html "struct arrow::datatypes::Schema") : "foo": StructArray<"bar": Utf8> A separator of `"."` would generate a batch with the schema: "foo.bar": Utf8 Note that giving a depth of `Some(0)` to `max_level` is the same as passing in `None`; it will be treated as unlimited. ##### [§](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html#example-3) Example let schema = Schema::new(vec![\ Field::new(\ "a",\ DataType::Struct(Fields::from(vec![\ Arc::new(Field::new("animals", DataType::Utf8, true)),\ Arc::new(Field::new("n_legs", DataType::Int64, true)),\ ])),\ false,\ ),\ ]) .normalize(".", None) .expect("valid normalization"); let expected = Schema::new(vec![\ Field::new("a.animals", DataType::Utf8, true),\ Field::new("a.n_legs", DataType::Int64, true),\ ]); assert_eq!(schema, expected); [Source](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/src/arrow_schema/schema.rs.html#499) #### pub fn [column\_with\_name](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html#method.column_with_name) (&self, name: &[str](https://doc.rust-lang.org/nightly/std/primitive.str.html) ) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <([usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) , &[Field](https://docs.rs/arrow/latest/arrow/datatypes/struct.Field.html "struct arrow::datatypes::Field") )> Look up a column by name and return a immutable reference to the column along with its index. [Source](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/src/arrow_schema/schema.rs.html#510) #### pub fn [contains](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html#method.contains) (&self, other: &[Schema](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html "struct arrow::datatypes::Schema") ) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) Check to see if `self` is a superset of `other` schema. In particular returns true if `self.metadata` is a superset of `other.metadata` and [`Fields::contains`](https://docs.rs/arrow/latest/arrow/datatypes/struct.Fields.html#method.contains "method arrow::datatypes::Fields::contains") for `self.fields` and `other.fields` In other words, any record that conforms to `other` should also conform to `self`. Trait Implementations[§](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html#trait-implementations) ---------------------------------------------------------------------------------------------------------------- [Source](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/src/arrow_schema/schema.rs.html#549) [§](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html#impl-AsRef%3CSchema%3E-for-Schema) ### impl [AsRef](https://doc.rust-lang.org/nightly/core/convert/trait.AsRef.html "trait core::convert::AsRef") <[Schema](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html "struct arrow::datatypes::Schema") \> for [Schema](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html "struct arrow::datatypes::Schema") [Source](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/src/arrow_schema/schema.rs.html#550) [§](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html#method.as_ref) #### fn [as\_ref](https://doc.rust-lang.org/nightly/core/convert/trait.AsRef.html#tymethod.as_ref) (&self) -> &[Schema](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html "struct arrow::datatypes::Schema") Converts this type into a shared reference of the (usually inferred) input type. [Source](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/src/arrow_schema/schema.rs.html#185) [§](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html#impl-Clone-for-Schema) ### impl [Clone](https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html "trait core::clone::Clone") for [Schema](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html "struct arrow::datatypes::Schema") [Source](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/src/arrow_schema/schema.rs.html#185) [§](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html#method.clone) #### fn [clone](https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone) (&self) -> [Schema](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html "struct arrow::datatypes::Schema") Returns a duplicate of the value. [Read more](https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone) 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/clone.rs.html#245-247) [§](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html#method.clone_from) #### fn [clone\_from](https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from) (&mut self, source: &Self) Performs copy-assignment from `source`. [Read more](https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from) [Source](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/src/arrow_schema/schema.rs.html#185) [§](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html#impl-Debug-for-Schema) ### impl [Debug](https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html "trait core::fmt::Debug") for [Schema](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html "struct arrow::datatypes::Schema") [Source](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/src/arrow_schema/schema.rs.html#185) [§](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html#method.fmt) #### fn [fmt](https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt) (&self, f: &mut [Formatter](https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html "struct core::fmt::Formatter") <'\_>) -> [Result](https://doc.rust-lang.org/nightly/core/result/enum.Result.html "enum core::result::Result") <[()](https://doc.rust-lang.org/nightly/std/primitive.unit.html) , [Error](https://doc.rust-lang.org/nightly/core/fmt/struct.Error.html "struct core::fmt::Error") \> Formats the value using the given formatter. [Read more](https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt) [Source](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/src/arrow_schema/schema.rs.html#520) [§](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html#impl-Display-for-Schema) ### impl [Display](https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html "trait core::fmt::Display") for [Schema](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html "struct arrow::datatypes::Schema") [Source](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/src/arrow_schema/schema.rs.html#521) [§](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html#method.fmt-1) #### fn [fmt](https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html#tymethod.fmt) (&self, f: &mut [Formatter](https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html "struct core::fmt::Formatter") <'\_>) -> [Result](https://doc.rust-lang.org/nightly/core/result/enum.Result.html "enum core::result::Result") <[()](https://doc.rust-lang.org/nightly/std/primitive.unit.html) , [Error](https://doc.rust-lang.org/nightly/core/fmt/struct.Error.html "struct core::fmt::Error") \> Formats the value using the given formatter. [Read more](https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html#tymethod.fmt) [Source](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/src/arrow_schema/schema.rs.html#143) [§](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html#impl-From%3C%26Schema%3E-for-SchemaBuilder) ### impl [From](https://doc.rust-lang.org/nightly/core/convert/trait.From.html "trait core::convert::From") <&[Schema](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html "struct arrow::datatypes::Schema") \> for [SchemaBuilder](https://docs.rs/arrow/latest/arrow/datatypes/struct.SchemaBuilder.html "struct arrow::datatypes::SchemaBuilder") [Source](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/src/arrow_schema/schema.rs.html#144) [§](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html#method.from) #### fn [from](https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from) (value: &[Schema](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html "struct arrow::datatypes::Schema") ) -> [SchemaBuilder](https://docs.rs/arrow/latest/arrow/datatypes/struct.SchemaBuilder.html "struct arrow::datatypes::SchemaBuilder") Converts to this type from the input type. [Source](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/src/arrow_schema/schema.rs.html#149) [§](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html#impl-From%3CSchema%3E-for-SchemaBuilder) ### impl [From](https://doc.rust-lang.org/nightly/core/convert/trait.From.html "trait core::convert::From") <[Schema](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html "struct arrow::datatypes::Schema") \> for [SchemaBuilder](https://docs.rs/arrow/latest/arrow/datatypes/struct.SchemaBuilder.html "struct arrow::datatypes::SchemaBuilder") [Source](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/src/arrow_schema/schema.rs.html#150) [§](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html#method.from-1) #### fn [from](https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from) (value: [Schema](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html "struct arrow::datatypes::Schema") ) -> [SchemaBuilder](https://docs.rs/arrow/latest/arrow/datatypes/struct.SchemaBuilder.html "struct arrow::datatypes::SchemaBuilder") Converts to this type from the input type. [Source](https://docs.rs/arrow-pyarrow/58.1.0/x86_64-unknown-linux-gnu/src/arrow_pyarrow/lib.rs.html#231) [§](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html#impl-FromPyArrow-for-Schema) ### impl [FromPyArrow](https://docs.rs/arrow-pyarrow/58.1.0/x86_64-unknown-linux-gnu/arrow_pyarrow/trait.FromPyArrow.html "trait arrow_pyarrow::FromPyArrow") for [Schema](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html "struct arrow::datatypes::Schema") [Source](https://docs.rs/arrow-pyarrow/58.1.0/x86_64-unknown-linux-gnu/src/arrow_pyarrow/lib.rs.html#232) [§](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html#method.from_pyarrow_bound) #### fn [from\_pyarrow\_bound](https://docs.rs/arrow-pyarrow/58.1.0/x86_64-unknown-linux-gnu/arrow_pyarrow/trait.FromPyArrow.html#tymethod.from_pyarrow_bound) (value: &[Bound](https://docs.rs/pyo3/0.28.2/x86_64-unknown-linux-gnu/pyo3/instance/struct.Bound.html "struct pyo3::instance::Bound") <'\_, [PyAny](https://docs.rs/pyo3/0.28.2/x86_64-unknown-linux-gnu/pyo3/types/any/struct.PyAny.html "struct pyo3::types::any::PyAny") \>) -> [Result](https://doc.rust-lang.org/nightly/core/result/enum.Result.html "enum core::result::Result") <[Schema](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html "struct arrow::datatypes::Schema") , [PyErr](https://docs.rs/pyo3/0.28.2/x86_64-unknown-linux-gnu/pyo3/err/struct.PyErr.html "struct pyo3::err::PyErr") \> Convert a Python object to an arrow-rs type. [Read more](https://docs.rs/arrow-pyarrow/58.1.0/x86_64-unknown-linux-gnu/arrow_pyarrow/trait.FromPyArrow.html#tymethod.from_pyarrow_bound) [Source](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/src/arrow_schema/schema.rs.html#535) [§](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html#impl-Hash-for-Schema) ### impl [Hash](https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html "trait core::hash::Hash") for [Schema](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html "struct arrow::datatypes::Schema") [Source](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/src/arrow_schema/schema.rs.html#536) [§](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html#method.hash) #### fn [hash](https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#tymethod.hash) (&self, state: [&mut H](https://doc.rust-lang.org/nightly/std/primitive.reference.html) ) where H: [Hasher](https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html "trait core::hash::Hasher") , Feeds this value into the given [`Hasher`](https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html "trait core::hash::Hasher") . [Read more](https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#tymethod.hash) 1.3.0 · [Source](https://doc.rust-lang.org/nightly/src/core/hash/mod.rs.html#234-236) [§](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html#method.hash_slice) #### fn [hash\_slice](https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#method.hash_slice) (data: &\[Self\], state: [&mut H](https://doc.rust-lang.org/nightly/std/primitive.reference.html) ) where H: [Hasher](https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html "trait core::hash::Hasher") , Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , Feeds a slice of this type into the given [`Hasher`](https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html "trait core::hash::Hasher") . [Read more](https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#method.hash_slice) [Source](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/src/arrow_schema/schema.rs.html#185) [§](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html#impl-PartialEq-for-Schema) ### impl [PartialEq](https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html "trait core::cmp::PartialEq") for [Schema](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html "struct arrow::datatypes::Schema") [Source](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/src/arrow_schema/schema.rs.html#185) [§](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html#method.eq) #### fn [eq](https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq) (&self, other: &[Schema](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html "struct arrow::datatypes::Schema") ) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) Tests for `self` and `other` values to be equal, and is used by `==`. 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#264) [§](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html#method.ne) #### fn [ne](https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne) (&self, other: [&Rhs](https://doc.rust-lang.org/nightly/std/primitive.reference.html) ) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) Tests for `!=`. The default implementation is almost always sufficient, and should not be overridden without very good reason. [Source](https://docs.rs/arrow-pyarrow/58.1.0/x86_64-unknown-linux-gnu/src/arrow_pyarrow/lib.rs.html#260) [§](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html#impl-ToPyArrow-for-Schema) ### impl [ToPyArrow](https://docs.rs/arrow-pyarrow/58.1.0/x86_64-unknown-linux-gnu/arrow_pyarrow/trait.ToPyArrow.html "trait arrow_pyarrow::ToPyArrow") for [Schema](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html "struct arrow::datatypes::Schema") [Source](https://docs.rs/arrow-pyarrow/58.1.0/x86_64-unknown-linux-gnu/src/arrow_pyarrow/lib.rs.html#261) [§](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html#method.to_pyarrow) #### fn [to\_pyarrow](https://docs.rs/arrow-pyarrow/58.1.0/x86_64-unknown-linux-gnu/arrow_pyarrow/trait.ToPyArrow.html#tymethod.to_pyarrow) <'py>(&self, py: [Python](https://docs.rs/pyo3/0.28.2/x86_64-unknown-linux-gnu/pyo3/marker/struct.Python.html "struct pyo3::marker::Python") <'py>) -> [Result](https://doc.rust-lang.org/nightly/core/result/enum.Result.html "enum core::result::Result") <[Bound](https://docs.rs/pyo3/0.28.2/x86_64-unknown-linux-gnu/pyo3/instance/struct.Bound.html "struct pyo3::instance::Bound") <'py, [PyAny](https://docs.rs/pyo3/0.28.2/x86_64-unknown-linux-gnu/pyo3/types/any/struct.PyAny.html "struct pyo3::types::any::PyAny") \>, [PyErr](https://docs.rs/pyo3/0.28.2/x86_64-unknown-linux-gnu/pyo3/err/struct.PyErr.html "struct pyo3::err::PyErr") \> Convert the implemented type into a Python object without consuming it. [Source](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/src/arrow_schema/ffi.rs.html#642) [§](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html#impl-TryFrom%3C%26FFI_ArrowSchema%3E-for-Schema) ### impl [TryFrom](https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html "trait core::convert::TryFrom") <&[FFI\_ArrowSchema](https://docs.rs/arrow/latest/arrow/ffi/struct.FFI_ArrowSchema.html "struct arrow::ffi::FFI_ArrowSchema") \> for [Schema](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html "struct arrow::datatypes::Schema") [Source](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/src/arrow_schema/ffi.rs.html#643) [§](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html#associatedtype.Error) #### type [Error](https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error) = [ArrowError](https://docs.rs/arrow/latest/arrow/error/enum.ArrowError.html "enum arrow::error::ArrowError") The type returned in the event of a conversion error. [Source](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/src/arrow_schema/ffi.rs.html#645) [§](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html#method.try_from) #### fn [try\_from](https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from) (c\_schema: &[FFI\_ArrowSchema](https://docs.rs/arrow/latest/arrow/ffi/struct.FFI_ArrowSchema.html "struct arrow::ffi::FFI_ArrowSchema") ) -> [Result](https://doc.rust-lang.org/nightly/core/result/enum.Result.html "enum core::result::Result") <[Schema](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html "struct arrow::datatypes::Schema") , [ArrowError](https://docs.rs/arrow/latest/arrow/error/enum.ArrowError.html "enum arrow::error::ArrowError") \> Performs the conversion. [Source](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/src/arrow_schema/ffi.rs.html#810) [§](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html#impl-TryFrom%3C%26Schema%3E-for-FFI_ArrowSchema) ### impl [TryFrom](https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html "trait core::convert::TryFrom") <&[Schema](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html "struct arrow::datatypes::Schema") \> for [FFI\_ArrowSchema](https://docs.rs/arrow/latest/arrow/ffi/struct.FFI_ArrowSchema.html "struct arrow::ffi::FFI_ArrowSchema") [Source](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/src/arrow_schema/ffi.rs.html#811) [§](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html#associatedtype.Error-1) #### type [Error](https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error) = [ArrowError](https://docs.rs/arrow/latest/arrow/error/enum.ArrowError.html "enum arrow::error::ArrowError") The type returned in the event of a conversion error. [Source](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/src/arrow_schema/ffi.rs.html#813) [§](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html#method.try_from-1) #### fn [try\_from](https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from) (schema: &[Schema](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html "struct arrow::datatypes::Schema") ) -> [Result](https://doc.rust-lang.org/nightly/core/result/enum.Result.html "enum core::result::Result") <[FFI\_ArrowSchema](https://docs.rs/arrow/latest/arrow/ffi/struct.FFI_ArrowSchema.html "struct arrow::ffi::FFI_ArrowSchema") , [ArrowError](https://docs.rs/arrow/latest/arrow/error/enum.ArrowError.html "enum arrow::error::ArrowError") \> Performs the conversion. [Source](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/src/arrow_schema/ffi.rs.html#836) [§](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html#impl-TryFrom%3CSchema%3E-for-FFI_ArrowSchema) ### impl [TryFrom](https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html "trait core::convert::TryFrom") <[Schema](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html "struct arrow::datatypes::Schema") \> for [FFI\_ArrowSchema](https://docs.rs/arrow/latest/arrow/ffi/struct.FFI_ArrowSchema.html "struct arrow::ffi::FFI_ArrowSchema") [Source](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/src/arrow_schema/ffi.rs.html#837) [§](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html#associatedtype.Error-2) #### type [Error](https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error) = [ArrowError](https://docs.rs/arrow/latest/arrow/error/enum.ArrowError.html "enum arrow::error::ArrowError") The type returned in the event of a conversion error. [Source](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/src/arrow_schema/ffi.rs.html#839) [§](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html#method.try_from-2) #### fn [try\_from](https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from) (schema: [Schema](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html "struct arrow::datatypes::Schema") ) -> [Result](https://doc.rust-lang.org/nightly/core/result/enum.Result.html "enum core::result::Result") <[FFI\_ArrowSchema](https://docs.rs/arrow/latest/arrow/ffi/struct.FFI_ArrowSchema.html "struct arrow::ffi::FFI_ArrowSchema") , [ArrowError](https://docs.rs/arrow/latest/arrow/error/enum.ArrowError.html "enum arrow::error::ArrowError") \> Performs the conversion. [Source](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/src/arrow_schema/schema.rs.html#185) [§](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html#impl-Eq-for-Schema) ### impl [Eq](https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html "trait core::cmp::Eq") for [Schema](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html "struct arrow::datatypes::Schema") [Source](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/src/arrow_schema/schema.rs.html#185) [§](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html#impl-StructuralPartialEq-for-Schema) ### impl [StructuralPartialEq](https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html "trait core::marker::StructuralPartialEq") for [Schema](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html "struct arrow::datatypes::Schema") Auto Trait Implementations[§](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html#synthetic-implementations) ------------------------------------------------------------------------------------------------------------------------- [§](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html#impl-Freeze-for-Schema) ### impl [Freeze](https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html "trait core::marker::Freeze") for [Schema](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html "struct arrow::datatypes::Schema") [§](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html#impl-RefUnwindSafe-for-Schema) ### impl [RefUnwindSafe](https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html "trait core::panic::unwind_safe::RefUnwindSafe") for [Schema](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html "struct arrow::datatypes::Schema") [§](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html#impl-Send-for-Schema) ### impl [Send](https://doc.rust-lang.org/nightly/core/marker/trait.Send.html "trait core::marker::Send") for [Schema](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html "struct arrow::datatypes::Schema") [§](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html#impl-Sync-for-Schema) ### impl [Sync](https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html "trait core::marker::Sync") for [Schema](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html "struct arrow::datatypes::Schema") [§](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html#impl-Unpin-for-Schema) ### impl [Unpin](https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html "trait core::marker::Unpin") for [Schema](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html "struct arrow::datatypes::Schema") [§](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html#impl-UnsafeUnpin-for-Schema) ### impl [UnsafeUnpin](https://doc.rust-lang.org/nightly/core/marker/trait.UnsafeUnpin.html "trait core::marker::UnsafeUnpin") for [Schema](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html "struct arrow::datatypes::Schema") [§](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html#impl-UnwindSafe-for-Schema) ### impl [UnwindSafe](https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html "trait core::panic::unwind_safe::UnwindSafe") for [Schema](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html "struct arrow::datatypes::Schema") Blanket Implementations[§](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html#blanket-implementations) -------------------------------------------------------------------------------------------------------------------- [Source](https://doc.rust-lang.org/nightly/src/core/any.rs.html#141) [§](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html#impl-Any-for-T) ### impl [Any](https://doc.rust-lang.org/nightly/core/any/trait.Any.html "trait core::any::Any") for T where T: 'static + ?[Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , [Source](https://doc.rust-lang.org/nightly/src/core/any.rs.html#142) [§](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html#method.type_id) #### fn [type\_id](https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id) (&self) -> [TypeId](https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html "struct core::any::TypeId") Gets the `TypeId` of `self`. [Read more](https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id) [Source](https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#212) [§](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html#impl-Borrow%3CT%3E-for-T) ### impl [Borrow](https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html "trait core::borrow::Borrow") for T where T: ?[Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , [Source](https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#214) [§](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html#method.borrow) #### fn [borrow](https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow) (&self) -> [&T](https://doc.rust-lang.org/nightly/std/primitive.reference.html) Immutably borrows from an owned value. [Read more](https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow) [Source](https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#221) [§](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html#impl-BorrowMut%3CT%3E-for-T) ### impl [BorrowMut](https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html "trait core::borrow::BorrowMut") for T where T: ?[Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , [Source](https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#222) [§](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html#method.borrow_mut) #### fn [borrow\_mut](https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut) (&mut self) -> [&mut T](https://doc.rust-lang.org/nightly/std/primitive.reference.html) Mutably borrows from an owned value. [Read more](https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut) [Source](https://doc.rust-lang.org/nightly/src/core/clone.rs.html#547) [§](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html#impl-CloneToUninit-for-T) ### impl [CloneToUninit](https://doc.rust-lang.org/nightly/core/clone/trait.CloneToUninit.html "trait core::clone::CloneToUninit") for T where T: [Clone](https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html "trait core::clone::Clone") , [Source](https://doc.rust-lang.org/nightly/src/core/clone.rs.html#549) [§](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html#method.clone_to_uninit) #### unsafe fn [clone\_to\_uninit](https://doc.rust-lang.org/nightly/core/clone/trait.CloneToUninit.html#tymethod.clone_to_uninit) (&self, dest: [\*mut](https://doc.rust-lang.org/nightly/std/primitive.pointer.html) [u8](https://doc.rust-lang.org/nightly/std/primitive.u8.html) ) 🔬This is a nightly-only experimental API. (`clone_to_uninit`) Performs copy-assignment from `self` to `dest`. [Read more](https://doc.rust-lang.org/nightly/core/clone/trait.CloneToUninit.html#tymethod.clone_to_uninit) [Source](https://docs.rs/hashbrown/0.16.1/x86_64-unknown-linux-gnu/src/hashbrown/lib.rs.html#168-171) [§](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html#impl-Equivalent%3CK%3E-for-Q) ### impl [Equivalent](https://docs.rs/hashbrown/0.16.1/x86_64-unknown-linux-gnu/hashbrown/trait.Equivalent.html "trait hashbrown::Equivalent") for Q where Q: [Eq](https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html "trait core::cmp::Eq") + ?[Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , K: [Borrow](https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html "trait core::borrow::Borrow") + ?[Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , [Source](https://docs.rs/hashbrown/0.16.1/x86_64-unknown-linux-gnu/src/hashbrown/lib.rs.html#173) [§](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html#method.equivalent) #### fn [equivalent](https://docs.rs/hashbrown/0.16.1/x86_64-unknown-linux-gnu/hashbrown/trait.Equivalent.html#tymethod.equivalent) (&self, key: [&K](https://doc.rust-lang.org/nightly/std/primitive.reference.html) ) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) Checks if this value is equivalent to the given key. [Read more](https://docs.rs/hashbrown/0.16.1/x86_64-unknown-linux-gnu/hashbrown/trait.Equivalent.html#tymethod.equivalent) [Source](https://docs.rs/equivalent/1.0.2/x86_64-unknown-linux-gnu/src/equivalent/lib.rs.html#82-85) [§](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html#impl-Equivalent%3CK%3E-for-Q-1) ### impl [Equivalent](https://docs.rs/equivalent/1.0.2/x86_64-unknown-linux-gnu/equivalent/trait.Equivalent.html "trait equivalent::Equivalent") for Q where Q: [Eq](https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html "trait core::cmp::Eq") + ?[Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , K: [Borrow](https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html "trait core::borrow::Borrow") + ?[Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , [Source](https://docs.rs/equivalent/1.0.2/x86_64-unknown-linux-gnu/src/equivalent/lib.rs.html#88) [§](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html#method.equivalent-1) #### fn [equivalent](https://docs.rs/equivalent/1.0.2/x86_64-unknown-linux-gnu/equivalent/trait.Equivalent.html#tymethod.equivalent) (&self, key: [&K](https://doc.rust-lang.org/nightly/std/primitive.reference.html) ) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) Compare self to `key` and return `true` if they are equal. [Source](https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#785) [§](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html#impl-From%3CT%3E-for-T) ### impl [From](https://doc.rust-lang.org/nightly/core/convert/trait.From.html "trait core::convert::From") for T [Source](https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#788) [§](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html#method.from-2) #### fn [from](https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from) (t: T) -> T Returns the argument unchanged. [Source](https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#767-769) [§](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html#impl-Into%3CU%3E-for-T) ### impl [Into](https://doc.rust-lang.org/nightly/core/convert/trait.Into.html "trait core::convert::Into") for T where U: [From](https://doc.rust-lang.org/nightly/core/convert/trait.From.html "trait core::convert::From") , [Source](https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#777) [§](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html#method.into) #### fn [into](https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into) (self) -> U Calls `U::from(self)`. That is, this conversion is whatever the implementation of `[From](https://doc.rust-lang.org/nightly/core/convert/trait.From.html "trait core::convert::From") for U` chooses to do. [Source](https://docs.rs/arrow-pyarrow/58.1.0/x86_64-unknown-linux-gnu/src/arrow_pyarrow/lib.rs.html#115) [§](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html#impl-IntoPyArrow-for-T) ### impl [IntoPyArrow](https://docs.rs/arrow-pyarrow/58.1.0/x86_64-unknown-linux-gnu/arrow_pyarrow/trait.IntoPyArrow.html "trait arrow_pyarrow::IntoPyArrow") for T where T: [ToPyArrow](https://docs.rs/arrow-pyarrow/58.1.0/x86_64-unknown-linux-gnu/arrow_pyarrow/trait.ToPyArrow.html "trait arrow_pyarrow::ToPyArrow") , [Source](https://docs.rs/arrow-pyarrow/58.1.0/x86_64-unknown-linux-gnu/src/arrow_pyarrow/lib.rs.html#116) [§](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html#method.into_pyarrow) #### fn [into\_pyarrow](https://docs.rs/arrow-pyarrow/58.1.0/x86_64-unknown-linux-gnu/arrow_pyarrow/trait.IntoPyArrow.html#tymethod.into_pyarrow) <'py>(self, py: [Python](https://docs.rs/pyo3/0.28.2/x86_64-unknown-linux-gnu/pyo3/marker/struct.Python.html "struct pyo3::marker::Python") <'py>) -> [Result](https://doc.rust-lang.org/nightly/core/result/enum.Result.html "enum core::result::Result") <[Bound](https://docs.rs/pyo3/0.28.2/x86_64-unknown-linux-gnu/pyo3/instance/struct.Bound.html "struct pyo3::instance::Bound") <'py, [PyAny](https://docs.rs/pyo3/0.28.2/x86_64-unknown-linux-gnu/pyo3/types/any/struct.PyAny.html "struct pyo3::types::any::PyAny") \>, [PyErr](https://docs.rs/pyo3/0.28.2/x86_64-unknown-linux-gnu/pyo3/err/struct.PyErr.html "struct pyo3::err::PyErr") \> Convert the implemented type into a Python object while consuming it. [Source](https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#72-74) [§](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html#impl-ToOwned-for-T) ### impl [ToOwned](https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html "trait alloc::borrow::ToOwned") for T where T: [Clone](https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html "trait core::clone::Clone") , [Source](https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#76) [§](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html#associatedtype.Owned) #### type [Owned](https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned) = T The resulting type after obtaining ownership. [Source](https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#77) [§](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html#method.to_owned) #### fn [to\_owned](https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned) (&self) -> T Creates owned data from borrowed data, usually by cloning. [Read more](https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned) [Source](https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#81) [§](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html#method.clone_into) #### fn [clone\_into](https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into) (&self, target: [&mut T](https://doc.rust-lang.org/nightly/std/primitive.reference.html) ) Uses borrowed data to replace owned data, usually by cloning. [Read more](https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into) [Source](https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2891) [§](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html#impl-ToString-for-T) ### impl [ToString](https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html "trait alloc::string::ToString") for T where T: [Display](https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html "trait core::fmt::Display") + ?[Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , [Source](https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2893) [§](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html#method.to_string) #### fn [to\_string](https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html#tymethod.to_string) (&self) -> [String](https://doc.rust-lang.org/nightly/alloc/string/struct.String.html "struct alloc::string::String") Converts the given value to a `String`. [Read more](https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html#tymethod.to_string) [Source](https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#827-829) [§](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html#impl-TryFrom%3CU%3E-for-T) ### impl [TryFrom](https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html "trait core::convert::TryFrom") for T where U: [Into](https://doc.rust-lang.org/nightly/core/convert/trait.Into.html "trait core::convert::Into") , [Source](https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#831) [§](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html#associatedtype.Error-4) #### type [Error](https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error) = [Infallible](https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html "enum core::convert::Infallible") The type returned in the event of a conversion error. [Source](https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#834) [§](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html#method.try_from-3) #### fn [try\_from](https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from) (value: U) -> [Result](https://doc.rust-lang.org/nightly/core/result/enum.Result.html "enum core::result::Result") >::[Error](https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error "type core::convert::TryFrom::Error") \> Performs the conversion. [Source](https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#811-813) [§](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html#impl-TryInto%3CU%3E-for-T) ### impl [TryInto](https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html "trait core::convert::TryInto") for T where U: [TryFrom](https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html "trait core::convert::TryFrom") , [Source](https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#815) [§](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html#associatedtype.Error-3) #### type [Error](https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error) = >::[Error](https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error "type core::convert::TryFrom::Error") The type returned in the event of a conversion error. [Source](https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#818) [§](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html#method.try_into) #### fn [try\_into](https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into) (self) -> [Result](https://doc.rust-lang.org/nightly/core/result/enum.Result.html "enum core::result::Result") >::[Error](https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error "type core::convert::TryFrom::Error") \> Performs the conversion. [Source](https://docs.rs/ppv-lite86/0.2.21/x86_64-unknown-linux-gnu/src/ppv_lite86/types.rs.html#221-223) [§](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html#impl-VZip%3CV%3E-for-T) ### impl [VZip](https://docs.rs/ppv-lite86/0.2.21/x86_64-unknown-linux-gnu/ppv_lite86/types/trait.VZip.html "trait ppv_lite86::types::VZip") for T where V: [MultiLane](https://docs.rs/ppv-lite86/0.2.21/x86_64-unknown-linux-gnu/ppv_lite86/types/trait.MultiLane.html "trait ppv_lite86::types::MultiLane") , [Source](https://docs.rs/ppv-lite86/0.2.21/x86_64-unknown-linux-gnu/src/ppv_lite86/types.rs.html#226) [§](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html#method.vzip) #### fn [vzip](https://docs.rs/ppv-lite86/0.2.21/x86_64-unknown-linux-gnu/ppv_lite86/types/trait.VZip.html#tymethod.vzip) (self) -> V [Source](https://docs.rs/arrow-buffer/58.1.0/x86_64-unknown-linux-gnu/src/arrow_buffer/alloc/mod.rs.html#33) [§](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html#impl-Allocation-for-T) ### impl [Allocation](https://docs.rs/arrow/latest/arrow/alloc/trait.Allocation.html "trait arrow::alloc::Allocation") for T where T: [RefUnwindSafe](https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html "trait core::panic::unwind_safe::RefUnwindSafe") + [Send](https://doc.rust-lang.org/nightly/core/marker/trait.Send.html "trait core::marker::Send") + [Sync](https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html "trait core::marker::Sync") , [Source](https://docs.rs/pyo3/0.28.2/x86_64-unknown-linux-gnu/src/pyo3/marker.rs.html#188) [§](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html#impl-Ungil-for-T) ### impl [Ungil](https://docs.rs/pyo3/0.28.2/x86_64-unknown-linux-gnu/pyo3/marker/trait.Ungil.html "trait pyo3::marker::Ungil") for T where T: [Send](https://doc.rust-lang.org/nightly/core/marker/trait.Send.html "trait core::marker::Send") , --- # arrow_csv - Rust [Docs.rs](https://docs.rs/) * [arrow-csv-58.1.0](https://docs.rs/arrow-csv/58.1.0/arrow_csv/# "Support for parsing CSV format to and from the Arrow format") * arrow-csv 58.1.0 * [Docs.rs crate page](https://docs.rs/crate/arrow-csv/58.1.0 "See arrow-csv in docs.rs") * [Apache-2.0](https://spdx.org/licenses/Apache-2.0) * Links * [Homepage](https://github.com/apache/arrow-rs) * [Repository](https://github.com/apache/arrow-rs) * [crates.io](https://crates.io/crates/arrow-csv "See arrow-csv in crates.io") * [Source](https://docs.rs/crate/arrow-csv/58.1.0/source/ "Browse source of arrow-csv-58.1.0") * Owners * [kou](https://crates.io/users/kou) * [xhochy](https://crates.io/users/xhochy) * [nevi-me](https://crates.io/users/nevi-me) * [alamb](https://crates.io/users/alamb) * [tustvold](https://crates.io/users/tustvold) * Dependencies * * [arrow-array ^58.1.0 _normal_](https://docs.rs/arrow-array/^58.1.0/) * [arrow-cast ^58.1.0 _normal_](https://docs.rs/arrow-cast/^58.1.0/) * [arrow-schema ^58.1.0 _normal_](https://docs.rs/arrow-schema/^58.1.0/) * [chrono ^0.4.40 _normal_](https://docs.rs/chrono/^0.4.40/) * [csv ^1.1 _normal_](https://docs.rs/csv/^1.1/) * [csv-core ^0.1 _normal_](https://docs.rs/csv-core/^0.1/) * [regex ^1.7.0 _normal_](https://docs.rs/regex/^1.7.0/) * [arrow-buffer ^58.1.0 _dev_](https://docs.rs/arrow-buffer/^58.1.0/) * [bytes ^1.4 _dev_](https://docs.rs/bytes/^1.4/) * [futures ^0.3 _dev_](https://docs.rs/futures/^0.3/) * [tempfile ^3.3 _dev_](https://docs.rs/tempfile/^3.3/) * [tokio ^1.27 _dev_](https://docs.rs/tokio/^1.27/) * Versions * [**100%** of the crate is documented](https://docs.rs/crate/arrow-csv/58.1.0) * [Platform](https://docs.rs/arrow-csv/58.1.0/arrow_csv/#) * [aarch64-apple-darwin](https://docs.rs/crate/arrow-csv/58.1.0/target-redirect/aarch64-apple-darwin/arrow_csv/) * [aarch64-unknown-linux-gnu](https://docs.rs/crate/arrow-csv/58.1.0/target-redirect/aarch64-unknown-linux-gnu/arrow_csv/) * [i686-pc-windows-msvc](https://docs.rs/crate/arrow-csv/58.1.0/target-redirect/i686-pc-windows-msvc/arrow_csv/) * [x86\_64-pc-windows-msvc](https://docs.rs/crate/arrow-csv/58.1.0/target-redirect/x86_64-pc-windows-msvc/arrow_csv/) * [x86\_64-unknown-linux-gnu](https://docs.rs/crate/arrow-csv/58.1.0/target-redirect/arrow_csv/) * [Feature flags](https://docs.rs/crate/arrow-csv/58.1.0/features "Browse available feature flags of arrow-csv-58.1.0") * [docs.rs](https://docs.rs/arrow-csv/58.1.0/arrow_csv/#) * [About docs.rs](https://docs.rs/about) * [Badges](https://docs.rs/about/badges) * [Builds](https://docs.rs/about/builds) * [Metadata](https://docs.rs/about/metadata) * [Shorthand URLs](https://docs.rs/about/redirections) * [Download](https://docs.rs/about/download) * [Rustdoc JSON](https://docs.rs/about/rustdoc-json) * [Build queue](https://docs.rs/releases/queue) * [Privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#docs.rs) * [Rust](https://docs.rs/arrow-csv/58.1.0/arrow_csv/#) * [Rust website](https://www.rust-lang.org/) * [The Book](https://doc.rust-lang.org/book/) * [Standard Library API Reference](https://doc.rust-lang.org/std/) * [Rust by Example](https://doc.rust-lang.org/rust-by-example/) * [The Cargo Guide](https://doc.rust-lang.org/cargo/guide/) * [Clippy Documentation](https://doc.rust-lang.org/nightly/clippy) [Skip to main content](https://docs.rs/arrow-csv/58.1.0/arrow_csv/#main-content) [Crate arrow\_csv](https://docs.rs/arrow-csv/58.1.0/arrow_csv/#) ----------------------------------------------------------------- Crate arrow\_csv Copy item path =============================== [Source](https://docs.rs/arrow-csv/58.1.0/src/arrow_csv/lib.rs.html#18-65) Expand description Transfer data between the [Apache Arrow](https://arrow.apache.org/) memory format and CSV (comma-separated values). Re-exports[§](https://docs.rs/arrow-csv/58.1.0/arrow_csv/#reexports) --------------------------------------------------------------------- `pub use self::reader::[Reader](https://docs.rs/arrow-csv/58.1.0/arrow_csv/reader/type.Reader.html "type arrow_csv::reader::Reader") ;` `pub use self::reader::[ReaderBuilder](https://docs.rs/arrow-csv/58.1.0/arrow_csv/reader/struct.ReaderBuilder.html "struct arrow_csv::reader::ReaderBuilder") ;` `pub use self::reader::[infer_schema_from_files](https://docs.rs/arrow-csv/58.1.0/arrow_csv/reader/fn.infer_schema_from_files.html "fn arrow_csv::reader::infer_schema_from_files") ;` `pub use self::writer::[Writer](https://docs.rs/arrow-csv/58.1.0/arrow_csv/writer/struct.Writer.html "struct arrow_csv::writer::Writer") ;` `pub use self::writer::[WriterBuilder](https://docs.rs/arrow-csv/58.1.0/arrow_csv/writer/struct.WriterBuilder.html "struct arrow_csv::writer::WriterBuilder") ;` Modules[§](https://docs.rs/arrow-csv/58.1.0/arrow_csv/#modules) ---------------------------------------------------------------- [reader](https://docs.rs/arrow-csv/58.1.0/arrow_csv/reader/index.html "mod arrow_csv::reader") CSV Reading: [`Reader`](https://docs.rs/arrow-csv/58.1.0/arrow_csv/reader/type.Reader.html "type arrow_csv::reader::Reader") and [`ReaderBuilder`](https://docs.rs/arrow-csv/58.1.0/arrow_csv/reader/struct.ReaderBuilder.html "struct arrow_csv::reader::ReaderBuilder") [writer](https://docs.rs/arrow-csv/58.1.0/arrow_csv/writer/index.html "mod arrow_csv::writer") CSV Writing: [`Writer`](https://docs.rs/arrow-csv/58.1.0/arrow_csv/writer/struct.Writer.html "struct arrow_csv::writer::Writer") and [`WriterBuilder`](https://docs.rs/arrow-csv/58.1.0/arrow_csv/writer/struct.WriterBuilder.html "struct arrow_csv::writer::WriterBuilder") Enums[§](https://docs.rs/arrow-csv/58.1.0/arrow_csv/#enums) ------------------------------------------------------------ [QuoteStyle](https://docs.rs/arrow-csv/58.1.0/arrow_csv/enum.QuoteStyle.html "enum arrow_csv::QuoteStyle") The quoting style to use when writing CSV files. --- # arrow_string - Rust [Docs.rs](https://docs.rs/) * [arrow-string-58.1.0](https://docs.rs/arrow-string/58.1.0/arrow_string/# "String kernels for arrow arrays") * arrow-string 58.1.0 * [Docs.rs crate page](https://docs.rs/crate/arrow-string/58.1.0 "See arrow-string in docs.rs") * [Apache-2.0](https://spdx.org/licenses/Apache-2.0) * Links * [Homepage](https://github.com/apache/arrow-rs) * [Repository](https://github.com/apache/arrow-rs) * [crates.io](https://crates.io/crates/arrow-string "See arrow-string in crates.io") * [Source](https://docs.rs/crate/arrow-string/58.1.0/source/ "Browse source of arrow-string-58.1.0") * Owners * [andygrove](https://crates.io/users/andygrove) * [kou](https://crates.io/users/kou) * [xhochy](https://crates.io/users/xhochy) * [nevi-me](https://crates.io/users/nevi-me) * [alamb](https://crates.io/users/alamb) * [tustvold](https://crates.io/users/tustvold) * Dependencies * * [arrow-array ^58.1.0 _normal_](https://docs.rs/arrow-array/^58.1.0/) * [arrow-buffer ^58.1.0 _normal_](https://docs.rs/arrow-buffer/^58.1.0/) * [arrow-data ^58.1.0 _normal_](https://docs.rs/arrow-data/^58.1.0/) * [arrow-schema ^58.1.0 _normal_](https://docs.rs/arrow-schema/^58.1.0/) * [arrow-select ^58.1.0 _normal_](https://docs.rs/arrow-select/^58.1.0/) * [memchr ^2.7.4 _normal_](https://docs.rs/memchr/^2.7.4/) * [num-traits ^0.2.19 _normal_](https://docs.rs/num-traits/^0.2.19/) * [regex ^1.7.0 _normal_](https://docs.rs/regex/^1.7.0/) * [regex-syntax ^0.8.0 _normal_](https://docs.rs/regex-syntax/^0.8.0/) * Versions * [**100%** of the crate is documented](https://docs.rs/crate/arrow-string/58.1.0) * [Platform](https://docs.rs/arrow-string/58.1.0/arrow_string/#) * [aarch64-apple-darwin](https://docs.rs/crate/arrow-string/58.1.0/target-redirect/aarch64-apple-darwin/arrow_string/) * [aarch64-unknown-linux-gnu](https://docs.rs/crate/arrow-string/58.1.0/target-redirect/aarch64-unknown-linux-gnu/arrow_string/) * [i686-pc-windows-msvc](https://docs.rs/crate/arrow-string/58.1.0/target-redirect/i686-pc-windows-msvc/arrow_string/) * [x86\_64-pc-windows-msvc](https://docs.rs/crate/arrow-string/58.1.0/target-redirect/x86_64-pc-windows-msvc/arrow_string/) * [x86\_64-unknown-linux-gnu](https://docs.rs/crate/arrow-string/58.1.0/target-redirect/arrow_string/) * [Feature flags](https://docs.rs/crate/arrow-string/58.1.0/features "Browse available feature flags of arrow-string-58.1.0") * [docs.rs](https://docs.rs/arrow-string/58.1.0/arrow_string/#) * [About docs.rs](https://docs.rs/about) * [Badges](https://docs.rs/about/badges) * [Builds](https://docs.rs/about/builds) * [Metadata](https://docs.rs/about/metadata) * [Shorthand URLs](https://docs.rs/about/redirections) * [Download](https://docs.rs/about/download) * [Rustdoc JSON](https://docs.rs/about/rustdoc-json) * [Build queue](https://docs.rs/releases/queue) * [Privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#docs.rs) * [Rust](https://docs.rs/arrow-string/58.1.0/arrow_string/#) * [Rust website](https://www.rust-lang.org/) * [The Book](https://doc.rust-lang.org/book/) * [Standard Library API Reference](https://doc.rust-lang.org/std/) * [Rust by Example](https://doc.rust-lang.org/rust-by-example/) * [The Cargo Guide](https://doc.rust-lang.org/cargo/guide/) * [Clippy Documentation](https://doc.rust-lang.org/nightly/clippy) [Skip to main content](https://docs.rs/arrow-string/58.1.0/arrow_string/#main-content) [Crate arrow\_string](https://docs.rs/arrow-string/58.1.0/arrow_string/#) -------------------------------------------------------------------------- Crate arrow\_string Copy item path ================================== [Source](https://docs.rs/arrow-string/58.1.0/src/arrow_string/lib.rs.html#18-34) Expand description Arrow string kernels Modules[§](https://docs.rs/arrow-string/58.1.0/arrow_string/#modules) ---------------------------------------------------------------------- [concat\_elements](https://docs.rs/arrow-string/58.1.0/arrow_string/concat_elements/index.html "mod arrow_string::concat_elements") Provides utility functions for concatenation of elements in arrays. [length](https://docs.rs/arrow-string/58.1.0/arrow_string/length/index.html "mod arrow_string::length") Defines kernel for length of string arrays and binary arrays [like](https://docs.rs/arrow-string/58.1.0/arrow_string/like/index.html "mod arrow_string::like") Provide SQL’s LIKE operators for Arrow’s string arrays [regexp](https://docs.rs/arrow-string/58.1.0/arrow_string/regexp/index.html "mod arrow_string::regexp") Defines kernel to extract substrings based on a regular expression of a \[Large\]StringArray [substring](https://docs.rs/arrow-string/58.1.0/arrow_string/substring/index.html "mod arrow_string::substring") Defines kernel to extract a substring of an Array Supported array types: [GenericStringArray](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/arrow_array/array/string_array/type.GenericStringArray.html "type arrow_array::array::string_array::GenericStringArray") , [GenericBinaryArray](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/arrow_array/array/binary_array/type.GenericBinaryArray.html "type arrow_array::array::binary_array::GenericBinaryArray") , [FixedSizeBinaryArray](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/arrow_array/array/fixed_size_binary_array/struct.FixedSizeBinaryArray.html "struct arrow_array::array::fixed_size_binary_array::FixedSizeBinaryArray") , [DictionaryArray](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/arrow_array/array/dictionary_array/struct.DictionaryArray.html "struct arrow_array::array::dictionary_array::DictionaryArray") --- # arrow_row - Rust [Docs.rs](https://docs.rs/) * [arrow-row-58.1.0](https://docs.rs/arrow-row/58.1.0/arrow_row/# "Arrow row format") * arrow-row 58.1.0 * [Docs.rs crate page](https://docs.rs/crate/arrow-row/58.1.0 "See arrow-row in docs.rs") * [Apache-2.0](https://spdx.org/licenses/Apache-2.0) * Links * [Homepage](https://github.com/apache/arrow-rs) * [Repository](https://github.com/apache/arrow-rs) * [crates.io](https://crates.io/crates/arrow-row "See arrow-row in crates.io") * [Source](https://docs.rs/crate/arrow-row/58.1.0/source/ "Browse source of arrow-row-58.1.0") * Owners * [andygrove](https://crates.io/users/andygrove) * [kou](https://crates.io/users/kou) * [xhochy](https://crates.io/users/xhochy) * [nevi-me](https://crates.io/users/nevi-me) * [alamb](https://crates.io/users/alamb) * [tustvold](https://crates.io/users/tustvold) * Dependencies * * [arrow-array ^58.1.0 _normal_](https://docs.rs/arrow-array/^58.1.0/) * [arrow-buffer ^58.1.0 _normal_](https://docs.rs/arrow-buffer/^58.1.0/) * [arrow-data ^58.1.0 _normal_](https://docs.rs/arrow-data/^58.1.0/) * [arrow-schema ^58.1.0 _normal_](https://docs.rs/arrow-schema/^58.1.0/) * [half ^2.1 _normal_](https://docs.rs/half/^2.1/) * [arrow-cast ^58.1.0 _dev_](https://docs.rs/arrow-cast/^58.1.0/) * [arrow-ord ^58.1.0 _dev_](https://docs.rs/arrow-ord/^58.1.0/) * [arrow-select ^58.1.0 _dev_](https://docs.rs/arrow-select/^58.1.0/) * [rand ^0.9 _dev_](https://docs.rs/rand/^0.9/) * Versions * [**100%** of the crate is documented](https://docs.rs/crate/arrow-row/58.1.0) * [Platform](https://docs.rs/arrow-row/58.1.0/arrow_row/#) * [aarch64-apple-darwin](https://docs.rs/crate/arrow-row/58.1.0/target-redirect/aarch64-apple-darwin/arrow_row/) * [aarch64-unknown-linux-gnu](https://docs.rs/crate/arrow-row/58.1.0/target-redirect/aarch64-unknown-linux-gnu/arrow_row/) * [i686-pc-windows-msvc](https://docs.rs/crate/arrow-row/58.1.0/target-redirect/i686-pc-windows-msvc/arrow_row/) * [x86\_64-pc-windows-msvc](https://docs.rs/crate/arrow-row/58.1.0/target-redirect/x86_64-pc-windows-msvc/arrow_row/) * [x86\_64-unknown-linux-gnu](https://docs.rs/crate/arrow-row/58.1.0/target-redirect/arrow_row/) * [Feature flags](https://docs.rs/crate/arrow-row/58.1.0/features "Browse available feature flags of arrow-row-58.1.0") * [docs.rs](https://docs.rs/arrow-row/58.1.0/arrow_row/#) * [About docs.rs](https://docs.rs/about) * [Badges](https://docs.rs/about/badges) * [Builds](https://docs.rs/about/builds) * [Metadata](https://docs.rs/about/metadata) * [Shorthand URLs](https://docs.rs/about/redirections) * [Download](https://docs.rs/about/download) * [Rustdoc JSON](https://docs.rs/about/rustdoc-json) * [Build queue](https://docs.rs/releases/queue) * [Privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#docs.rs) * [Rust](https://docs.rs/arrow-row/58.1.0/arrow_row/#) * [Rust website](https://www.rust-lang.org/) * [The Book](https://doc.rust-lang.org/book/) * [Standard Library API Reference](https://doc.rust-lang.org/std/) * [Rust by Example](https://doc.rust-lang.org/rust-by-example/) * [The Cargo Guide](https://doc.rust-lang.org/cargo/guide/) * [Clippy Documentation](https://doc.rust-lang.org/nightly/clippy) [Skip to main content](https://docs.rs/arrow-row/58.1.0/arrow_row/#main-content) [Crate arrow\_row](https://docs.rs/arrow-row/58.1.0/arrow_row/#) ----------------------------------------------------------------- Crate arrow\_row Copy item path =============================== [Source](https://docs.rs/arrow-row/58.1.0/src/arrow_row/lib.rs.html#18-5693) Expand description A comparable row-oriented representation of a collection of [`Array`](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/arrow_array/array/trait.Array.html "trait arrow_array::array::Array") . [`Row`](https://docs.rs/arrow-row/58.1.0/arrow_row/struct.Row.html "struct arrow_row::Row") s are [normalized for sorting](http://wwwlgis.informatik.uni-kl.de/archiv/wwwdvs.informatik.uni-kl.de/courses/DBSREAL/SS2005/Vorlesungsunterlagen/Implementing_Sorting.pdf) , and can therefore be very efficiently [compared](https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html "trait core::cmp::PartialOrd") , using [`memcmp`](https://www.man7.org/linux/man-pages/man3/memcmp.3.html) under the hood, or used in [non-comparison sorts](https://en.wikipedia.org/wiki/Sorting_algorithm#Non-comparison_sorts) such as [radix sort](https://en.wikipedia.org/wiki/Radix_sort) . This makes the row format ideal for implementing efficient multi-column sorting, grouping, aggregation, windowing and more, as described in more detail [in this blog post](https://arrow.apache.org/blog/2022/11/07/multi-column-sorts-in-arrow-rust-part-1/) . For example, given three input [`Array`](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/arrow_array/array/trait.Array.html "trait arrow_array::array::Array") , [`RowConverter`](https://docs.rs/arrow-row/58.1.0/arrow_row/struct.RowConverter.html "struct arrow_row::RowConverter") creates byte sequences that [compare](https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html "trait core::cmp::PartialOrd") the same as when using [`lexsort`](https://docs.rs/arrow-ord/latest/arrow_ord/sort/fn.lexsort.html) . ┌─────┐ ┌─────┐ ┌─────┐ │ │ │ │ │ │ ├─────┤ ┌ ┼─────┼ ─ ┼─────┼ ┐ ┏━━━━━━━━━━━━━┓ │ │ │ │ │ │ ─────────────▶┃ ┃ ├─────┤ └ ┼─────┼ ─ ┼─────┼ ┘ ┗━━━━━━━━━━━━━┛ │ │ │ │ │ │ └─────┘ └─────┘ └─────┘ ... ┌─────┐ ┌ ┬─────┬ ─ ┬─────┬ ┐ ┏━━━━━━━━┓ │ │ │ │ │ │ ─────────────▶┃ ┃ └─────┘ └ ┴─────┴ ─ ┴─────┴ ┘ ┗━━━━━━━━┛ UInt64 Utf8 F64 Input Arrays Row Format (Columns) _[`Rows`](https://docs.rs/arrow-row/58.1.0/arrow_row/struct.Rows.html "struct arrow_row::Rows") must be generated by the same [`RowConverter`](https://docs.rs/arrow-row/58.1.0/arrow_row/struct.RowConverter.html "struct arrow_row::RowConverter") for the comparison to be meaningful._ [§](https://docs.rs/arrow-row/58.1.0/arrow_row/#basic-example) Basic Example ---------------------------------------------------------------------------- let a1 = Arc::new(Int32Array::from_iter_values([-1, -1, 0, 3, 3])) as ArrayRef; let a2 = Arc::new(StringArray::from_iter_values(["a", "b", "c", "d", "d"])) as ArrayRef; let arrays = vec![a1, a2]; // Convert arrays to rows let converter = RowConverter::new(vec![\ SortField::new(DataType::Int32),\ SortField::new(DataType::Utf8),\ ]).unwrap(); let rows = converter.convert_columns(&arrays).unwrap(); // Compare rows for i in 0..4 { assert!(rows.row(i) <= rows.row(i + 1)); } assert_eq!(rows.row(3), rows.row(4)); // Convert rows back to arrays let converted = converter.convert_rows(&rows).unwrap(); assert_eq!(arrays, converted); // Compare rows from different arrays let a1 = Arc::new(Int32Array::from_iter_values([3, 4])) as ArrayRef; let a2 = Arc::new(StringArray::from_iter_values(["e", "f"])) as ArrayRef; let arrays = vec![a1, a2]; let rows2 = converter.convert_columns(&arrays).unwrap(); assert!(rows.row(4) < rows2.row(0)); assert!(rows.row(4) < rows2.row(1)); // Convert selection of rows back to arrays let selection = [rows.row(0), rows2.row(1), rows.row(2), rows2.row(0)]; let converted = converter.convert_rows(selection).unwrap(); let c1 = converted[0].as_primitive::(); assert_eq!(c1.values(), &[-1, 4, 0, 3]); let c2 = converted[1].as_string::(); let c2_values: Vec<_> = c2.iter().flatten().collect(); assert_eq!(&c2_values, &["a", "f", "c", "e"]); [§](https://docs.rs/arrow-row/58.1.0/arrow_row/#lexicographic-sorts-lexsort) Lexicographic Sorts (lexsort) ---------------------------------------------------------------------------------------------------------- The row format can also be used to implement a fast multi-column / lexicographic sort fn lexsort_to_indices(arrays: &[ArrayRef]) -> UInt32Array { let fields = arrays .iter() .map(|a| SortField::new(a.data_type().clone())) .collect(); let converter = RowConverter::new(fields).unwrap(); let rows = converter.convert_columns(arrays).unwrap(); let mut sort: Vec<_> = rows.iter().enumerate().collect(); sort.sort_unstable_by(|(_, a), (_, b)| a.cmp(b)); UInt32Array::from_iter_values(sort.iter().map(|(i, _)| *i as u32)) } [§](https://docs.rs/arrow-row/58.1.0/arrow_row/#flattening-dictionaries) Flattening Dictionaries ------------------------------------------------------------------------------------------------ For performance reasons, dictionary arrays are flattened (“hydrated”) to their underlying values during row conversion. See [the issue](https://github.com/apache/arrow-rs/issues/4811) for more details. This means that the arrays that come out of [`RowConverter::convert_rows`](https://docs.rs/arrow-row/58.1.0/arrow_row/struct.RowConverter.html#method.convert_rows "method arrow_row::RowConverter::convert_rows") may not have the same data types as the input arrays. For example, encoding a `Dictionary` and then will come out as a `Utf8` array. // Input is a Dictionary array let dict: DictionaryArray:: = ["a", "b", "c", "a", "b"].into_iter().collect(); let sort_fields = vec![SortField::new(dict.data_type().clone())]; let arrays = vec![Arc::new(dict) as ArrayRef]; let converter = RowConverter::new(sort_fields).unwrap(); // Convert to rows let rows = converter.convert_columns(&arrays).unwrap(); let converted = converter.convert_rows(&rows).unwrap(); // result was a Utf8 array, not a Dictionary array assert_eq!(converted[0].data_type(), &DataType::Utf8); Structs[§](https://docs.rs/arrow-row/58.1.0/arrow_row/#structs) ---------------------------------------------------------------- [OwnedRow](https://docs.rs/arrow-row/58.1.0/arrow_row/struct.OwnedRow.html "struct arrow_row::OwnedRow") Owned version of a [`Row`](https://docs.rs/arrow-row/58.1.0/arrow_row/struct.Row.html "struct arrow_row::Row") that can be moved/cloned freely. [Row](https://docs.rs/arrow-row/58.1.0/arrow_row/struct.Row.html "struct arrow_row::Row") A comparable representation of a row. [RowConverter](https://docs.rs/arrow-row/58.1.0/arrow_row/struct.RowConverter.html "struct arrow_row::RowConverter") Converts [`ArrayRef`](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/arrow_array/array/type.ArrayRef.html "type arrow_array::array::ArrayRef") columns into a [row-oriented](https://docs.rs/arrow-row/58.1.0/arrow_row/index.html "mod arrow_row") format. [RowParser](https://docs.rs/arrow-row/58.1.0/arrow_row/struct.RowParser.html "struct arrow_row::RowParser") A [`RowParser`](https://docs.rs/arrow-row/58.1.0/arrow_row/struct.RowParser.html "struct arrow_row::RowParser") can be created from a [`RowConverter`](https://docs.rs/arrow-row/58.1.0/arrow_row/struct.RowConverter.html "struct arrow_row::RowConverter") and used to parse bytes to [`Row`](https://docs.rs/arrow-row/58.1.0/arrow_row/struct.Row.html "struct arrow_row::Row") [Rows](https://docs.rs/arrow-row/58.1.0/arrow_row/struct.Rows.html "struct arrow_row::Rows") A row-oriented representation of arrow data, that is normalized for comparison. [RowsIter](https://docs.rs/arrow-row/58.1.0/arrow_row/struct.RowsIter.html "struct arrow_row::RowsIter") An iterator over [`Rows`](https://docs.rs/arrow-row/58.1.0/arrow_row/struct.Rows.html "struct arrow_row::Rows") [SortField](https://docs.rs/arrow-row/58.1.0/arrow_row/struct.SortField.html "struct arrow_row::SortField") Configure the data type and sort order for a given column Functions[§](https://docs.rs/arrow-row/58.1.0/arrow_row/#functions) -------------------------------------------------------------------- [encode\_dictionary\_values](https://docs.rs/arrow-row/58.1.0/arrow_row/fn.encode_dictionary_values.html "fn arrow_row::encode_dictionary_values") Encode dictionary values not preserving the dictionary encoding Type Aliases[§](https://docs.rs/arrow-row/58.1.0/arrow_row/#types) ------------------------------------------------------------------- [RowLengthIter](https://docs.rs/arrow-row/58.1.0/arrow_row/type.RowLengthIter.html "type arrow_row::RowLengthIter") The iterator type for [`Rows::lengths`](https://docs.rs/arrow-row/58.1.0/arrow_row/struct.Rows.html#method.lengths "method arrow_row::Rows::lengths") --- # arrow_json - Rust [Docs.rs](https://docs.rs/) * [arrow-json-58.1.0](https://docs.rs/arrow-json/58.1.0/arrow_json/# "Support for parsing JSON format to and from the Arrow format") * arrow-json 58.1.0 * [Docs.rs crate page](https://docs.rs/crate/arrow-json/58.1.0 "See arrow-json in docs.rs") * [Apache-2.0](https://spdx.org/licenses/Apache-2.0) * Links * [Homepage](https://github.com/apache/arrow-rs) * [Repository](https://github.com/apache/arrow-rs) * [crates.io](https://crates.io/crates/arrow-json "See arrow-json in crates.io") * [Source](https://docs.rs/crate/arrow-json/58.1.0/source/ "Browse source of arrow-json-58.1.0") * Owners * [kou](https://crates.io/users/kou) * [xhochy](https://crates.io/users/xhochy) * [nevi-me](https://crates.io/users/nevi-me) * [alamb](https://crates.io/users/alamb) * [tustvold](https://crates.io/users/tustvold) * Dependencies * * [arrow-array ^58.1.0 _normal_](https://docs.rs/arrow-array/^58.1.0/) * [arrow-buffer ^58.1.0 _normal_](https://docs.rs/arrow-buffer/^58.1.0/) * [arrow-cast ^58.1.0 _normal_](https://docs.rs/arrow-cast/^58.1.0/) * [arrow-data ^58.1.0 _normal_](https://docs.rs/arrow-data/^58.1.0/) * [arrow-schema ^58.1.0 _normal_](https://docs.rs/arrow-schema/^58.1.0/) * [chrono ^0.4.40 _normal_](https://docs.rs/chrono/^0.4.40/) * [half ^2.1 _normal_](https://docs.rs/half/^2.1/) * [indexmap ^2.0 _normal_](https://docs.rs/indexmap/^2.0/) * [itoa ^1.0 _normal_](https://docs.rs/itoa/^1.0/) * [lexical-core ^1.0 _normal_](https://docs.rs/lexical-core/^1.0/) * [memchr ^2.7.4 _normal_](https://docs.rs/memchr/^2.7.4/) * [num-traits ^0.2.19 _normal_](https://docs.rs/num-traits/^0.2.19/) * [ryu ^1.0 _normal_](https://docs.rs/ryu/^1.0/) * [serde\_core ^1.0 _normal_](https://docs.rs/serde_core/^1.0/) * [serde\_json ^1.0 _normal_](https://docs.rs/serde_json/^1.0/) * [simdutf8 ^0.1.5 _normal_](https://docs.rs/simdutf8/^0.1.5/) * [arbitrary ^1.4.2 _dev_](https://docs.rs/arbitrary/^1.4.2/) * [bytes ^1.4 _dev_](https://docs.rs/bytes/^1.4/) * [criterion ^0.8.0 _dev_](https://docs.rs/criterion/^0.8.0/) * [flate2 ^1 _dev_](https://docs.rs/flate2/^1/) * [futures ^0.3 _dev_](https://docs.rs/futures/^0.3/) * [rand ^0.9 _dev_](https://docs.rs/rand/^0.9/) * [serde ^1.0 _dev_](https://docs.rs/serde/^1.0/) * [tokio ^1.27 _dev_](https://docs.rs/tokio/^1.27/) * Versions * [**100%** of the crate is documented](https://docs.rs/crate/arrow-json/58.1.0) * [Platform](https://docs.rs/arrow-json/58.1.0/arrow_json/#) * [aarch64-apple-darwin](https://docs.rs/crate/arrow-json/58.1.0/target-redirect/aarch64-apple-darwin/arrow_json/) * [aarch64-unknown-linux-gnu](https://docs.rs/crate/arrow-json/58.1.0/target-redirect/aarch64-unknown-linux-gnu/arrow_json/) * [i686-pc-windows-msvc](https://docs.rs/crate/arrow-json/58.1.0/target-redirect/i686-pc-windows-msvc/arrow_json/) * [x86\_64-pc-windows-msvc](https://docs.rs/crate/arrow-json/58.1.0/target-redirect/x86_64-pc-windows-msvc/arrow_json/) * [x86\_64-unknown-linux-gnu](https://docs.rs/crate/arrow-json/58.1.0/target-redirect/arrow_json/) * [Feature flags](https://docs.rs/crate/arrow-json/58.1.0/features "Browse available feature flags of arrow-json-58.1.0") * [docs.rs](https://docs.rs/arrow-json/58.1.0/arrow_json/#) * [About docs.rs](https://docs.rs/about) * [Badges](https://docs.rs/about/badges) * [Builds](https://docs.rs/about/builds) * [Metadata](https://docs.rs/about/metadata) * [Shorthand URLs](https://docs.rs/about/redirections) * [Download](https://docs.rs/about/download) * [Rustdoc JSON](https://docs.rs/about/rustdoc-json) * [Build queue](https://docs.rs/releases/queue) * [Privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#docs.rs) * [Rust](https://docs.rs/arrow-json/58.1.0/arrow_json/#) * [Rust website](https://www.rust-lang.org/) * [The Book](https://doc.rust-lang.org/book/) * [Standard Library API Reference](https://doc.rust-lang.org/std/) * [Rust by Example](https://doc.rust-lang.org/rust-by-example/) * [The Cargo Guide](https://doc.rust-lang.org/cargo/guide/) * [Clippy Documentation](https://doc.rust-lang.org/nightly/clippy) [Skip to main content](https://docs.rs/arrow-json/58.1.0/arrow_json/#main-content) [Crate arrow\_json](https://docs.rs/arrow-json/58.1.0/arrow_json/#) -------------------------------------------------------------------- Crate arrow\_json Copy item path ================================ [Source](https://docs.rs/arrow-json/58.1.0/src/arrow_json/lib.rs.html#18-355) Expand description Transfer data between the Arrow memory format and JSON line-delimited records. See the module level documentation for the [`reader`](https://docs.rs/arrow-json/58.1.0/arrow_json/reader/index.html "mod arrow_json::reader") and [`writer`](https://docs.rs/arrow-json/58.1.0/arrow_json/writer/index.html "mod arrow_json::writer") for usage examples. [§](https://docs.rs/arrow-json/58.1.0/arrow_json/#binary-data-uses-base16-encoding) Binary Data uses `Base16` Encoding ---------------------------------------------------------------------------------------------------------------------- As per [RFC7159](https://datatracker.ietf.org/doc/html/rfc7159#section-8.1) JSON cannot encode arbitrary binary data. This crate works around that limitation by encoding/decoding binary data as a [hexadecimal](https://en.wikipedia.org/wiki/Hexadecimal) string (i.e. [`Base16` encoding](https://en.wikipedia.org/wiki/Base16#Base16) ). Note that `Base16` only has 50% space efficiency (i.e., the encoded data is twice as large as the original). If that is an issue, we recommend to convert binary data to/from a different encoding format such as `Base64` instead. See the following example for details. ### [§](https://docs.rs/arrow-json/58.1.0/arrow_json/#base64-encoding-example) `Base64` Encoding Example [`Base64`](https://en.wikipedia.org/wiki/Base64) is a common [binary-to-text encoding](https://en.wikipedia.org/wiki/Binary-to-text_encoding) scheme with a space efficiency of 75%. The following example shows how to use the [`arrow_cast`](https://docs.rs/arrow-cast/58.1.0/x86_64-unknown-linux-gnu/arrow_cast/index.html "mod arrow_cast") crate to encode binary data to `Base64` before converting it to JSON and how to decode it back. use arrow_cast::base64::{b64_decode, b64_encode, BASE64_STANDARD}; // The data we want to write let input = BinaryArray::from(vec![b"\xDE\x00\xFF".as_ref()]); // Base64 encode it to a string let encoded: StringArray = b64_encode(&BASE64_STANDARD, &input); // Write the StringArray to JSON let batch = RecordBatch::try_from_iter([("col", Arc::new(encoded) as _)]).unwrap(); let mut buf = Vec::with_capacity(1024); let mut writer = LineDelimitedWriter::new(&mut buf); writer.write(&batch).unwrap(); writer.finish().unwrap(); // Read the JSON data let cursor = Cursor::new(buf); let mut reader = ReaderBuilder::new(batch.schema()).build(cursor).unwrap(); let batch = reader.next().unwrap().unwrap(); // Reverse the base64 encoding let col: BinaryArray = batch.column(0).as_string::().clone().into(); let output = b64_decode(&BASE64_STANDARD, &col).unwrap(); assert_eq!(input, output); Re-exports[§](https://docs.rs/arrow-json/58.1.0/arrow_json/#reexports) ----------------------------------------------------------------------- `pub use self::reader::[Reader](https://docs.rs/arrow-json/58.1.0/arrow_json/reader/struct.Reader.html "struct arrow_json::reader::Reader") ;` `pub use self::reader::[ReaderBuilder](https://docs.rs/arrow-json/58.1.0/arrow_json/reader/struct.ReaderBuilder.html "struct arrow_json::reader::ReaderBuilder") ;` `pub use self::writer::[ArrayWriter](https://docs.rs/arrow-json/58.1.0/arrow_json/writer/type.ArrayWriter.html "type arrow_json::writer::ArrayWriter") ;` `pub use self::writer::[Encoder](https://docs.rs/arrow-json/58.1.0/arrow_json/writer/trait.Encoder.html "trait arrow_json::writer::Encoder") ;` `pub use self::writer::[EncoderFactory](https://docs.rs/arrow-json/58.1.0/arrow_json/writer/trait.EncoderFactory.html "trait arrow_json::writer::EncoderFactory") ;` `pub use self::writer::[EncoderOptions](https://docs.rs/arrow-json/58.1.0/arrow_json/writer/struct.EncoderOptions.html "struct arrow_json::writer::EncoderOptions") ;` `pub use self::writer::[LineDelimitedWriter](https://docs.rs/arrow-json/58.1.0/arrow_json/writer/type.LineDelimitedWriter.html "type arrow_json::writer::LineDelimitedWriter") ;` `pub use self::writer::[Writer](https://docs.rs/arrow-json/58.1.0/arrow_json/writer/struct.Writer.html "struct arrow_json::writer::Writer") ;` `pub use self::writer::[WriterBuilder](https://docs.rs/arrow-json/58.1.0/arrow_json/writer/struct.WriterBuilder.html "struct arrow_json::writer::WriterBuilder") ;` Modules[§](https://docs.rs/arrow-json/58.1.0/arrow_json/#modules) ------------------------------------------------------------------ [reader](https://docs.rs/arrow-json/58.1.0/arrow_json/reader/index.html "mod arrow_json::reader") JSON reader [writer](https://docs.rs/arrow-json/58.1.0/arrow_json/writer/index.html "mod arrow_json::writer") JSON Writer Enums[§](https://docs.rs/arrow-json/58.1.0/arrow_json/#enums) -------------------------------------------------------------- [StructMode](https://docs.rs/arrow-json/58.1.0/arrow_json/enum.StructMode.html "enum arrow_json::StructMode") Specifies what is considered valid JSON when reading or writing RecordBatches or StructArrays. Traits[§](https://docs.rs/arrow-json/58.1.0/arrow_json/#traits) ---------------------------------------------------------------- [JsonSerializable](https://docs.rs/arrow-json/58.1.0/arrow_json/trait.JsonSerializable.html "trait arrow_json::JsonSerializable") Trait declaring any type that is serializable to JSON. This includes all primitive types (bool, i32, etc.). --- # arrow_pyarrow - Rust [Docs.rs](https://docs.rs/) * [arrow-pyarrow-58.1.0](https://docs.rs/arrow-pyarrow/58.1.0/arrow_pyarrow/# "Pyarrow bindings") * arrow-pyarrow 58.1.0 * [Docs.rs crate page](https://docs.rs/crate/arrow-pyarrow/58.1.0 "See arrow-pyarrow in docs.rs") * [Apache-2.0](https://spdx.org/licenses/Apache-2.0) * Links * [Homepage](https://github.com/apache/arrow-rs) * [Repository](https://github.com/apache/arrow-rs) * [crates.io](https://crates.io/crates/arrow-pyarrow "See arrow-pyarrow in crates.io") * [Source](https://docs.rs/crate/arrow-pyarrow/58.1.0/source/ "Browse source of arrow-pyarrow-58.1.0") * Owners * [kou](https://crates.io/users/kou) * [xhochy](https://crates.io/users/xhochy) * [alamb](https://crates.io/users/alamb) * [tustvold](https://crates.io/users/tustvold) * Dependencies * * [arrow-array ^58.1.0 _normal_](https://docs.rs/arrow-array/^58.1.0/) * [arrow-data ^58.1.0 _normal_](https://docs.rs/arrow-data/^58.1.0/) * [arrow-schema ^58.1.0 _normal_](https://docs.rs/arrow-schema/^58.1.0/) * [pyo3 ^0.28.0 _normal_](https://docs.rs/pyo3/^0.28.0/) * Versions * [**75%** of the crate is documented](https://docs.rs/crate/arrow-pyarrow/58.1.0) * [Platform](https://docs.rs/arrow-pyarrow/58.1.0/arrow_pyarrow/#) * [x86\_64-unknown-linux-gnu](https://docs.rs/crate/arrow-pyarrow/58.1.0/target-redirect/arrow_pyarrow/) * [Feature flags](https://docs.rs/crate/arrow-pyarrow/58.1.0/features "Browse available feature flags of arrow-pyarrow-58.1.0") * [docs.rs](https://docs.rs/arrow-pyarrow/58.1.0/arrow_pyarrow/#) * [About docs.rs](https://docs.rs/about) * [Badges](https://docs.rs/about/badges) * [Builds](https://docs.rs/about/builds) * [Metadata](https://docs.rs/about/metadata) * [Shorthand URLs](https://docs.rs/about/redirections) * [Download](https://docs.rs/about/download) * [Rustdoc JSON](https://docs.rs/about/rustdoc-json) * [Build queue](https://docs.rs/releases/queue) * [Privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#docs.rs) * [Rust](https://docs.rs/arrow-pyarrow/58.1.0/arrow_pyarrow/#) * [Rust website](https://www.rust-lang.org/) * [The Book](https://doc.rust-lang.org/book/) * [Standard Library API Reference](https://doc.rust-lang.org/std/) * [Rust by Example](https://doc.rust-lang.org/rust-by-example/) * [The Cargo Guide](https://doc.rust-lang.org/cargo/guide/) * [Clippy Documentation](https://doc.rust-lang.org/nightly/clippy) [Skip to main content](https://docs.rs/arrow-pyarrow/58.1.0/arrow_pyarrow/#main-content) [Crate arrow\_pyarrow](https://docs.rs/arrow-pyarrow/58.1.0/arrow_pyarrow/#) ----------------------------------------------------------------------------- Crate arrow\_pyarrow Copy item path =================================== [Source](https://docs.rs/arrow-pyarrow/58.1.0/src/arrow_pyarrow/lib.rs.html#18-676) Expand description Pass Arrow objects from and to PyArrow, using Arrow’s [C Data Interface](https://arrow.apache.org/docs/format/CDataInterface.html) and [pyo3](https://docs.rs/pyo3/latest/pyo3/) . For underlying implementation, see the [ffi](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/arrow_array/ffi/index.html "mod arrow_array::ffi") module. One can use these to write Python functions that take and return PyArrow objects, with automatic conversion to corresponding arrow-rs types. [ⓘ](https://docs.rs/arrow-pyarrow/58.1.0/arrow_pyarrow/# "This example is not tested") #[pyfunction] fn double_array(array: PyArrowType) -> PyResult> { let array = array.0; // Extract from PyArrowType wrapper let array: Arc = make_array(array); // Convert ArrayData to ArrayRef let array: &Int32Array = array.as_any().downcast_ref() .ok_or_else(|| PyValueError::new_err("expected int32 array"))?; let array: Int32Array = array.iter().map(|x| x.map(|x| x * 2)).collect(); Ok(PyArrowType(array.into_data())) } | pyarrow type | arrow-rs type | | --- | --- | | `pyarrow.DataType` | [DataType](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/arrow_schema/datatype/enum.DataType.html "enum arrow_schema::datatype::DataType") | | `pyarrow.Field` | [Field](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/arrow_schema/field/struct.Field.html "struct arrow_schema::field::Field") | | `pyarrow.Schema` | [Schema](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/arrow_schema/schema/struct.Schema.html "struct arrow_schema::schema::Schema") | | `pyarrow.Array` | [ArrayData](https://docs.rs/arrow-data/58.1.0/x86_64-unknown-linux-gnu/arrow_data/data/struct.ArrayData.html "struct arrow_data::data::ArrayData") | | `pyarrow.RecordBatch` | [RecordBatch](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/arrow_array/record_batch/struct.RecordBatch.html "struct arrow_array::record_batch::RecordBatch") | | `pyarrow.RecordBatchReader` | [ArrowArrayStreamReader](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/arrow_array/ffi_stream/struct.ArrowArrayStreamReader.html "struct arrow_array::ffi_stream::ArrowArrayStreamReader")
/ `Box` (1) | | `pyarrow.Table` | [Table](https://docs.rs/arrow-pyarrow/58.1.0/arrow_pyarrow/struct.Table.html "struct arrow_pyarrow::Table")
(2) | (1) `pyarrow.RecordBatchReader` can be imported as [ArrowArrayStreamReader](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/arrow_array/ffi_stream/struct.ArrowArrayStreamReader.html "struct arrow_array::ffi_stream::ArrowArrayStreamReader") . Either [ArrowArrayStreamReader](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/arrow_array/ffi_stream/struct.ArrowArrayStreamReader.html "struct arrow_array::ffi_stream::ArrowArrayStreamReader") or `Box` can be exported as `pyarrow.RecordBatchReader`. (`Box` is typically easier to create.) (2) Although arrow-rs offers [Table](https://docs.rs/arrow-pyarrow/58.1.0/arrow_pyarrow/struct.Table.html "struct arrow_pyarrow::Table") , a convenience wrapper for [pyarrow.Table](https://arrow.apache.org/docs/python/generated/pyarrow.Table) that internally holds `Vec`, it is meant primarily for use cases where you already have `Vec` on the Rust side and want to export that in bulk as a `pyarrow.Table`. In general, it is recommended to use streaming approaches instead of dealing with data in bulk. For example, a `pyarrow.Table` (or any other object that implements the ArrayStream PyCapsule interface) can be imported to Rust through `PyArrowType` instead of forcing eager reading into `Vec`. Structs[§](https://docs.rs/arrow-pyarrow/58.1.0/arrow_pyarrow/#structs) ------------------------------------------------------------------------ [ArrowException](https://docs.rs/arrow-pyarrow/58.1.0/arrow_pyarrow/struct.ArrowException.html "struct arrow_pyarrow::ArrowException") A Rust type representing an exception defined in Python code. [PyArrowType](https://docs.rs/arrow-pyarrow/58.1.0/arrow_pyarrow/struct.PyArrowType.html "struct arrow_pyarrow::PyArrowType") A newtype wrapper for types implementing [`FromPyArrow`](https://docs.rs/arrow-pyarrow/58.1.0/arrow_pyarrow/trait.FromPyArrow.html "trait arrow_pyarrow::FromPyArrow") or [`IntoPyArrow`](https://docs.rs/arrow-pyarrow/58.1.0/arrow_pyarrow/trait.IntoPyArrow.html "trait arrow_pyarrow::IntoPyArrow") . [Table](https://docs.rs/arrow-pyarrow/58.1.0/arrow_pyarrow/struct.Table.html "struct arrow_pyarrow::Table") This is a convenience wrapper around `Vec` that tries to simplify conversion from and to `pyarrow.Table`. Traits[§](https://docs.rs/arrow-pyarrow/58.1.0/arrow_pyarrow/#traits) ---------------------------------------------------------------------- [FromPyArrow](https://docs.rs/arrow-pyarrow/58.1.0/arrow_pyarrow/trait.FromPyArrow.html "trait arrow_pyarrow::FromPyArrow") Trait for converting Python objects to arrow-rs types. [IntoPyArrow](https://docs.rs/arrow-pyarrow/58.1.0/arrow_pyarrow/trait.IntoPyArrow.html "trait arrow_pyarrow::IntoPyArrow") Convert an arrow-rs type into a PyArrow object. [ToPyArrow](https://docs.rs/arrow-pyarrow/58.1.0/arrow_pyarrow/trait.ToPyArrow.html "trait arrow_pyarrow::ToPyArrow") Create a new PyArrow object from a arrow-rs type. Type Aliases[§](https://docs.rs/arrow-pyarrow/58.1.0/arrow_pyarrow/#types) --------------------------------------------------------------------------- [PyArrowException](https://docs.rs/arrow-pyarrow/58.1.0/arrow_pyarrow/type.PyArrowException.html "type arrow_pyarrow::PyArrowException") Represents an exception raised by PyArrow. --- # arrow_flight - Rust [Docs.rs](https://docs.rs/) * [arrow-flight-58.1.0](https://docs.rs/arrow-flight/latest/arrow_flight/# "Apache Arrow Flight") * arrow-flight 58.1.0 * [Permalink](https://docs.rs/arrow-flight/58.1.0/arrow_flight/ "Get a link to this specific version") * [Docs.rs crate page](https://docs.rs/crate/arrow-flight/latest "See arrow-flight in docs.rs") * [Apache-2.0](https://spdx.org/licenses/Apache-2.0) * Links * [Homepage](https://github.com/apache/arrow-rs) * [Repository](https://github.com/apache/arrow-rs) * [crates.io](https://crates.io/crates/arrow-flight "See arrow-flight in crates.io") * [Source](https://docs.rs/crate/arrow-flight/latest/source/ "Browse source of arrow-flight-58.1.0") * Owners * [andygrove](https://crates.io/users/andygrove) * [kou](https://crates.io/users/kou) * [kszucs](https://crates.io/users/kszucs) * [xhochy](https://crates.io/users/xhochy) * [nevi-me](https://crates.io/users/nevi-me) * [alamb](https://crates.io/users/alamb) * [tustvold](https://crates.io/users/tustvold) * Dependencies * * [anyhow ^1.0 _normal_ _optional_](https://docs.rs/anyhow/^1.0/) * [arrow-arith ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-arith/^58.1.0/) * [arrow-array ^58.1.0 _normal_](https://docs.rs/arrow-array/^58.1.0/) * [arrow-buffer ^58.1.0 _normal_](https://docs.rs/arrow-buffer/^58.1.0/) * [arrow-cast ^58.1.0 _normal_](https://docs.rs/arrow-cast/^58.1.0/) * [arrow-data ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-data/^58.1.0/) * [arrow-ipc ^58.1.0 _normal_](https://docs.rs/arrow-ipc/^58.1.0/) * [arrow-ord ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-ord/^58.1.0/) * [arrow-row ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-row/^58.1.0/) * [arrow-schema ^58.1.0 _normal_](https://docs.rs/arrow-schema/^58.1.0/) * [arrow-select ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-select/^58.1.0/) * [arrow-string ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-string/^58.1.0/) * [base64 ^0.22 _normal_](https://docs.rs/base64/^0.22/) * [bytes ^1 _normal_](https://docs.rs/bytes/^1/) * [clap ^4.4.6 _normal_ _optional_](https://docs.rs/clap/^4.4.6/) * [futures ^0.3 _normal_](https://docs.rs/futures/^0.3/) * [once\_cell ^1 _normal_ _optional_](https://docs.rs/once_cell/^1/) * [paste ^1.0 _normal_ _optional_](https://docs.rs/paste/^1.0/) * [prost ^0.14.1 _normal_](https://docs.rs/prost/^0.14.1/) * [prost-types ^0.14.1 _normal_](https://docs.rs/prost-types/^0.14.1/) * [tokio ^1.0 _normal_ _optional_](https://docs.rs/tokio/^1.0/) * [tonic ^0.14.1 _normal_](https://docs.rs/tonic/^0.14.1/) * [tonic-prost ^0.14.1 _normal_](https://docs.rs/tonic-prost/^0.14.1/) * [tracing-log ^0.2 _normal_ _optional_](https://docs.rs/tracing-log/^0.2/) * [tracing-subscriber ^0.3.1 _normal_ _optional_](https://docs.rs/tracing-subscriber/^0.3.1/) * [arrow-cast ^58.1.0 _dev_](https://docs.rs/arrow-cast/^58.1.0/) * [assert\_cmd ^2.0.8 _dev_](https://docs.rs/assert_cmd/^2.0.8/) * [http ^1.1.0 _dev_](https://docs.rs/http/^1.1.0/) * [http-body ^1.0.0 _dev_](https://docs.rs/http-body/^1.0.0/) * [hyper-util ^0.1 _dev_](https://docs.rs/hyper-util/^0.1/) * [pin-project-lite ^0.2 _dev_](https://docs.rs/pin-project-lite/^0.2/) * [tempfile ^3.3 _dev_](https://docs.rs/tempfile/^3.3/) * [tokio ^1.0 _dev_](https://docs.rs/tokio/^1.0/) * [tokio-stream ^0.1 _dev_](https://docs.rs/tokio-stream/^0.1/) * [tower ^0.5.0 _dev_](https://docs.rs/tower/^0.5.0/) * [tracing-log ^0.2 _dev_](https://docs.rs/tracing-log/^0.2/) * [tracing-subscriber ^0.3.1 _dev_](https://docs.rs/tracing-subscriber/^0.3.1/) * [uuid ^1.10.0 _dev_](https://docs.rs/uuid/^1.10.0/) * Versions * [**100%** of the crate is documented](https://docs.rs/crate/arrow-flight/latest) * [Platform](https://docs.rs/arrow-flight/latest/arrow_flight/#) * [x86\_64-unknown-linux-gnu](https://docs.rs/crate/arrow-flight/latest/target-redirect/arrow_flight/) * [Feature flags](https://docs.rs/crate/arrow-flight/latest/features "Browse available feature flags of arrow-flight-58.1.0") * [docs.rs](https://docs.rs/arrow-flight/latest/arrow_flight/#) * [About docs.rs](https://docs.rs/about) * [Badges](https://docs.rs/about/badges) * [Builds](https://docs.rs/about/builds) * [Metadata](https://docs.rs/about/metadata) * [Shorthand URLs](https://docs.rs/about/redirections) * [Download](https://docs.rs/about/download) * [Rustdoc JSON](https://docs.rs/about/rustdoc-json) * [Build queue](https://docs.rs/releases/queue) * [Privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#docs.rs) * [Rust](https://docs.rs/arrow-flight/latest/arrow_flight/#) * [Rust website](https://www.rust-lang.org/) * [The Book](https://doc.rust-lang.org/book/) * [Standard Library API Reference](https://doc.rust-lang.org/std/) * [Rust by Example](https://doc.rust-lang.org/rust-by-example/) * [The Cargo Guide](https://doc.rust-lang.org/cargo/guide/) * [Clippy Documentation](https://doc.rust-lang.org/nightly/clippy) [Skip to main content](https://docs.rs/arrow-flight/latest/arrow_flight/#main-content) [Crate arrow\_flight](https://docs.rs/arrow-flight/latest/arrow_flight/#) -------------------------------------------------------------------------- Crate arrow\_flight Copy item path ================================== [Source](https://docs.rs/arrow-flight/latest/src/arrow_flight/lib.rs.html#18-927) Expand description A native Rust implementation of [Apache Arrow Flight](https://arrow.apache.org/docs/format/Flight.html) for exchanging [Arrow](https://arrow.apache.org/) data between processes. Please see the [arrow-flight crates.io](https://crates.io/crates/arrow-flight) page for feature flags and more information. [§](https://docs.rs/arrow-flight/latest/arrow_flight/#overview) Overview ------------------------------------------------------------------------ This crate contains: 1. Low level [prost](https://docs.rs/prost/0.14.3/x86_64-unknown-linux-gnu/prost/index.html "mod prost") generated structs for Flight gRPC protobuf messages, such as [`FlightData`](https://docs.rs/arrow-flight/latest/arrow_flight/struct.FlightData.html "struct arrow_flight::FlightData") , [`FlightInfo`](https://docs.rs/arrow-flight/latest/arrow_flight/struct.FlightInfo.html "struct arrow_flight::FlightInfo") , [`Location`](https://docs.rs/arrow-flight/latest/arrow_flight/struct.Location.html "struct arrow_flight::Location") and [`Ticket`](https://docs.rs/arrow-flight/latest/arrow_flight/struct.Ticket.html "struct arrow_flight::Ticket") . 2. Low level [tonic](https://docs.rs/tonic/0.14.5/x86_64-unknown-linux-gnu/tonic/index.html "mod tonic") generated [`flight_service_client`](https://docs.rs/arrow-flight/latest/arrow_flight/flight_service_client/index.html "mod arrow_flight::flight_service_client") and [`flight_service_server`](https://docs.rs/arrow-flight/latest/arrow_flight/flight_service_server/index.html "mod arrow_flight::flight_service_server") . 3. Support for [Flight SQL](https://arrow.apache.org/docs/format/FlightSql.html) in [`sql`](https://docs.rs/arrow-flight/latest/arrow_flight/sql/index.html "mod arrow_flight::sql") . Requires the `flight-sql` feature of this crate to be activated. Re-exports[§](https://docs.rs/arrow-flight/latest/arrow_flight/#reexports) --------------------------------------------------------------------------- `pub use client::[FlightClient](https://docs.rs/arrow-flight/latest/arrow_flight/client/struct.FlightClient.html "struct arrow_flight::client::FlightClient") ;` Modules[§](https://docs.rs/arrow-flight/latest/arrow_flight/#modules) ---------------------------------------------------------------------- [client](https://docs.rs/arrow-flight/latest/arrow_flight/client/index.html "mod arrow_flight::client") Mid Level [`FlightClient`](https://docs.rs/arrow-flight/latest/arrow_flight/client/struct.FlightClient.html "struct arrow_flight::client::FlightClient") [decode](https://docs.rs/arrow-flight/latest/arrow_flight/decode/index.html "mod arrow_flight::decode") Decoder to create [`RecordBatch`](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/arrow_array/record_batch/struct.RecordBatch.html "struct arrow_array::record_batch::RecordBatch") streams from [`FlightData`](https://docs.rs/arrow-flight/latest/arrow_flight/struct.FlightData.html "struct arrow_flight::FlightData") streams. See [`FlightRecordBatchStream`](https://docs.rs/arrow-flight/latest/arrow_flight/decode/struct.FlightRecordBatchStream.html "struct arrow_flight::decode::FlightRecordBatchStream") . [encode](https://docs.rs/arrow-flight/latest/arrow_flight/encode/index.html "mod arrow_flight::encode") Encoder to create [`FlightData`](https://docs.rs/arrow-flight/latest/arrow_flight/struct.FlightData.html "struct arrow_flight::FlightData") streams from [`RecordBatch`](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/arrow_array/record_batch/struct.RecordBatch.html "struct arrow_array::record_batch::RecordBatch") streams. See [`FlightDataEncoderBuilder`](https://docs.rs/arrow-flight/latest/arrow_flight/encode/struct.FlightDataEncoderBuilder.html "struct arrow_flight::encode::FlightDataEncoderBuilder") . [error](https://docs.rs/arrow-flight/latest/arrow_flight/error/index.html "mod arrow_flight::error") Common error types [flight\_descriptor](https://docs.rs/arrow-flight/latest/arrow_flight/flight_descriptor/index.html "mod arrow_flight::flight_descriptor") Defines a `Flight` for generation or retrieval. [flight\_service\_client](https://docs.rs/arrow-flight/latest/arrow_flight/flight_service_client/index.html "mod arrow_flight::flight_service_client") Low Level [tonic](https://docs.rs/tonic/0.14.5/x86_64-unknown-linux-gnu/tonic/index.html "mod tonic") [`FlightServiceClient`](https://docs.rs/arrow-flight/latest/arrow_flight/flight_service_client/struct.FlightServiceClient.html "struct arrow_flight::flight_service_client::FlightServiceClient") . [flight\_service\_server](https://docs.rs/arrow-flight/latest/arrow_flight/flight_service_server/index.html "mod arrow_flight::flight_service_server") Low Level [tonic](https://docs.rs/tonic/0.14.5/x86_64-unknown-linux-gnu/tonic/index.html "mod tonic") [`FlightServiceServer`](https://docs.rs/arrow-flight/latest/arrow_flight/flight_service_server/struct.FlightServiceServer.html "struct arrow_flight::flight_service_server::FlightServiceServer") and [`FlightService`](https://docs.rs/arrow-flight/latest/arrow_flight/flight_service_server/trait.FlightService.html "trait arrow_flight::flight_service_server::FlightService") . [sql](https://docs.rs/arrow-flight/latest/arrow_flight/sql/index.html "mod arrow_flight::sql") `flight-sql` Support for execute SQL queries using [Apache Arrow](https://arrow.apache.org/) [Flight SQL](https://arrow.apache.org/docs/format/FlightSql.html) . [utils](https://docs.rs/arrow-flight/latest/arrow_flight/utils/index.html "mod arrow_flight::utils") Utilities to assist with reading and writing Arrow data as Flight messages Structs[§](https://docs.rs/arrow-flight/latest/arrow_flight/#structs) ---------------------------------------------------------------------- [Action](https://docs.rs/arrow-flight/latest/arrow_flight/struct.Action.html "struct arrow_flight::Action") An opaque action specific for the service. [ActionType](https://docs.rs/arrow-flight/latest/arrow_flight/struct.ActionType.html "struct arrow_flight::ActionType") Describes an available action, including both the name used for execution along with a short description of the purpose of the action. [BasicAuth](https://docs.rs/arrow-flight/latest/arrow_flight/struct.BasicAuth.html "struct arrow_flight::BasicAuth") A message for doing simple auth. [CancelFlightInfoRequest](https://docs.rs/arrow-flight/latest/arrow_flight/struct.CancelFlightInfoRequest.html "struct arrow_flight::CancelFlightInfoRequest") The request of the CancelFlightInfo action. [CancelFlightInfoResult](https://docs.rs/arrow-flight/latest/arrow_flight/struct.CancelFlightInfoResult.html "struct arrow_flight::CancelFlightInfoResult") The result of the CancelFlightInfo action. [Criteria](https://docs.rs/arrow-flight/latest/arrow_flight/struct.Criteria.html "struct arrow_flight::Criteria") A service specific expression that can be used to return a limited set of available Arrow Flight streams. [Empty](https://docs.rs/arrow-flight/latest/arrow_flight/struct.Empty.html "struct arrow_flight::Empty") [FlightData](https://docs.rs/arrow-flight/latest/arrow_flight/struct.FlightData.html "struct arrow_flight::FlightData") A batch of Arrow data as part of a stream of batches. [FlightDescriptor](https://docs.rs/arrow-flight/latest/arrow_flight/struct.FlightDescriptor.html "struct arrow_flight::FlightDescriptor") The name or tag for a Flight. May be used as a way to retrieve or generate a flight or be used to expose a set of previously defined flights. [FlightEndpoint](https://docs.rs/arrow-flight/latest/arrow_flight/struct.FlightEndpoint.html "struct arrow_flight::FlightEndpoint") A particular stream or split associated with a flight. [FlightInfo](https://docs.rs/arrow-flight/latest/arrow_flight/struct.FlightInfo.html "struct arrow_flight::FlightInfo") The access coordinates for retrieval of a dataset. With a FlightInfo, a consumer is able to determine how to retrieve a dataset. [HandshakeRequest](https://docs.rs/arrow-flight/latest/arrow_flight/struct.HandshakeRequest.html "struct arrow_flight::HandshakeRequest") The request that a client provides to a server on handshake. [HandshakeResponse](https://docs.rs/arrow-flight/latest/arrow_flight/struct.HandshakeResponse.html "struct arrow_flight::HandshakeResponse") [IpcMessage](https://docs.rs/arrow-flight/latest/arrow_flight/struct.IpcMessage.html "struct arrow_flight::IpcMessage") IpcMessage represents a `Schema` in the format expected in `FlightInfo.schema` [Location](https://docs.rs/arrow-flight/latest/arrow_flight/struct.Location.html "struct arrow_flight::Location") A location where a Flight service will accept retrieval of a particular stream given a ticket. [PollInfo](https://docs.rs/arrow-flight/latest/arrow_flight/struct.PollInfo.html "struct arrow_flight::PollInfo") The information to process a long-running query. [PutResult](https://docs.rs/arrow-flight/latest/arrow_flight/struct.PutResult.html "struct arrow_flight::PutResult") [RenewFlightEndpointRequest](https://docs.rs/arrow-flight/latest/arrow_flight/struct.RenewFlightEndpointRequest.html "struct arrow_flight::RenewFlightEndpointRequest") The request of the RenewFlightEndpoint action. [Result](https://docs.rs/arrow-flight/latest/arrow_flight/struct.Result.html "struct arrow_flight::Result") An opaque result returned after executing an action. [SchemaAsIpc](https://docs.rs/arrow-flight/latest/arrow_flight/struct.SchemaAsIpc.html "struct arrow_flight::SchemaAsIpc") SchemaAsIpc represents a pairing of a `Schema` with IpcWriteOptions [SchemaResult](https://docs.rs/arrow-flight/latest/arrow_flight/struct.SchemaResult.html "struct arrow_flight::SchemaResult") Wrap the result of a getSchema call [Ticket](https://docs.rs/arrow-flight/latest/arrow_flight/struct.Ticket.html "struct arrow_flight::Ticket") An opaque identifier that the service can use to retrieve a particular portion of a stream. Enums[§](https://docs.rs/arrow-flight/latest/arrow_flight/#enums) ------------------------------------------------------------------ [CancelStatus](https://docs.rs/arrow-flight/latest/arrow_flight/enum.CancelStatus.html "enum arrow_flight::CancelStatus") The result of a cancel operation. --- # Allocation in arrow::alloc - Rust [Docs.rs](https://docs.rs/) * [arrow-58.1.0](https://docs.rs/arrow/latest/arrow/alloc/trait.Allocation.html# "Rust implementation of Apache Arrow") * arrow 58.1.0 * [Permalink](https://docs.rs/arrow/58.1.0/arrow/alloc/trait.Allocation.html "Get a link to this specific version") * [Docs.rs crate page](https://docs.rs/crate/arrow/latest "See arrow in docs.rs") * [Apache-2.0](https://spdx.org/licenses/Apache-2.0) * Links * [Homepage](https://github.com/apache/arrow-rs) * [Repository](https://github.com/apache/arrow-rs) * [crates.io](https://crates.io/crates/arrow "See arrow in crates.io") * [Source](https://docs.rs/crate/arrow/latest/source/ "Browse source of arrow-58.1.0") * Owners * [andygrove](https://crates.io/users/andygrove) * [kou](https://crates.io/users/kou) * [kszucs](https://crates.io/users/kszucs) * [xhochy](https://crates.io/users/xhochy) * [nevi-me](https://crates.io/users/nevi-me) * [alamb](https://crates.io/users/alamb) * [tustvold](https://crates.io/users/tustvold) * Dependencies * * [arrow-arith ^58.1.0 _normal_](https://docs.rs/arrow-arith/^58.1.0/) * [arrow-array ^58.1.0 _normal_](https://docs.rs/arrow-array/^58.1.0/) * [arrow-buffer ^58.1.0 _normal_](https://docs.rs/arrow-buffer/^58.1.0/) * [arrow-cast ^58.1.0 _normal_](https://docs.rs/arrow-cast/^58.1.0/) * [arrow-csv ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-csv/^58.1.0/) * [arrow-data ^58.1.0 _normal_](https://docs.rs/arrow-data/^58.1.0/) * [arrow-ipc ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-ipc/^58.1.0/) * [arrow-json ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-json/^58.1.0/) * [arrow-ord ^58.1.0 _normal_](https://docs.rs/arrow-ord/^58.1.0/) * [arrow-pyarrow ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-pyarrow/^58.1.0/) * [arrow-row ^58.1.0 _normal_](https://docs.rs/arrow-row/^58.1.0/) * [arrow-schema ^58.1.0 _normal_](https://docs.rs/arrow-schema/^58.1.0/) * [arrow-select ^58.1.0 _normal_](https://docs.rs/arrow-select/^58.1.0/) * [arrow-string ^58.1.0 _normal_](https://docs.rs/arrow-string/^58.1.0/) * [half ^2.1 _normal_ _optional_](https://docs.rs/half/^2.1/) * [rand ^0.9 _normal_ _optional_](https://docs.rs/rand/^0.9/) * [bytes ^1.9 _dev_](https://docs.rs/bytes/^1.9/) * [chrono ^0.4.40 _dev_](https://docs.rs/chrono/^0.4.40/) * [criterion ^0.8.0 _dev_](https://docs.rs/criterion/^0.8.0/) * [half ^2.1 _dev_](https://docs.rs/half/^2.1/) * [memmap2 ^0.9.3 _dev_](https://docs.rs/memmap2/^0.9.3/) * [rand ^0.9 _dev_](https://docs.rs/rand/^0.9/) * [serde ^1.0 _dev_](https://docs.rs/serde/^1.0/) * Versions * [**100%** of the crate is documented](https://docs.rs/crate/arrow/latest) * [Platform](https://docs.rs/arrow/latest/arrow/alloc/trait.Allocation.html#) * [x86\_64-unknown-linux-gnu](https://docs.rs/crate/arrow/latest/target-redirect/arrow/alloc/trait.Allocation.html) * [Feature flags](https://docs.rs/crate/arrow/latest/features "Browse available feature flags of arrow-58.1.0") * [docs.rs](https://docs.rs/arrow/latest/arrow/alloc/trait.Allocation.html#) * [About docs.rs](https://docs.rs/about) * [Badges](https://docs.rs/about/badges) * [Builds](https://docs.rs/about/builds) * [Metadata](https://docs.rs/about/metadata) * [Shorthand URLs](https://docs.rs/about/redirections) * [Download](https://docs.rs/about/download) * [Rustdoc JSON](https://docs.rs/about/rustdoc-json) * [Build queue](https://docs.rs/releases/queue) * [Privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#docs.rs) * [Rust](https://docs.rs/arrow/latest/arrow/alloc/trait.Allocation.html#) * [Rust website](https://www.rust-lang.org/) * [The Book](https://doc.rust-lang.org/book/) * [Standard Library API Reference](https://doc.rust-lang.org/std/) * [Rust by Example](https://doc.rust-lang.org/rust-by-example/) * [The Cargo Guide](https://doc.rust-lang.org/cargo/guide/) * [Clippy Documentation](https://doc.rust-lang.org/nightly/clippy) [Skip to main content](https://docs.rs/arrow/latest/arrow/alloc/trait.Allocation.html#main-content) [Allocation](https://docs.rs/arrow/latest/arrow/alloc/trait.Allocation.html#) ------------------------------------------------------------------------------ [arrow](https://docs.rs/arrow/latest/arrow/index.html) ::[alloc](https://docs.rs/arrow/latest/arrow/alloc/index.html) Trait Allocation Copy item path =============================== [Source](https://docs.rs/arrow-buffer/58.1.0/x86_64-unknown-linux-gnu/src/arrow_buffer/alloc/mod.rs.html#31) pub trait Allocation: RefUnwindSafe + Send + Sync { } Expand description The owner of an allocation. The trait implementation is responsible for dropping the allocations once no more references exist. Implementors[§](https://docs.rs/arrow/latest/arrow/alloc/trait.Allocation.html#implementors) --------------------------------------------------------------------------------------------- [Source](https://docs.rs/arrow-buffer/58.1.0/x86_64-unknown-linux-gnu/src/arrow_buffer/alloc/mod.rs.html#33) [§](https://docs.rs/arrow/latest/arrow/alloc/trait.Allocation.html#impl-Allocation-for-T) ### impl [Allocation](https://docs.rs/arrow/latest/arrow/alloc/trait.Allocation.html "trait arrow::alloc::Allocation") for T where T: [RefUnwindSafe](https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html "trait core::panic::unwind_safe::RefUnwindSafe") + [Send](https://doc.rust-lang.org/nightly/core/marker/trait.Send.html "trait core::marker::Send") + [Sync](https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html "trait core::marker::Sync") , --- # arrow::alloc - Rust [Docs.rs](https://docs.rs/) * [arrow-58.1.0](https://docs.rs/arrow/latest/arrow/alloc/index.html# "Rust implementation of Apache Arrow") * arrow 58.1.0 * [Permalink](https://docs.rs/arrow/58.1.0/arrow/alloc/ "Get a link to this specific version") * [Docs.rs crate page](https://docs.rs/crate/arrow/latest "See arrow in docs.rs") * [Apache-2.0](https://spdx.org/licenses/Apache-2.0) * Links * [Homepage](https://github.com/apache/arrow-rs) * [Repository](https://github.com/apache/arrow-rs) * [crates.io](https://crates.io/crates/arrow "See arrow in crates.io") * [Source](https://docs.rs/crate/arrow/latest/source/ "Browse source of arrow-58.1.0") * Owners * [andygrove](https://crates.io/users/andygrove) * [kou](https://crates.io/users/kou) * [kszucs](https://crates.io/users/kszucs) * [xhochy](https://crates.io/users/xhochy) * [nevi-me](https://crates.io/users/nevi-me) * [alamb](https://crates.io/users/alamb) * [tustvold](https://crates.io/users/tustvold) * Dependencies * * [arrow-arith ^58.1.0 _normal_](https://docs.rs/arrow-arith/^58.1.0/) * [arrow-array ^58.1.0 _normal_](https://docs.rs/arrow-array/^58.1.0/) * [arrow-buffer ^58.1.0 _normal_](https://docs.rs/arrow-buffer/^58.1.0/) * [arrow-cast ^58.1.0 _normal_](https://docs.rs/arrow-cast/^58.1.0/) * [arrow-csv ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-csv/^58.1.0/) * [arrow-data ^58.1.0 _normal_](https://docs.rs/arrow-data/^58.1.0/) * [arrow-ipc ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-ipc/^58.1.0/) * [arrow-json ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-json/^58.1.0/) * [arrow-ord ^58.1.0 _normal_](https://docs.rs/arrow-ord/^58.1.0/) * [arrow-pyarrow ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-pyarrow/^58.1.0/) * [arrow-row ^58.1.0 _normal_](https://docs.rs/arrow-row/^58.1.0/) * [arrow-schema ^58.1.0 _normal_](https://docs.rs/arrow-schema/^58.1.0/) * [arrow-select ^58.1.0 _normal_](https://docs.rs/arrow-select/^58.1.0/) * [arrow-string ^58.1.0 _normal_](https://docs.rs/arrow-string/^58.1.0/) * [half ^2.1 _normal_ _optional_](https://docs.rs/half/^2.1/) * [rand ^0.9 _normal_ _optional_](https://docs.rs/rand/^0.9/) * [bytes ^1.9 _dev_](https://docs.rs/bytes/^1.9/) * [chrono ^0.4.40 _dev_](https://docs.rs/chrono/^0.4.40/) * [criterion ^0.8.0 _dev_](https://docs.rs/criterion/^0.8.0/) * [half ^2.1 _dev_](https://docs.rs/half/^2.1/) * [memmap2 ^0.9.3 _dev_](https://docs.rs/memmap2/^0.9.3/) * [rand ^0.9 _dev_](https://docs.rs/rand/^0.9/) * [serde ^1.0 _dev_](https://docs.rs/serde/^1.0/) * Versions * [**100%** of the crate is documented](https://docs.rs/crate/arrow/latest) * [Platform](https://docs.rs/arrow/latest/arrow/alloc/index.html#) * [x86\_64-unknown-linux-gnu](https://docs.rs/crate/arrow/latest/target-redirect/arrow/alloc/) * [Feature flags](https://docs.rs/crate/arrow/latest/features "Browse available feature flags of arrow-58.1.0") * [docs.rs](https://docs.rs/arrow/latest/arrow/alloc/index.html#) * [About docs.rs](https://docs.rs/about) * [Badges](https://docs.rs/about/badges) * [Builds](https://docs.rs/about/builds) * [Metadata](https://docs.rs/about/metadata) * [Shorthand URLs](https://docs.rs/about/redirections) * [Download](https://docs.rs/about/download) * [Rustdoc JSON](https://docs.rs/about/rustdoc-json) * [Build queue](https://docs.rs/releases/queue) * [Privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#docs.rs) * [Rust](https://docs.rs/arrow/latest/arrow/alloc/index.html#) * [Rust website](https://www.rust-lang.org/) * [The Book](https://doc.rust-lang.org/book/) * [Standard Library API Reference](https://doc.rust-lang.org/std/) * [Rust by Example](https://doc.rust-lang.org/rust-by-example/) * [The Cargo Guide](https://doc.rust-lang.org/cargo/guide/) * [Clippy Documentation](https://doc.rust-lang.org/nightly/clippy) [Skip to main content](https://docs.rs/arrow/latest/arrow/alloc/index.html#main-content) [Module alloc](https://docs.rs/arrow/latest/arrow/alloc/index.html#) --------------------------------------------------------------------- [arrow](https://docs.rs/arrow/latest/arrow/index.html) Module alloc Copy item path =========================== [Source](https://docs.rs/arrow-buffer/58.1.0/x86_64-unknown-linux-gnu/src/arrow_buffer/lib.rs.html#42) Expand description Defines the low-level [`Allocation`](https://docs.rs/arrow/latest/arrow/alloc/trait.Allocation.html "trait arrow::alloc::Allocation") API for shared memory regions Constants[§](https://docs.rs/arrow/latest/arrow/alloc/index.html#constants) ---------------------------------------------------------------------------- [ALIGNMENT](https://docs.rs/arrow/latest/arrow/alloc/constant.ALIGNMENT.html "constant arrow::alloc::ALIGNMENT") x86-64 Cache and allocation multiple alignment size Traits[§](https://docs.rs/arrow/latest/arrow/alloc/index.html#traits) ---------------------------------------------------------------------- [Allocation](https://docs.rs/arrow/latest/arrow/alloc/trait.Allocation.html "trait arrow::alloc::Allocation") The owner of an allocation. The trait implementation is responsible for dropping the allocations once no more references exist. --- # arrow::error - Rust [Docs.rs](https://docs.rs/) * [arrow-58.1.0](https://docs.rs/arrow/latest/arrow/error/index.html# "Rust implementation of Apache Arrow") * arrow 58.1.0 * [Permalink](https://docs.rs/arrow/58.1.0/arrow/error/ "Get a link to this specific version") * [Docs.rs crate page](https://docs.rs/crate/arrow/latest "See arrow in docs.rs") * [Apache-2.0](https://spdx.org/licenses/Apache-2.0) * Links * [Homepage](https://github.com/apache/arrow-rs) * [Repository](https://github.com/apache/arrow-rs) * [crates.io](https://crates.io/crates/arrow "See arrow in crates.io") * [Source](https://docs.rs/crate/arrow/latest/source/ "Browse source of arrow-58.1.0") * Owners * [andygrove](https://crates.io/users/andygrove) * [kou](https://crates.io/users/kou) * [kszucs](https://crates.io/users/kszucs) * [xhochy](https://crates.io/users/xhochy) * [nevi-me](https://crates.io/users/nevi-me) * [alamb](https://crates.io/users/alamb) * [tustvold](https://crates.io/users/tustvold) * Dependencies * * [arrow-arith ^58.1.0 _normal_](https://docs.rs/arrow-arith/^58.1.0/) * [arrow-array ^58.1.0 _normal_](https://docs.rs/arrow-array/^58.1.0/) * [arrow-buffer ^58.1.0 _normal_](https://docs.rs/arrow-buffer/^58.1.0/) * [arrow-cast ^58.1.0 _normal_](https://docs.rs/arrow-cast/^58.1.0/) * [arrow-csv ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-csv/^58.1.0/) * [arrow-data ^58.1.0 _normal_](https://docs.rs/arrow-data/^58.1.0/) * [arrow-ipc ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-ipc/^58.1.0/) * [arrow-json ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-json/^58.1.0/) * [arrow-ord ^58.1.0 _normal_](https://docs.rs/arrow-ord/^58.1.0/) * [arrow-pyarrow ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-pyarrow/^58.1.0/) * [arrow-row ^58.1.0 _normal_](https://docs.rs/arrow-row/^58.1.0/) * [arrow-schema ^58.1.0 _normal_](https://docs.rs/arrow-schema/^58.1.0/) * [arrow-select ^58.1.0 _normal_](https://docs.rs/arrow-select/^58.1.0/) * [arrow-string ^58.1.0 _normal_](https://docs.rs/arrow-string/^58.1.0/) * [half ^2.1 _normal_ _optional_](https://docs.rs/half/^2.1/) * [rand ^0.9 _normal_ _optional_](https://docs.rs/rand/^0.9/) * [bytes ^1.9 _dev_](https://docs.rs/bytes/^1.9/) * [chrono ^0.4.40 _dev_](https://docs.rs/chrono/^0.4.40/) * [criterion ^0.8.0 _dev_](https://docs.rs/criterion/^0.8.0/) * [half ^2.1 _dev_](https://docs.rs/half/^2.1/) * [memmap2 ^0.9.3 _dev_](https://docs.rs/memmap2/^0.9.3/) * [rand ^0.9 _dev_](https://docs.rs/rand/^0.9/) * [serde ^1.0 _dev_](https://docs.rs/serde/^1.0/) * Versions * [**100%** of the crate is documented](https://docs.rs/crate/arrow/latest) * [Platform](https://docs.rs/arrow/latest/arrow/error/index.html#) * [x86\_64-unknown-linux-gnu](https://docs.rs/crate/arrow/latest/target-redirect/arrow/error/) * [Feature flags](https://docs.rs/crate/arrow/latest/features "Browse available feature flags of arrow-58.1.0") * [docs.rs](https://docs.rs/arrow/latest/arrow/error/index.html#) * [About docs.rs](https://docs.rs/about) * [Badges](https://docs.rs/about/badges) * [Builds](https://docs.rs/about/builds) * [Metadata](https://docs.rs/about/metadata) * [Shorthand URLs](https://docs.rs/about/redirections) * [Download](https://docs.rs/about/download) * [Rustdoc JSON](https://docs.rs/about/rustdoc-json) * [Build queue](https://docs.rs/releases/queue) * [Privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#docs.rs) * [Rust](https://docs.rs/arrow/latest/arrow/error/index.html#) * [Rust website](https://www.rust-lang.org/) * [The Book](https://doc.rust-lang.org/book/) * [Standard Library API Reference](https://doc.rust-lang.org/std/) * [Rust by Example](https://doc.rust-lang.org/rust-by-example/) * [The Cargo Guide](https://doc.rust-lang.org/cargo/guide/) * [Clippy Documentation](https://doc.rust-lang.org/nightly/clippy) [Skip to main content](https://docs.rs/arrow/latest/arrow/error/index.html#main-content) [Module error](https://docs.rs/arrow/latest/arrow/error/index.html#) --------------------------------------------------------------------- [arrow](https://docs.rs/arrow/latest/arrow/index.html) Module error Copy item path =========================== [Source](https://docs.rs/arrow/latest/src/arrow/error.rs.html#18-23) Expand description Defines `ArrowError` for representing failures in various Arrow operations. Enums[§](https://docs.rs/arrow/latest/arrow/error/index.html#enums) -------------------------------------------------------------------- [ArrowError](https://docs.rs/arrow/latest/arrow/error/enum.ArrowError.html "enum arrow::error::ArrowError") Many different operations in the `arrow` crate return this error type. Type Aliases[§](https://docs.rs/arrow/latest/arrow/error/index.html#types) --------------------------------------------------------------------------- [Result](https://docs.rs/arrow/latest/arrow/error/type.Result.html "type arrow::error::Result") A specialized `Result` type for Arrow operations. --- # arrow::ffi - Rust [Docs.rs](https://docs.rs/) * [arrow-58.1.0](https://docs.rs/arrow/latest/arrow/ffi/index.html# "Rust implementation of Apache Arrow") * arrow 58.1.0 * [Permalink](https://docs.rs/arrow/58.1.0/arrow/ffi/ "Get a link to this specific version") * [Docs.rs crate page](https://docs.rs/crate/arrow/latest "See arrow in docs.rs") * [Apache-2.0](https://spdx.org/licenses/Apache-2.0) * Links * [Homepage](https://github.com/apache/arrow-rs) * [Repository](https://github.com/apache/arrow-rs) * [crates.io](https://crates.io/crates/arrow "See arrow in crates.io") * [Source](https://docs.rs/crate/arrow/latest/source/ "Browse source of arrow-58.1.0") * Owners * [andygrove](https://crates.io/users/andygrove) * [kou](https://crates.io/users/kou) * [kszucs](https://crates.io/users/kszucs) * [xhochy](https://crates.io/users/xhochy) * [nevi-me](https://crates.io/users/nevi-me) * [alamb](https://crates.io/users/alamb) * [tustvold](https://crates.io/users/tustvold) * Dependencies * * [arrow-arith ^58.1.0 _normal_](https://docs.rs/arrow-arith/^58.1.0/) * [arrow-array ^58.1.0 _normal_](https://docs.rs/arrow-array/^58.1.0/) * [arrow-buffer ^58.1.0 _normal_](https://docs.rs/arrow-buffer/^58.1.0/) * [arrow-cast ^58.1.0 _normal_](https://docs.rs/arrow-cast/^58.1.0/) * [arrow-csv ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-csv/^58.1.0/) * [arrow-data ^58.1.0 _normal_](https://docs.rs/arrow-data/^58.1.0/) * [arrow-ipc ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-ipc/^58.1.0/) * [arrow-json ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-json/^58.1.0/) * [arrow-ord ^58.1.0 _normal_](https://docs.rs/arrow-ord/^58.1.0/) * [arrow-pyarrow ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-pyarrow/^58.1.0/) * [arrow-row ^58.1.0 _normal_](https://docs.rs/arrow-row/^58.1.0/) * [arrow-schema ^58.1.0 _normal_](https://docs.rs/arrow-schema/^58.1.0/) * [arrow-select ^58.1.0 _normal_](https://docs.rs/arrow-select/^58.1.0/) * [arrow-string ^58.1.0 _normal_](https://docs.rs/arrow-string/^58.1.0/) * [half ^2.1 _normal_ _optional_](https://docs.rs/half/^2.1/) * [rand ^0.9 _normal_ _optional_](https://docs.rs/rand/^0.9/) * [bytes ^1.9 _dev_](https://docs.rs/bytes/^1.9/) * [chrono ^0.4.40 _dev_](https://docs.rs/chrono/^0.4.40/) * [criterion ^0.8.0 _dev_](https://docs.rs/criterion/^0.8.0/) * [half ^2.1 _dev_](https://docs.rs/half/^2.1/) * [memmap2 ^0.9.3 _dev_](https://docs.rs/memmap2/^0.9.3/) * [rand ^0.9 _dev_](https://docs.rs/rand/^0.9/) * [serde ^1.0 _dev_](https://docs.rs/serde/^1.0/) * Versions * [**100%** of the crate is documented](https://docs.rs/crate/arrow/latest) * [Platform](https://docs.rs/arrow/latest/arrow/ffi/index.html#) * [x86\_64-unknown-linux-gnu](https://docs.rs/crate/arrow/latest/target-redirect/arrow/ffi/) * [Feature flags](https://docs.rs/crate/arrow/latest/features "Browse available feature flags of arrow-58.1.0") * [docs.rs](https://docs.rs/arrow/latest/arrow/ffi/index.html#) * [About docs.rs](https://docs.rs/about) * [Badges](https://docs.rs/about/badges) * [Builds](https://docs.rs/about/builds) * [Metadata](https://docs.rs/about/metadata) * [Shorthand URLs](https://docs.rs/about/redirections) * [Download](https://docs.rs/about/download) * [Rustdoc JSON](https://docs.rs/about/rustdoc-json) * [Build queue](https://docs.rs/releases/queue) * [Privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#docs.rs) * [Rust](https://docs.rs/arrow/latest/arrow/ffi/index.html#) * [Rust website](https://www.rust-lang.org/) * [The Book](https://doc.rust-lang.org/book/) * [Standard Library API Reference](https://doc.rust-lang.org/std/) * [Rust by Example](https://doc.rust-lang.org/rust-by-example/) * [The Cargo Guide](https://doc.rust-lang.org/cargo/guide/) * [Clippy Documentation](https://doc.rust-lang.org/nightly/clippy) [Skip to main content](https://docs.rs/arrow/latest/arrow/ffi/index.html#main-content) [Module ffi](https://docs.rs/arrow/latest/arrow/ffi/index.html#) ----------------------------------------------------------------- [arrow](https://docs.rs/arrow/latest/arrow/index.html) Module ffi Copy item path ========================= [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/lib.rs.html#253) Available on **crate feature `ffi`** only. Expand description Contains declarations to bind to the [C Data Interface](https://arrow.apache.org/docs/format/CDataInterface.html) . Generally, this module is divided in two main interfaces: One interface maps C ABI to native Rust types, i.e. convert c-pointers, c\_char, to native rust. This is handled by [FFI\_ArrowSchema](https://docs.rs/arrow/latest/arrow/ffi/struct.FFI_ArrowSchema.html "struct arrow::ffi::FFI_ArrowSchema") and [FFI\_ArrowArray](https://docs.rs/arrow/latest/arrow/ffi/struct.FFI_ArrowArray.html "struct arrow::ffi::FFI_ArrowArray") . The second interface maps native Rust types to the Rust-specific implementation of Arrow such as `format` to `Datatype`, `Buffer`, etc. This is handled by `from_ffi` and `to_ffi`. Export to FFI // create an array natively let array = Int32Array::from(vec![Some(1), None, Some(3)]); let data = array.into_data(); // Export it let (out_array, out_schema) = to_ffi(&data)?; // import it let data = unsafe { from_ffi(out_array, &out_schema) }?; let array = Int32Array::from(data); // verify assert_eq!(array, Int32Array::from(vec![Some(1), None, Some(3)])); Import from FFI /// A foreign data container that can export to C Data interface struct ForeignArray {}; impl ForeignArray { /// Export from foreign array representation to C Data interface /// e.g. fn export_to_c(&self, array: *mut FFI_ArrowArray, schema: *mut FFI_ArrowSchema) { // ... } } /// Import an [`ArrayRef`] from a [`ForeignArray`] fn import_array(foreign: &ForeignArray) -> Result { let mut schema = FFI_ArrowSchema::empty(); let mut array = FFI_ArrowArray::empty(); foreign.export_to_c(addr_of_mut!(array), addr_of_mut!(schema)); Ok(make_array(unsafe { from_ffi(array, &schema) }?)) } Structs[§](https://docs.rs/arrow/latest/arrow/ffi/index.html#structs) ---------------------------------------------------------------------- [FFI\_ArrowArray](https://docs.rs/arrow/latest/arrow/ffi/struct.FFI_ArrowArray.html "struct arrow::ffi::FFI_ArrowArray") ABI-compatible struct for ArrowArray from C Data Interface See [https://arrow.apache.org/docs/format/CDataInterface.html#structure-definitions](https://arrow.apache.org/docs/format/CDataInterface.html#structure-definitions) [FFI\_ArrowSchema](https://docs.rs/arrow/latest/arrow/ffi/struct.FFI_ArrowSchema.html "struct arrow::ffi::FFI_ArrowSchema") ABI-compatible struct for `ArrowSchema` from C Data Interface See [https://arrow.apache.org/docs/format/CDataInterface.html#structure-definitions](https://arrow.apache.org/docs/format/CDataInterface.html#structure-definitions) Functions[§](https://docs.rs/arrow/latest/arrow/ffi/index.html#functions) -------------------------------------------------------------------------- [export\_array\_into\_raw](https://docs.rs/arrow/latest/arrow/ffi/fn.export_array_into_raw.html "fn arrow::ffi::export_array_into_raw") ⚠Deprecated Exports an array to raw pointers of the C Data Interface provided by the consumer. [from\_ffi](https://docs.rs/arrow/latest/arrow/ffi/fn.from_ffi.html "fn arrow::ffi::from_ffi") ⚠ Import [ArrayData](https://docs.rs/arrow/latest/arrow/array/struct.ArrayData.html "struct arrow::array::ArrayData") from the C Data Interface [from\_ffi\_and\_data\_type](https://docs.rs/arrow/latest/arrow/ffi/fn.from_ffi_and_data_type.html "fn arrow::ffi::from_ffi_and_data_type") ⚠ Import [ArrayData](https://docs.rs/arrow/latest/arrow/array/struct.ArrayData.html "struct arrow::array::ArrayData") from the C Data Interface [to\_ffi](https://docs.rs/arrow/latest/arrow/ffi/fn.to_ffi.html "fn arrow::ffi::to_ffi") Export to the C Data Interface --- # arrow::buffer - Rust [Docs.rs](https://docs.rs/) * [arrow-58.1.0](https://docs.rs/arrow/latest/arrow/buffer/index.html# "Rust implementation of Apache Arrow") * arrow 58.1.0 * [Permalink](https://docs.rs/arrow/58.1.0/arrow/buffer/ "Get a link to this specific version") * [Docs.rs crate page](https://docs.rs/crate/arrow/latest "See arrow in docs.rs") * [Apache-2.0](https://spdx.org/licenses/Apache-2.0) * Links * [Homepage](https://github.com/apache/arrow-rs) * [Repository](https://github.com/apache/arrow-rs) * [crates.io](https://crates.io/crates/arrow "See arrow in crates.io") * [Source](https://docs.rs/crate/arrow/latest/source/ "Browse source of arrow-58.1.0") * Owners * [andygrove](https://crates.io/users/andygrove) * [kou](https://crates.io/users/kou) * [kszucs](https://crates.io/users/kszucs) * [xhochy](https://crates.io/users/xhochy) * [nevi-me](https://crates.io/users/nevi-me) * [alamb](https://crates.io/users/alamb) * [tustvold](https://crates.io/users/tustvold) * Dependencies * * [arrow-arith ^58.1.0 _normal_](https://docs.rs/arrow-arith/^58.1.0/) * [arrow-array ^58.1.0 _normal_](https://docs.rs/arrow-array/^58.1.0/) * [arrow-buffer ^58.1.0 _normal_](https://docs.rs/arrow-buffer/^58.1.0/) * [arrow-cast ^58.1.0 _normal_](https://docs.rs/arrow-cast/^58.1.0/) * [arrow-csv ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-csv/^58.1.0/) * [arrow-data ^58.1.0 _normal_](https://docs.rs/arrow-data/^58.1.0/) * [arrow-ipc ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-ipc/^58.1.0/) * [arrow-json ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-json/^58.1.0/) * [arrow-ord ^58.1.0 _normal_](https://docs.rs/arrow-ord/^58.1.0/) * [arrow-pyarrow ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-pyarrow/^58.1.0/) * [arrow-row ^58.1.0 _normal_](https://docs.rs/arrow-row/^58.1.0/) * [arrow-schema ^58.1.0 _normal_](https://docs.rs/arrow-schema/^58.1.0/) * [arrow-select ^58.1.0 _normal_](https://docs.rs/arrow-select/^58.1.0/) * [arrow-string ^58.1.0 _normal_](https://docs.rs/arrow-string/^58.1.0/) * [half ^2.1 _normal_ _optional_](https://docs.rs/half/^2.1/) * [rand ^0.9 _normal_ _optional_](https://docs.rs/rand/^0.9/) * [bytes ^1.9 _dev_](https://docs.rs/bytes/^1.9/) * [chrono ^0.4.40 _dev_](https://docs.rs/chrono/^0.4.40/) * [criterion ^0.8.0 _dev_](https://docs.rs/criterion/^0.8.0/) * [half ^2.1 _dev_](https://docs.rs/half/^2.1/) * [memmap2 ^0.9.3 _dev_](https://docs.rs/memmap2/^0.9.3/) * [rand ^0.9 _dev_](https://docs.rs/rand/^0.9/) * [serde ^1.0 _dev_](https://docs.rs/serde/^1.0/) * Versions * [**100%** of the crate is documented](https://docs.rs/crate/arrow/latest) * [Platform](https://docs.rs/arrow/latest/arrow/buffer/index.html#) * [x86\_64-unknown-linux-gnu](https://docs.rs/crate/arrow/latest/target-redirect/arrow/buffer/) * [Feature flags](https://docs.rs/crate/arrow/latest/features "Browse available feature flags of arrow-58.1.0") * [docs.rs](https://docs.rs/arrow/latest/arrow/buffer/index.html#) * [About docs.rs](https://docs.rs/about) * [Badges](https://docs.rs/about/badges) * [Builds](https://docs.rs/about/builds) * [Metadata](https://docs.rs/about/metadata) * [Shorthand URLs](https://docs.rs/about/redirections) * [Download](https://docs.rs/about/download) * [Rustdoc JSON](https://docs.rs/about/rustdoc-json) * [Build queue](https://docs.rs/releases/queue) * [Privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#docs.rs) * [Rust](https://docs.rs/arrow/latest/arrow/buffer/index.html#) * [Rust website](https://www.rust-lang.org/) * [The Book](https://doc.rust-lang.org/book/) * [Standard Library API Reference](https://doc.rust-lang.org/std/) * [Rust by Example](https://doc.rust-lang.org/rust-by-example/) * [The Cargo Guide](https://doc.rust-lang.org/cargo/guide/) * [Clippy Documentation](https://doc.rust-lang.org/nightly/clippy) [Skip to main content](https://docs.rs/arrow/latest/arrow/buffer/index.html#main-content) [Module buffer](https://docs.rs/arrow/latest/arrow/buffer/index.html#) ----------------------------------------------------------------------- [arrow](https://docs.rs/arrow/latest/arrow/index.html) Module buffer Copy item path ============================ [Source](https://docs.rs/arrow-buffer/58.1.0/x86_64-unknown-linux-gnu/src/arrow_buffer/lib.rs.html#43) Expand description Types of shared memory region Structs[§](https://docs.rs/arrow/latest/arrow/buffer/index.html#structs) ------------------------------------------------------------------------- [BooleanBuffer](https://docs.rs/arrow/latest/arrow/buffer/struct.BooleanBuffer.html "struct arrow::buffer::BooleanBuffer") A slice-able [`Buffer`](https://docs.rs/arrow/latest/arrow/buffer/struct.Buffer.html "struct arrow::buffer::Buffer") containing bit-packed booleans [Buffer](https://docs.rs/arrow/latest/arrow/buffer/struct.Buffer.html "struct arrow::buffer::Buffer") A contiguous memory region that can be shared with other buffers and across thread boundaries that stores Arrow data. [MutableBuffer](https://docs.rs/arrow/latest/arrow/buffer/struct.MutableBuffer.html "struct arrow::buffer::MutableBuffer") A [`MutableBuffer`](https://docs.rs/arrow/latest/arrow/buffer/struct.MutableBuffer.html "struct arrow::buffer::MutableBuffer") is a wrapper over memory regions, used to build [`Buffer`](https://docs.rs/arrow/latest/arrow/buffer/struct.Buffer.html "struct arrow::buffer::Buffer") s out of items or slices of items. [NullBuffer](https://docs.rs/arrow/latest/arrow/buffer/struct.NullBuffer.html "struct arrow::buffer::NullBuffer") A [`BooleanBuffer`](https://docs.rs/arrow/latest/arrow/buffer/struct.BooleanBuffer.html "struct arrow::buffer::BooleanBuffer") used to encode validity (null values) for Arrow arrays [OffsetBuffer](https://docs.rs/arrow/latest/arrow/buffer/struct.OffsetBuffer.html "struct arrow::buffer::OffsetBuffer") A non-empty buffer of monotonically increasing, positive integers. [RunEndBuffer](https://docs.rs/arrow/latest/arrow/buffer/struct.RunEndBuffer.html "struct arrow::buffer::RunEndBuffer") A buffer of monotonically increasing, positive integers used to store run-ends. [ScalarBuffer](https://docs.rs/arrow/latest/arrow/buffer/struct.ScalarBuffer.html "struct arrow::buffer::ScalarBuffer") A strongly-typed [`Buffer`](https://docs.rs/arrow/latest/arrow/buffer/struct.Buffer.html "struct arrow::buffer::Buffer") supporting zero-copy cloning and slicing Functions[§](https://docs.rs/arrow/latest/arrow/buffer/index.html#functions) ----------------------------------------------------------------------------- [bitwise\_bin\_op\_helper](https://docs.rs/arrow/latest/arrow/buffer/fn.bitwise_bin_op_helper.html "fn arrow::buffer::bitwise_bin_op_helper") Apply a bitwise operation `op` to two inputs and return the result as a Buffer. [bitwise\_quaternary\_op\_helper](https://docs.rs/arrow/latest/arrow/buffer/fn.bitwise_quaternary_op_helper.html "fn arrow::buffer::bitwise_quaternary_op_helper") Apply a bitwise operation `op` to four inputs and return the result as a Buffer. [bitwise\_unary\_op\_helper](https://docs.rs/arrow/latest/arrow/buffer/fn.bitwise_unary_op_helper.html "fn arrow::buffer::bitwise_unary_op_helper") Apply a bitwise operation `op` to one input and return the result as a Buffer. [buffer\_bin\_and](https://docs.rs/arrow/latest/arrow/buffer/fn.buffer_bin_and.html "fn arrow::buffer::buffer_bin_and") Apply a bitwise and to two inputs and return the result as a Buffer. The inputs are treated as bitmaps, meaning that offsets and length are specified in number of bits. [buffer\_bin\_and\_not](https://docs.rs/arrow/latest/arrow/buffer/fn.buffer_bin_and_not.html "fn arrow::buffer::buffer_bin_and_not") Apply a bitwise and\_not to two inputs and return the result as a Buffer. The inputs are treated as bitmaps, meaning that offsets and length are specified in number of bits. [buffer\_bin\_or](https://docs.rs/arrow/latest/arrow/buffer/fn.buffer_bin_or.html "fn arrow::buffer::buffer_bin_or") Apply a bitwise or to two inputs and return the result as a Buffer. The inputs are treated as bitmaps, meaning that offsets and length are specified in number of bits. [buffer\_bin\_xor](https://docs.rs/arrow/latest/arrow/buffer/fn.buffer_bin_xor.html "fn arrow::buffer::buffer_bin_xor") Apply a bitwise xor to two inputs and return the result as a Buffer. The inputs are treated as bitmaps, meaning that offsets and length are specified in number of bits. [buffer\_unary\_not](https://docs.rs/arrow/latest/arrow/buffer/fn.buffer_unary_not.html "fn arrow::buffer::buffer_unary_not") Apply a bitwise not to one input and return the result as a Buffer. The input is treated as a bitmap, meaning that offset and length are specified in number of bits. --- # arrow_avro - Rust [Docs.rs](https://docs.rs/) * [arrow-avro-58.1.0](https://docs.rs/arrow-avro/latest/arrow_avro/# "Support for parsing Avro format into the Arrow format") * arrow-avro 58.1.0 * [Permalink](https://docs.rs/arrow-avro/58.1.0/arrow_avro/ "Get a link to this specific version") * [Docs.rs crate page](https://docs.rs/crate/arrow-avro/latest "See arrow-avro in docs.rs") * [Apache-2.0](https://spdx.org/licenses/Apache-2.0) * Links * [Homepage](https://github.com/apache/arrow-rs) * [Repository](https://github.com/apache/arrow-rs) * [crates.io](https://crates.io/crates/arrow-avro "See arrow-avro in crates.io") * [Source](https://docs.rs/crate/arrow-avro/latest/source/ "Browse source of arrow-avro-58.1.0") * Owners * [andygrove](https://crates.io/users/andygrove) * [kou](https://crates.io/users/kou) * [xhochy](https://crates.io/users/xhochy) * [alamb](https://crates.io/users/alamb) * [tustvold](https://crates.io/users/tustvold) * Dependencies * * [arrow-array ^58.1.0 _normal_](https://docs.rs/arrow-array/^58.1.0/) * [arrow-buffer ^58.1.0 _normal_](https://docs.rs/arrow-buffer/^58.1.0/) * [arrow-schema ^58.1.0 _normal_](https://docs.rs/arrow-schema/^58.1.0/) * [arrow-select ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-select/^58.1.0/) * [bytes ^1.11.0 _normal_](https://docs.rs/bytes/^1.11.0/) * [bzip2 ^0.6.0 _normal_ _optional_](https://docs.rs/bzip2/^0.6.0/) * [crc ^3.0 _normal_ _optional_](https://docs.rs/crc/^3.0/) * [flate2 ^1.0 _normal_ _optional_](https://docs.rs/flate2/^1.0/) * [futures ^0.3 _normal_ _optional_](https://docs.rs/futures/^0.3/) * [indexmap ^2.10 _normal_](https://docs.rs/indexmap/^2.10/) * [md5 ^0.8 _normal_ _optional_](https://docs.rs/md5/^0.8/) * [object\_store ^0.13 _normal_ _optional_](https://docs.rs/object_store/^0.13/) * [rand ^0.9 _normal_](https://docs.rs/rand/^0.9/) * [serde ^1.0.188 _normal_](https://docs.rs/serde/^1.0.188/) * [serde\_json ^1.0 _normal_](https://docs.rs/serde_json/^1.0/) * [sha2 ^0.10 _normal_ _optional_](https://docs.rs/sha2/^0.10/) * [snap ^1.0 _normal_ _optional_](https://docs.rs/snap/^1.0/) * [strum\_macros ^0.28 _normal_](https://docs.rs/strum_macros/^0.28/) * [tokio ^1.0 _normal_ _optional_](https://docs.rs/tokio/^1.0/) * [uuid ^1.17 _normal_](https://docs.rs/uuid/^1.17/) * [liblzma ^0.4 _normal_ _optional_](https://docs.rs/liblzma/^0.4/) * [zstd ^0.13 _normal_ _optional_](https://docs.rs/zstd/^0.13/) * [apache-avro ^0.21.0 _dev_](https://docs.rs/apache-avro/^0.21.0/) * [arrow ^58.1.0 _dev_](https://docs.rs/arrow/^58.1.0/) * [arrow-data ^58.1.0 _dev_](https://docs.rs/arrow-data/^58.1.0/) * [async-stream ^0.3.6 _dev_](https://docs.rs/async-stream/^0.3.6/) * [bytes ^1.11.0 _dev_](https://docs.rs/bytes/^1.11.0/) * [criterion ^0.8.0 _dev_](https://docs.rs/criterion/^0.8.0/) * [futures ^0.3.31 _dev_](https://docs.rs/futures/^0.3.31/) * [half ^2.1 _dev_](https://docs.rs/half/^2.1/) * [num-bigint ^0.4 _dev_](https://docs.rs/num-bigint/^0.4/) * [object\_store ^0.13 _dev_](https://docs.rs/object_store/^0.13/) * [once\_cell ^1.21.3 _dev_](https://docs.rs/once_cell/^1.21.3/) * [rand ^0.9.1 _dev_](https://docs.rs/rand/^0.9.1/) * [tempfile ^3.3 _dev_](https://docs.rs/tempfile/^3.3/) * [tokio ^1.0 _dev_](https://docs.rs/tokio/^1.0/) * Versions * [**100%** of the crate is documented](https://docs.rs/crate/arrow-avro/latest) * [Platform](https://docs.rs/arrow-avro/latest/arrow_avro/#) * [x86\_64-unknown-linux-gnu](https://docs.rs/crate/arrow-avro/latest/target-redirect/arrow_avro/) * [Feature flags](https://docs.rs/crate/arrow-avro/latest/features "Browse available feature flags of arrow-avro-58.1.0") * [docs.rs](https://docs.rs/arrow-avro/latest/arrow_avro/#) * [About docs.rs](https://docs.rs/about) * [Badges](https://docs.rs/about/badges) * [Builds](https://docs.rs/about/builds) * [Metadata](https://docs.rs/about/metadata) * [Shorthand URLs](https://docs.rs/about/redirections) * [Download](https://docs.rs/about/download) * [Rustdoc JSON](https://docs.rs/about/rustdoc-json) * [Build queue](https://docs.rs/releases/queue) * [Privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#docs.rs) * [Rust](https://docs.rs/arrow-avro/latest/arrow_avro/#) * [Rust website](https://www.rust-lang.org/) * [The Book](https://doc.rust-lang.org/book/) * [Standard Library API Reference](https://doc.rust-lang.org/std/) * [Rust by Example](https://doc.rust-lang.org/rust-by-example/) * [The Cargo Guide](https://doc.rust-lang.org/cargo/guide/) * [Clippy Documentation](https://doc.rust-lang.org/nightly/clippy) [Skip to main content](https://docs.rs/arrow-avro/latest/arrow_avro/#main-content) [Crate arrow\_avro](https://docs.rs/arrow-avro/latest/arrow_avro/#) -------------------------------------------------------------------- Crate arrow\_avro Copy item path ================================ [Source](https://docs.rs/arrow-avro/latest/src/arrow_avro/lib.rs.html#18-272) Expand description Convert data to / from the [Apache Arrow](https://arrow.apache.org/) memory format and [Apache Avro](https://avro.apache.org/) . This crate provides: * a [`reader`](https://docs.rs/arrow-avro/latest/arrow_avro/reader/index.html "mod arrow_avro::reader") that decodes Avro (Object Container Files, Avro Single‑Object encoding, and Confluent Schema Registry wire format) into Arrow `RecordBatch`es, * and a [`writer`](https://docs.rs/arrow-avro/latest/arrow_avro/writer/index.html "mod arrow_avro::writer") that encodes Arrow `RecordBatch`es into Avro (OCF or SOE). If you’re new to Arrow or Avro, see: * Arrow project site: [https://arrow.apache.org/](https://arrow.apache.org/) * Avro 1.11.1 specification: [https://avro.apache.org/docs/1.11.1/specification/](https://avro.apache.org/docs/1.11.1/specification/) ### [§](https://docs.rs/arrow-avro/latest/arrow_avro/#example-ocf-object-container-file-roundtrip-runnable) Example: OCF (Object Container File) round‑trip _(runnable)_ The example below creates an Arrow table, writes an **Avro OCF** fully in memory, and then reads it back. OCF is a self‑describing file format that embeds the Avro schema in a header with optional compression and block sync markers. Spec: [https://avro.apache.org/docs/1.11.1/specification/#object-container-files](https://avro.apache.org/docs/1.11.1/specification/#object-container-files) use std::io::Cursor; use std::sync::Arc; use arrow_array::{ArrayRef, Int32Array, RecordBatch}; use arrow_schema::{DataType, Field, Schema}; use arrow_avro::writer::AvroWriter; use arrow_avro::reader::ReaderBuilder; // Build a tiny Arrow batch let schema = Schema::new(vec![Field::new("id", DataType::Int32, false)]); let batch = RecordBatch::try_new( Arc::new(schema.clone()), vec![Arc::new(Int32Array::from(vec![1, 2, 3])) as ArrayRef], )?; // Write an Avro **Object Container File** (OCF) to a Vec let sink: Vec = Vec::new(); let mut w = AvroWriter::new(sink, schema.clone())?; w.write(&batch)?; w.finish()?; let bytes = w.into_inner(); assert!(!bytes.is_empty()); // Read it back let mut r = ReaderBuilder::new().build(Cursor::new(bytes))?; let out = r.next().unwrap()?; assert_eq!(out.num_rows(), 3); ### [§](https://docs.rs/arrow-avro/latest/arrow_avro/#quickstart-soe-singleobject-encoding-roundtrip-runnable) Quickstart: SOE (Single‑Object Encoding) round‑trip _(runnable)_ Avro **Single‑Object Encoding (SOE)** wraps an Avro body with a 2‑byte marker `0xC3 0x01` and an **8‑byte little‑endian CRC‑64‑AVRO Rabin fingerprint** of the writer schema, then the Avro body. Spec: [https://avro.apache.org/docs/1.11.1/specification/#single-object-encoding](https://avro.apache.org/docs/1.11.1/specification/#single-object-encoding) This example registers the writer schema (computing a Rabin fingerprint), writes a single‑row Avro body (using `AvroStreamWriter`), constructs the SOE frame, and decodes it back to Arrow. use std::collections::HashMap; use std::sync::Arc; use arrow_array::{ArrayRef, Int64Array, RecordBatch}; use arrow_schema::{DataType, Field, Schema}; use arrow_avro::writer::{AvroStreamWriter, WriterBuilder}; use arrow_avro::reader::ReaderBuilder; use arrow_avro::schema::{AvroSchema, SchemaStore, FingerprintStrategy, SCHEMA_METADATA_KEY}; // Writer schema: { "type":"record","name":"User","fields":[{"name":"x","type":"long"}] } let writer_json = r#"{"type":"record","name":"User","fields":[{"name":"x","type":"long"}]}"#; let mut store = SchemaStore::new(); // Rabin CRC‑64‑AVRO by default let _fp = store.register(AvroSchema::new(writer_json.to_string()))?; // Build an Arrow schema that references the same Avro JSON let mut md = HashMap::new(); md.insert(SCHEMA_METADATA_KEY.to_string(), writer_json.to_string()); let schema = Schema::new_with_metadata( vec![Field::new("x", DataType::Int64, false)], md, ); // One‑row batch: { x: 7 } let batch = RecordBatch::try_new( Arc::new(schema.clone()), vec![Arc::new(Int64Array::from(vec![7])) as ArrayRef], )?; // Stream‑write a single record; the writer adds **SOE** (C3 01 + Rabin) automatically. let sink: Vec = Vec::new(); let mut w: AvroStreamWriter> = WriterBuilder::new(schema.clone()) .with_fingerprint_strategy(FingerprintStrategy::Rabin) .build(sink)?; w.write(&batch)?; w.finish()?; let frame = w.into_inner(); // already: C3 01 + 8B LE Rabin + Avro body assert!(frame.len() > 10); // Decode let mut dec = ReaderBuilder::new() .with_writer_schema_store(store) .build_decoder()?; dec.decode(&frame)?; let out = dec.flush()?.expect("one row"); assert_eq!(out.num_rows(), 1); ### [§](https://docs.rs/arrow-avro/latest/arrow_avro/#async-reading-async-feature) `async` Reading (`async` feature) The [`reader`](https://docs.rs/arrow-avro/latest/arrow_avro/reader/index.html "mod arrow_avro::reader") module provides async APIs for reading Avro files when the `async` feature is enabled. [`AsyncAvroFileReader`](https://docs.rs/arrow-avro/latest/arrow_avro/reader/async_reader/struct.AsyncAvroFileReader.html "struct arrow_avro::reader::async_reader::AsyncAvroFileReader") implements `Stream>`, allowing efficient async streaming of record batches. When the `object_store` feature is enabled, [`AvroObjectReader`](https://docs.rs/arrow-avro/latest/arrow_avro/reader/async_reader/struct.AvroObjectReader.html "struct arrow_avro::reader::async_reader::AvroObjectReader") provides integration with object storage services such as S3 via the [object\_store](https://docs.rs/object_store/latest/object_store/) crate. [ⓘ](https://docs.rs/arrow-avro/latest/arrow_avro/# "This example is not tested") use std::sync::Arc; use arrow_avro::reader::{AsyncAvroFileReader, AvroObjectReader}; use futures::TryStreamExt; use object_store::ObjectStore; use object_store::local::LocalFileSystem; use object_store::path::Path; let store: Arc = Arc::new(LocalFileSystem::new()); let path = Path::from("data/example.avro"); let meta = store.head(&path).await?; let reader = AvroObjectReader::new(store, path); let stream = AsyncAvroFileReader::builder(reader, meta.size, 1024) .try_build() .await?; let batches: Vec<_> = stream.try_collect().await?; * * * #### [§](https://docs.rs/arrow-avro/latest/arrow_avro/#modules) Modules * [`reader`](https://docs.rs/arrow-avro/latest/arrow_avro/reader/index.html "mod arrow_avro::reader") : read Avro (OCF, SOE, Confluent) into Arrow `RecordBatch`es. * With the `async` feature: [`AsyncAvroFileReader`](https://docs.rs/arrow-avro/latest/arrow_avro/reader/async_reader/struct.AsyncAvroFileReader.html "struct arrow_avro::reader::async_reader::AsyncAvroFileReader") for async streaming reads. * With the `object_store` feature: [`AvroObjectReader`](https://docs.rs/arrow-avro/latest/arrow_avro/reader/async_reader/struct.AvroObjectReader.html "struct arrow_avro::reader::async_reader::AvroObjectReader") for reading from cloud storage. * [`writer`](https://docs.rs/arrow-avro/latest/arrow_avro/writer/index.html "mod arrow_avro::writer") : write Arrow `RecordBatch`es as Avro (OCF, SOE, Confluent, Apicurio). * [`schema`](https://docs.rs/arrow-avro/latest/arrow_avro/schema/index.html "mod arrow_avro::schema") : Avro schema parsing / fingerprints / registries. * [`compression`](https://docs.rs/arrow-avro/latest/arrow_avro/compression/index.html "mod arrow_avro::compression") : codecs used for **OCF block compression** (i.e., Deflate, Snappy, Zstandard, BZip2, and XZ). * [`codec`](https://docs.rs/arrow-avro/latest/arrow_avro/codec/index.html "mod arrow_avro::codec") : internal Avro-Arrow type conversion and row decode/encode plans. #### [§](https://docs.rs/arrow-avro/latest/arrow_avro/#features) Features **OCF compression (enabled by default)** * `deflate` — enable DEFLATE block compression (via `flate2`). * `snappy` — enable Snappy block compression with 4‑byte BE CRC32 (per Avro). * `zstd` — enable Zstandard block compression. * `bzip2` — enable BZip2 block compression. * `xz` — enable XZ/LZMA block compression. **Async & Object Store (opt‑in)** * `async` — enable async APIs for reading Avro (`AsyncAvroFileReader`, `AsyncFileReader` trait). * `object_store` — enable integration with the [`object_store`](https://docs.rs/object_store/latest/object_store/) crate for reading Avro from cloud storage (S3, GCS, Azure Blob, etc.) via `AvroObjectReader`. Implies `async`. **Schema fingerprints & helpers (opt‑in)** * `md5` — enable MD5 writer‑schema fingerprints. * `sha256` — enable SHA‑256 writer‑schema fingerprints. * `small_decimals` — support for compact Arrow representations of small Avro decimals (`Decimal32` and `Decimal64`). * `avro_custom_types` — interpret Avro fields annotated with Arrow‑specific logical types such as `arrow.duration-nanos`, `arrow.duration-micros`, `arrow.duration-millis`, or `arrow.duration-seconds` as Arrow `Duration(TimeUnit)`. * `canonical_extension_types` — enable support for Arrow [canonical extension types](https://arrow.apache.org/docs/format/CanonicalExtensions.html) from `arrow-schema` so `arrow-avro` can respect them during Avro↔Arrow mapping. **Notes** * OCF compression codecs apply only to **Object Container Files**; they do not affect Avro single object encodings. Modules[§](https://docs.rs/arrow-avro/latest/arrow_avro/#modules-1) -------------------------------------------------------------------- [codec](https://docs.rs/arrow-avro/latest/arrow_avro/codec/index.html "mod arrow_avro::codec") Data type conversions between Avro and Arrow types [compression](https://docs.rs/arrow-avro/latest/arrow_avro/compression/index.html "mod arrow_avro::compression") Compression codec implementations for Avro [errors](https://docs.rs/arrow-avro/latest/arrow_avro/errors/index.html "mod arrow_avro::errors") AvroError variants Common Avro errors and macros. [reader](https://docs.rs/arrow-avro/latest/arrow_avro/reader/index.html "mod arrow_avro::reader") Core functionality for reading Avro data into Arrow arrays [schema](https://docs.rs/arrow-avro/latest/arrow_avro/schema/index.html "mod arrow_avro::schema") Avro schema parsing and representation [writer](https://docs.rs/arrow-avro/latest/arrow_avro/writer/index.html "mod arrow_avro::writer") Core functionality for writing Arrow arrays as Avro data Traits[§](https://docs.rs/arrow-avro/latest/arrow_avro/#traits) ---------------------------------------------------------------- [AvroFieldExt](https://docs.rs/arrow-avro/latest/arrow_avro/trait.AvroFieldExt.html "trait arrow_avro::AvroFieldExt") Extension trait for AvroField to add Utf8View support --- # arrow::datatypes - Rust [Docs.rs](https://docs.rs/) * [arrow-58.1.0](https://docs.rs/arrow/latest/arrow/datatypes/index.html# "Rust implementation of Apache Arrow") * arrow 58.1.0 * [Permalink](https://docs.rs/arrow/58.1.0/arrow/datatypes/ "Get a link to this specific version") * [Docs.rs crate page](https://docs.rs/crate/arrow/latest "See arrow in docs.rs") * [Apache-2.0](https://spdx.org/licenses/Apache-2.0) * Links * [Homepage](https://github.com/apache/arrow-rs) * [Repository](https://github.com/apache/arrow-rs) * [crates.io](https://crates.io/crates/arrow "See arrow in crates.io") * [Source](https://docs.rs/crate/arrow/latest/source/ "Browse source of arrow-58.1.0") * Owners * [andygrove](https://crates.io/users/andygrove) * [kou](https://crates.io/users/kou) * [kszucs](https://crates.io/users/kszucs) * [xhochy](https://crates.io/users/xhochy) * [nevi-me](https://crates.io/users/nevi-me) * [alamb](https://crates.io/users/alamb) * [tustvold](https://crates.io/users/tustvold) * Dependencies * * [arrow-arith ^58.1.0 _normal_](https://docs.rs/arrow-arith/^58.1.0/) * [arrow-array ^58.1.0 _normal_](https://docs.rs/arrow-array/^58.1.0/) * [arrow-buffer ^58.1.0 _normal_](https://docs.rs/arrow-buffer/^58.1.0/) * [arrow-cast ^58.1.0 _normal_](https://docs.rs/arrow-cast/^58.1.0/) * [arrow-csv ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-csv/^58.1.0/) * [arrow-data ^58.1.0 _normal_](https://docs.rs/arrow-data/^58.1.0/) * [arrow-ipc ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-ipc/^58.1.0/) * [arrow-json ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-json/^58.1.0/) * [arrow-ord ^58.1.0 _normal_](https://docs.rs/arrow-ord/^58.1.0/) * [arrow-pyarrow ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-pyarrow/^58.1.0/) * [arrow-row ^58.1.0 _normal_](https://docs.rs/arrow-row/^58.1.0/) * [arrow-schema ^58.1.0 _normal_](https://docs.rs/arrow-schema/^58.1.0/) * [arrow-select ^58.1.0 _normal_](https://docs.rs/arrow-select/^58.1.0/) * [arrow-string ^58.1.0 _normal_](https://docs.rs/arrow-string/^58.1.0/) * [half ^2.1 _normal_ _optional_](https://docs.rs/half/^2.1/) * [rand ^0.9 _normal_ _optional_](https://docs.rs/rand/^0.9/) * [bytes ^1.9 _dev_](https://docs.rs/bytes/^1.9/) * [chrono ^0.4.40 _dev_](https://docs.rs/chrono/^0.4.40/) * [criterion ^0.8.0 _dev_](https://docs.rs/criterion/^0.8.0/) * [half ^2.1 _dev_](https://docs.rs/half/^2.1/) * [memmap2 ^0.9.3 _dev_](https://docs.rs/memmap2/^0.9.3/) * [rand ^0.9 _dev_](https://docs.rs/rand/^0.9/) * [serde ^1.0 _dev_](https://docs.rs/serde/^1.0/) * Versions * [**100%** of the crate is documented](https://docs.rs/crate/arrow/latest) * [Platform](https://docs.rs/arrow/latest/arrow/datatypes/index.html#) * [x86\_64-unknown-linux-gnu](https://docs.rs/crate/arrow/latest/target-redirect/arrow/datatypes/) * [Feature flags](https://docs.rs/crate/arrow/latest/features "Browse available feature flags of arrow-58.1.0") * [docs.rs](https://docs.rs/arrow/latest/arrow/datatypes/index.html#) * [About docs.rs](https://docs.rs/about) * [Badges](https://docs.rs/about/badges) * [Builds](https://docs.rs/about/builds) * [Metadata](https://docs.rs/about/metadata) * [Shorthand URLs](https://docs.rs/about/redirections) * [Download](https://docs.rs/about/download) * [Rustdoc JSON](https://docs.rs/about/rustdoc-json) * [Build queue](https://docs.rs/releases/queue) * [Privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#docs.rs) * [Rust](https://docs.rs/arrow/latest/arrow/datatypes/index.html#) * [Rust website](https://www.rust-lang.org/) * [The Book](https://doc.rust-lang.org/book/) * [Standard Library API Reference](https://doc.rust-lang.org/std/) * [Rust by Example](https://doc.rust-lang.org/rust-by-example/) * [The Cargo Guide](https://doc.rust-lang.org/cargo/guide/) * [Clippy Documentation](https://doc.rust-lang.org/nightly/clippy) [Skip to main content](https://docs.rs/arrow/latest/arrow/datatypes/index.html#main-content) [Module datatypes](https://docs.rs/arrow/latest/arrow/datatypes/index.html#) ----------------------------------------------------------------------------- [arrow](https://docs.rs/arrow/latest/arrow/index.html) Module datatypes Copy item path =============================== [Source](https://docs.rs/arrow/latest/src/arrow/datatypes/mod.rs.html#18-32) Expand description Defines the logical data types of Arrow arrays. The most important things you might be looking for are: * [`Schema`](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html "struct arrow::datatypes::Schema") to describe a schema. * [`Field`](https://docs.rs/arrow/latest/arrow/datatypes/struct.Field.html "struct arrow::datatypes::Field") to describe one field within a schema. * [`DataType`](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html "enum arrow::datatypes::DataType") to describe the type of a field. Structs[§](https://docs.rs/arrow/latest/arrow/datatypes/index.html#structs) ---------------------------------------------------------------------------- [BinaryViewType](https://docs.rs/arrow/latest/arrow/datatypes/struct.BinaryViewType.html "struct arrow::datatypes::BinaryViewType") [`BinaryViewType`](https://docs.rs/arrow/latest/arrow/datatypes/struct.BinaryViewType.html "struct arrow::datatypes::BinaryViewType") for string arrays [BooleanType](https://docs.rs/arrow/latest/arrow/datatypes/struct.BooleanType.html "struct arrow::datatypes::BooleanType") A boolean datatype [Date32Type](https://docs.rs/arrow/latest/arrow/datatypes/struct.Date32Type.html "struct arrow::datatypes::Date32Type") 32-bit date type: the elapsed time since UNIX epoch in days (32 bits). [Date64Type](https://docs.rs/arrow/latest/arrow/datatypes/struct.Date64Type.html "struct arrow::datatypes::Date64Type") 64-bit date type: the elapsed time since UNIX epoch in milliseconds (64 bits). Values must be divisible by `86_400_000`. See [`DataType::Date64`](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#variant.Date64 "variant arrow::datatypes::DataType::Date64") for more details. [Decimal32Type](https://docs.rs/arrow/latest/arrow/datatypes/struct.Decimal32Type.html "struct arrow::datatypes::Decimal32Type") The decimal type for a Decimal32Array [Decimal64Type](https://docs.rs/arrow/latest/arrow/datatypes/struct.Decimal64Type.html "struct arrow::datatypes::Decimal64Type") The decimal type for a Decimal64Array [Decimal128Type](https://docs.rs/arrow/latest/arrow/datatypes/struct.Decimal128Type.html "struct arrow::datatypes::Decimal128Type") The decimal type for a Decimal128Array [Decimal256Type](https://docs.rs/arrow/latest/arrow/datatypes/struct.Decimal256Type.html "struct arrow::datatypes::Decimal256Type") The decimal type for a Decimal256Array [DurationMicrosecondType](https://docs.rs/arrow/latest/arrow/datatypes/struct.DurationMicrosecondType.html "struct arrow::datatypes::DurationMicrosecondType") Elapsed time type: microseconds. [DurationMillisecondType](https://docs.rs/arrow/latest/arrow/datatypes/struct.DurationMillisecondType.html "struct arrow::datatypes::DurationMillisecondType") Elapsed time type: milliseconds. [DurationNanosecondType](https://docs.rs/arrow/latest/arrow/datatypes/struct.DurationNanosecondType.html "struct arrow::datatypes::DurationNanosecondType") Elapsed time type: nanoseconds. [DurationSecondType](https://docs.rs/arrow/latest/arrow/datatypes/struct.DurationSecondType.html "struct arrow::datatypes::DurationSecondType") Elapsed time type: seconds. [Field](https://docs.rs/arrow/latest/arrow/datatypes/struct.Field.html "struct arrow::datatypes::Field") Describes a single column in a [`Schema`](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html "struct arrow::datatypes::Schema") . [Fields](https://docs.rs/arrow/latest/arrow/datatypes/struct.Fields.html "struct arrow::datatypes::Fields") A cheaply cloneable, owned slice of [`FieldRef`](https://docs.rs/arrow/latest/arrow/datatypes/type.FieldRef.html "type arrow::datatypes::FieldRef") [Float16Type](https://docs.rs/arrow/latest/arrow/datatypes/struct.Float16Type.html "struct arrow::datatypes::Float16Type") 16-bit floating point number type. [Float32Type](https://docs.rs/arrow/latest/arrow/datatypes/struct.Float32Type.html "struct arrow::datatypes::Float32Type") 32-bit floating point number type. [Float64Type](https://docs.rs/arrow/latest/arrow/datatypes/struct.Float64Type.html "struct arrow::datatypes::Float64Type") 64-bit floating point number type. [GenericBinaryType](https://docs.rs/arrow/latest/arrow/datatypes/struct.GenericBinaryType.html "struct arrow::datatypes::GenericBinaryType") [`ByteArrayType`](https://docs.rs/arrow/latest/arrow/datatypes/trait.ByteArrayType.html "trait arrow::datatypes::ByteArrayType") for binary arrays [GenericStringType](https://docs.rs/arrow/latest/arrow/datatypes/struct.GenericStringType.html "struct arrow::datatypes::GenericStringType") [`ByteArrayType`](https://docs.rs/arrow/latest/arrow/datatypes/trait.ByteArrayType.html "trait arrow::datatypes::ByteArrayType") for string arrays [Int8Type](https://docs.rs/arrow/latest/arrow/datatypes/struct.Int8Type.html "struct arrow::datatypes::Int8Type") A signed 8-bit integer type. [Int16Type](https://docs.rs/arrow/latest/arrow/datatypes/struct.Int16Type.html "struct arrow::datatypes::Int16Type") Signed 16-bit integer type. [Int32Type](https://docs.rs/arrow/latest/arrow/datatypes/struct.Int32Type.html "struct arrow::datatypes::Int32Type") Signed 32-bit integer type. [Int64Type](https://docs.rs/arrow/latest/arrow/datatypes/struct.Int64Type.html "struct arrow::datatypes::Int64Type") Signed 64-bit integer type. [IntervalDayTime](https://docs.rs/arrow/latest/arrow/datatypes/struct.IntervalDayTime.html "struct arrow::datatypes::IntervalDayTime") Value of an IntervalDayTime array [IntervalDayTimeType](https://docs.rs/arrow/latest/arrow/datatypes/struct.IntervalDayTimeType.html "struct arrow::datatypes::IntervalDayTimeType") “Calendar” interval type: days and milliseconds. See [`IntervalDayTime`](https://docs.rs/arrow/latest/arrow/datatypes/struct.IntervalDayTime.html "struct arrow::datatypes::IntervalDayTime") for more details. [IntervalMonthDayNano](https://docs.rs/arrow/latest/arrow/datatypes/struct.IntervalMonthDayNano.html "struct arrow::datatypes::IntervalMonthDayNano") Value of an IntervalMonthDayNano array [IntervalMonthDayNanoType](https://docs.rs/arrow/latest/arrow/datatypes/struct.IntervalMonthDayNanoType.html "struct arrow::datatypes::IntervalMonthDayNanoType") “Calendar” interval type: months, days, and nanoseconds. See [`IntervalMonthDayNano`](https://docs.rs/arrow/latest/arrow/datatypes/struct.IntervalMonthDayNano.html "struct arrow::datatypes::IntervalMonthDayNano") for more details. [IntervalYearMonthType](https://docs.rs/arrow/latest/arrow/datatypes/struct.IntervalYearMonthType.html "struct arrow::datatypes::IntervalYearMonthType") 32-bit “calendar” interval type: the number of whole months. [Schema](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html "struct arrow::datatypes::Schema") Describes the meta-data of an ordered sequence of relative types. [SchemaBuilder](https://docs.rs/arrow/latest/arrow/datatypes/struct.SchemaBuilder.html "struct arrow::datatypes::SchemaBuilder") A builder to facilitate building a [`Schema`](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html "struct arrow::datatypes::Schema") from iteratively from [`FieldRef`](https://docs.rs/arrow/latest/arrow/datatypes/type.FieldRef.html "type arrow::datatypes::FieldRef") [StringViewType](https://docs.rs/arrow/latest/arrow/datatypes/struct.StringViewType.html "struct arrow::datatypes::StringViewType") [`ByteViewType`](https://docs.rs/arrow/latest/arrow/datatypes/trait.ByteViewType.html "trait arrow::datatypes::ByteViewType") for string arrays [Time32MillisecondType](https://docs.rs/arrow/latest/arrow/datatypes/struct.Time32MillisecondType.html "struct arrow::datatypes::Time32MillisecondType") 32-bit time type: the elapsed time since midnight in milliseconds. [Time32SecondType](https://docs.rs/arrow/latest/arrow/datatypes/struct.Time32SecondType.html "struct arrow::datatypes::Time32SecondType") 32-bit time type: the elapsed time since midnight in seconds. [Time64MicrosecondType](https://docs.rs/arrow/latest/arrow/datatypes/struct.Time64MicrosecondType.html "struct arrow::datatypes::Time64MicrosecondType") 64-bit time type: the elapsed time since midnight in microseconds. [Time64NanosecondType](https://docs.rs/arrow/latest/arrow/datatypes/struct.Time64NanosecondType.html "struct arrow::datatypes::Time64NanosecondType") 64-bit time type: the elapsed time since midnight in nanoseconds. [TimestampMicrosecondType](https://docs.rs/arrow/latest/arrow/datatypes/struct.TimestampMicrosecondType.html "struct arrow::datatypes::TimestampMicrosecondType") Timestamp microsecond type with an optional timezone. [TimestampMillisecondType](https://docs.rs/arrow/latest/arrow/datatypes/struct.TimestampMillisecondType.html "struct arrow::datatypes::TimestampMillisecondType") Timestamp millisecond type with an optional timezone. [TimestampNanosecondType](https://docs.rs/arrow/latest/arrow/datatypes/struct.TimestampNanosecondType.html "struct arrow::datatypes::TimestampNanosecondType") Timestamp nanosecond type with an optional timezone. [TimestampSecondType](https://docs.rs/arrow/latest/arrow/datatypes/struct.TimestampSecondType.html "struct arrow::datatypes::TimestampSecondType") Timestamp second type with an optional timezone. [UInt8Type](https://docs.rs/arrow/latest/arrow/datatypes/struct.UInt8Type.html "struct arrow::datatypes::UInt8Type") Unsigned 8-bit integer type. [UInt16Type](https://docs.rs/arrow/latest/arrow/datatypes/struct.UInt16Type.html "struct arrow::datatypes::UInt16Type") Unsigned 16-bit integer type. [UInt32Type](https://docs.rs/arrow/latest/arrow/datatypes/struct.UInt32Type.html "struct arrow::datatypes::UInt32Type") Unsigned 32-bit integer type. [UInt64Type](https://docs.rs/arrow/latest/arrow/datatypes/struct.UInt64Type.html "struct arrow::datatypes::UInt64Type") Unsigned 64-bit integer type. [UnionFields](https://docs.rs/arrow/latest/arrow/datatypes/struct.UnionFields.html "struct arrow::datatypes::UnionFields") A cheaply cloneable, owned collection of [`FieldRef`](https://docs.rs/arrow/latest/arrow/datatypes/type.FieldRef.html "type arrow::datatypes::FieldRef") and their corresponding type ids [i256](https://docs.rs/arrow/latest/arrow/datatypes/struct.i256.html "struct arrow::datatypes::i256") A signed 256-bit integer Enums[§](https://docs.rs/arrow/latest/arrow/datatypes/index.html#enums) ------------------------------------------------------------------------ [DataType](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html "enum arrow::datatypes::DataType") Datatypes supported by this implementation of Apache Arrow. [IntervalUnit](https://docs.rs/arrow/latest/arrow/datatypes/enum.IntervalUnit.html "enum arrow::datatypes::IntervalUnit") YEAR\_MONTH, DAY\_TIME, MONTH\_DAY\_NANO interval in SQL style. [TimeUnit](https://docs.rs/arrow/latest/arrow/datatypes/enum.TimeUnit.html "enum arrow::datatypes::TimeUnit") An absolute length of time in seconds, milliseconds, microseconds or nanoseconds. [UnionMode](https://docs.rs/arrow/latest/arrow/datatypes/enum.UnionMode.html "enum arrow::datatypes::UnionMode") Sparse or Dense union layouts Constants[§](https://docs.rs/arrow/latest/arrow/datatypes/index.html#constants) -------------------------------------------------------------------------------- [DECIMAL32\_DEFAULT\_SCALE](https://docs.rs/arrow/latest/arrow/datatypes/constant.DECIMAL32_DEFAULT_SCALE.html "constant arrow::datatypes::DECIMAL32_DEFAULT_SCALE") The default scale for [DataType::Decimal32](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#variant.Decimal32 "variant arrow::datatypes::DataType::Decimal32") values [DECIMAL32\_MAX\_PRECISION](https://docs.rs/arrow/latest/arrow/datatypes/constant.DECIMAL32_MAX_PRECISION.html "constant arrow::datatypes::DECIMAL32_MAX_PRECISION") The maximum precision for [DataType::Decimal32](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#variant.Decimal32 "variant arrow::datatypes::DataType::Decimal32") values [DECIMAL32\_MAX\_SCALE](https://docs.rs/arrow/latest/arrow/datatypes/constant.DECIMAL32_MAX_SCALE.html "constant arrow::datatypes::DECIMAL32_MAX_SCALE") The maximum scale for [DataType::Decimal32](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#variant.Decimal32 "variant arrow::datatypes::DataType::Decimal32") values [DECIMAL64\_DEFAULT\_SCALE](https://docs.rs/arrow/latest/arrow/datatypes/constant.DECIMAL64_DEFAULT_SCALE.html "constant arrow::datatypes::DECIMAL64_DEFAULT_SCALE") The default scale for [DataType::Decimal64](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#variant.Decimal64 "variant arrow::datatypes::DataType::Decimal64") values [DECIMAL64\_MAX\_PRECISION](https://docs.rs/arrow/latest/arrow/datatypes/constant.DECIMAL64_MAX_PRECISION.html "constant arrow::datatypes::DECIMAL64_MAX_PRECISION") The maximum precision for [DataType::Decimal64](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#variant.Decimal64 "variant arrow::datatypes::DataType::Decimal64") values [DECIMAL64\_MAX\_SCALE](https://docs.rs/arrow/latest/arrow/datatypes/constant.DECIMAL64_MAX_SCALE.html "constant arrow::datatypes::DECIMAL64_MAX_SCALE") The maximum scale for [DataType::Decimal64](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#variant.Decimal64 "variant arrow::datatypes::DataType::Decimal64") values [DECIMAL128\_MAX\_PRECISION](https://docs.rs/arrow/latest/arrow/datatypes/constant.DECIMAL128_MAX_PRECISION.html "constant arrow::datatypes::DECIMAL128_MAX_PRECISION") The maximum precision for [DataType::Decimal128](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#variant.Decimal128 "variant arrow::datatypes::DataType::Decimal128") values [DECIMAL128\_MAX\_SCALE](https://docs.rs/arrow/latest/arrow/datatypes/constant.DECIMAL128_MAX_SCALE.html "constant arrow::datatypes::DECIMAL128_MAX_SCALE") The maximum scale for [DataType::Decimal128](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#variant.Decimal128 "variant arrow::datatypes::DataType::Decimal128") values [DECIMAL256\_MAX\_PRECISION](https://docs.rs/arrow/latest/arrow/datatypes/constant.DECIMAL256_MAX_PRECISION.html "constant arrow::datatypes::DECIMAL256_MAX_PRECISION") The maximum precision for [DataType::Decimal256](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#variant.Decimal256 "variant arrow::datatypes::DataType::Decimal256") values [DECIMAL256\_MAX\_SCALE](https://docs.rs/arrow/latest/arrow/datatypes/constant.DECIMAL256_MAX_SCALE.html "constant arrow::datatypes::DECIMAL256_MAX_SCALE") The maximum scale for [DataType::Decimal256](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#variant.Decimal256 "variant arrow::datatypes::DataType::Decimal256") values [DECIMAL\_DEFAULT\_SCALE](https://docs.rs/arrow/latest/arrow/datatypes/constant.DECIMAL_DEFAULT_SCALE.html "constant arrow::datatypes::DECIMAL_DEFAULT_SCALE") The default scale for [DataType::Decimal128](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#variant.Decimal128 "variant arrow::datatypes::DataType::Decimal128") and [DataType::Decimal256](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#variant.Decimal256 "variant arrow::datatypes::DataType::Decimal256") values [MAX\_DECIMAL32\_FOR\_EACH\_PRECISION](https://docs.rs/arrow/latest/arrow/datatypes/constant.MAX_DECIMAL32_FOR_EACH_PRECISION.html "constant arrow::datatypes::MAX_DECIMAL32_FOR_EACH_PRECISION") `MAX_DECIMAL32_FOR_EACH_PRECISION[p]` holds the maximum `i32` value that can be stored in [`Decimal32`](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#variant.Decimal32 "variant arrow::datatypes::DataType::Decimal32") value of precision `p`. [MAX\_DECIMAL64\_FOR\_EACH\_PRECISION](https://docs.rs/arrow/latest/arrow/datatypes/constant.MAX_DECIMAL64_FOR_EACH_PRECISION.html "constant arrow::datatypes::MAX_DECIMAL64_FOR_EACH_PRECISION") `MAX_DECIMAL64_FOR_EACH_PRECISION[p]` holds the maximum `i64` value that can be stored in [`Decimal64`](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#variant.Decimal64 "variant arrow::datatypes::DataType::Decimal64") value of precision `p`. [MAX\_DECIMAL128\_FOR\_EACH\_PRECISION](https://docs.rs/arrow/latest/arrow/datatypes/constant.MAX_DECIMAL128_FOR_EACH_PRECISION.html "constant arrow::datatypes::MAX_DECIMAL128_FOR_EACH_PRECISION") `MAX_DECIMAL128_FOR_EACH_PRECISION[p]` holds the maximum `i128` value that can be stored in [`Decimal128`](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#variant.Decimal128 "variant arrow::datatypes::DataType::Decimal128") value of precision `p`. [MAX\_DECIMAL256\_FOR\_EACH\_PRECISION](https://docs.rs/arrow/latest/arrow/datatypes/constant.MAX_DECIMAL256_FOR_EACH_PRECISION.html "constant arrow::datatypes::MAX_DECIMAL256_FOR_EACH_PRECISION") `MAX_DECIMAL256_FOR_EACH_PRECISION[p]` holds the maximum [`i256`](https://docs.rs/arrow/latest/arrow/datatypes/struct.i256.html "struct arrow::datatypes::i256") value that can be stored in a [`Decimal256`](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#variant.Decimal256 "variant arrow::datatypes::DataType::Decimal256") value of precision `p`. [MAX\_DECIMAL\_FOR\_EACH\_PRECISION](https://docs.rs/arrow/latest/arrow/datatypes/constant.MAX_DECIMAL_FOR_EACH_PRECISION.html "constant arrow::datatypes::MAX_DECIMAL_FOR_EACH_PRECISION") Deprecated `MAX_DECIMAL_FOR_EACH_PRECISION[p-1]` holds the maximum `i128` value that can be stored in a [`Decimal128`](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#variant.Decimal128 "variant arrow::datatypes::DataType::Decimal128") value of precision `p` [MIN\_DECIMAL32\_FOR\_EACH\_PRECISION](https://docs.rs/arrow/latest/arrow/datatypes/constant.MIN_DECIMAL32_FOR_EACH_PRECISION.html "constant arrow::datatypes::MIN_DECIMAL32_FOR_EACH_PRECISION") `MIN_DECIMAL32_FOR_EACH_PRECISION[p]` holds the minimum `ialue that can be stored in a [`Decimal32`] value of precision` p\`. [MIN\_DECIMAL64\_FOR\_EACH\_PRECISION](https://docs.rs/arrow/latest/arrow/datatypes/constant.MIN_DECIMAL64_FOR_EACH_PRECISION.html "constant arrow::datatypes::MIN_DECIMAL64_FOR_EACH_PRECISION") `MIN_DECIMAL64_FOR_EACH_PRECISION[p]` holds the minimum `i64` value that can be stored in a [`Decimal64`](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#variant.Decimal64 "variant arrow::datatypes::DataType::Decimal64") value of precision `p`. [MIN\_DECIMAL128\_FOR\_EACH\_PRECISION](https://docs.rs/arrow/latest/arrow/datatypes/constant.MIN_DECIMAL128_FOR_EACH_PRECISION.html "constant arrow::datatypes::MIN_DECIMAL128_FOR_EACH_PRECISION") `MIN_DECIMAL_FOR_EACH_PRECISION[p]` holds the minimum `i128` value that can be stored in a [`Decimal128`](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#variant.Decimal128 "variant arrow::datatypes::DataType::Decimal128") value of precision `p`. [MIN\_DECIMAL256\_FOR\_EACH\_PRECISION](https://docs.rs/arrow/latest/arrow/datatypes/constant.MIN_DECIMAL256_FOR_EACH_PRECISION.html "constant arrow::datatypes::MIN_DECIMAL256_FOR_EACH_PRECISION") `MIN_DECIMAL256_FOR_EACH_PRECISION[p]` holds the minimum [`i256`](https://docs.rs/arrow/latest/arrow/datatypes/struct.i256.html "struct arrow::datatypes::i256") value that can be stored in a [`Decimal256`](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#variant.Decimal256 "variant arrow::datatypes::DataType::Decimal256") value of precision `p`. [MIN\_DECIMAL\_FOR\_EACH\_PRECISION](https://docs.rs/arrow/latest/arrow/datatypes/constant.MIN_DECIMAL_FOR_EACH_PRECISION.html "constant arrow::datatypes::MIN_DECIMAL_FOR_EACH_PRECISION") Deprecated `MIN_DECIMAL_FOR_EACH_PRECISION[p-1]` holds the minimum `i128` value that can be stored in a [`Decimal128`](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#variant.Decimal128 "variant arrow::datatypes::DataType::Decimal128") value of precision `p` Traits[§](https://docs.rs/arrow/latest/arrow/datatypes/index.html#traits) -------------------------------------------------------------------------- [ArrowDictionaryKeyType](https://docs.rs/arrow/latest/arrow/datatypes/trait.ArrowDictionaryKeyType.html "trait arrow::datatypes::ArrowDictionaryKeyType") A subtype of primitive type that represents legal dictionary keys. See [https://arrow.apache.org/docs/format/Columnar.html](https://arrow.apache.org/docs/format/Columnar.html) [ArrowNativeType](https://docs.rs/arrow/latest/arrow/datatypes/trait.ArrowNativeType.html "trait arrow::datatypes::ArrowNativeType") Trait expressing a Rust type that has the same in-memory representation as Arrow. [ArrowNativeTypeOp](https://docs.rs/arrow/latest/arrow/datatypes/trait.ArrowNativeTypeOp.html "trait arrow::datatypes::ArrowNativeTypeOp") Trait for [`ArrowNativeType`](https://docs.rs/arrow/latest/arrow/datatypes/trait.ArrowNativeType.html "trait arrow::datatypes::ArrowNativeType") that adds checked and unchecked arithmetic operations, and totally ordered comparison operations [ArrowNumericType](https://docs.rs/arrow/latest/arrow/datatypes/trait.ArrowNumericType.html "trait arrow::datatypes::ArrowNumericType") A subtype of primitive type that represents numeric values. [ArrowPrimitiveType](https://docs.rs/arrow/latest/arrow/datatypes/trait.ArrowPrimitiveType.html "trait arrow::datatypes::ArrowPrimitiveType") Trait for [primitive values](https://arrow.apache.org/docs/format/Columnar.html#fixed-size-primitive-layout) . [ArrowTemporalType](https://docs.rs/arrow/latest/arrow/datatypes/trait.ArrowTemporalType.html "trait arrow::datatypes::ArrowTemporalType") A subtype of primitive type that represents temporal values. [ArrowTimestampType](https://docs.rs/arrow/latest/arrow/datatypes/trait.ArrowTimestampType.html "trait arrow::datatypes::ArrowTimestampType") A timestamp type allows us to create array builders that take a timestamp. [ByteArrayType](https://docs.rs/arrow/latest/arrow/datatypes/trait.ByteArrayType.html "trait arrow::datatypes::ByteArrayType") A trait over the variable-size byte array types [ByteViewType](https://docs.rs/arrow/latest/arrow/datatypes/trait.ByteViewType.html "trait arrow::datatypes::ByteViewType") A trait over the variable length bytes view array types [DecimalType](https://docs.rs/arrow/latest/arrow/datatypes/trait.DecimalType.html "trait arrow::datatypes::DecimalType") A trait over the decimal types, used by [`PrimitiveArray`](https://docs.rs/arrow/latest/arrow/array/struct.PrimitiveArray.html "struct arrow::array::PrimitiveArray") to provide a generic implementation across the various decimal types [RunEndIndexType](https://docs.rs/arrow/latest/arrow/datatypes/trait.RunEndIndexType.html "trait arrow::datatypes::RunEndIndexType") A subtype of primitive type that is used as run-ends index in `RunArray`. See [https://arrow.apache.org/docs/format/Columnar.html](https://arrow.apache.org/docs/format/Columnar.html) [ToByteSlice](https://docs.rs/arrow/latest/arrow/datatypes/trait.ToByteSlice.html "trait arrow::datatypes::ToByteSlice") Allows conversion from supported Arrow types to a byte slice. Functions[§](https://docs.rs/arrow/latest/arrow/datatypes/index.html#functions) -------------------------------------------------------------------------------- [format\_decimal\_str](https://docs.rs/arrow/latest/arrow/datatypes/fn.format_decimal_str.html "fn arrow::datatypes::format_decimal_str") Formats a decimal string given the precision and scale. [is\_validate\_decimal32\_precision](https://docs.rs/arrow/latest/arrow/datatypes/fn.is_validate_decimal32_precision.html "fn arrow::datatypes::is_validate_decimal32_precision") Returns true if the specified `i32` value can be properly interpreted as a [`Decimal32`](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#variant.Decimal32 "variant arrow::datatypes::DataType::Decimal32") number with precision `precision` [is\_validate\_decimal64\_precision](https://docs.rs/arrow/latest/arrow/datatypes/fn.is_validate_decimal64_precision.html "fn arrow::datatypes::is_validate_decimal64_precision") Returns true if the specified `i64` value can be properly interpreted as a [`Decimal64`](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#variant.Decimal64 "variant arrow::datatypes::DataType::Decimal64") number with precision `precision` [is\_validate\_decimal256\_precision](https://docs.rs/arrow/latest/arrow/datatypes/fn.is_validate_decimal256_precision.html "fn arrow::datatypes::is_validate_decimal256_precision") Return true if the specified `i256` value can be properly interpreted as a [`Decimal256`](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#variant.Decimal256 "variant arrow::datatypes::DataType::Decimal256") number with precision `precision` [is\_validate\_decimal\_precision](https://docs.rs/arrow/latest/arrow/datatypes/fn.is_validate_decimal_precision.html "fn arrow::datatypes::is_validate_decimal_precision") Returns true if the specified `i128` value can be properly interpreted as a [`Decimal128`](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#variant.Decimal128 "variant arrow::datatypes::DataType::Decimal128") number with precision `precision` [validate\_decimal32\_precision](https://docs.rs/arrow/latest/arrow/datatypes/fn.validate_decimal32_precision.html "fn arrow::datatypes::validate_decimal32_precision") Validates that the specified `i32` value can be properly interpreted as a [`Decimal32`](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#variant.Decimal32 "variant arrow::datatypes::DataType::Decimal32") number with precision `precision` [validate\_decimal64\_precision](https://docs.rs/arrow/latest/arrow/datatypes/fn.validate_decimal64_precision.html "fn arrow::datatypes::validate_decimal64_precision") Validates that the specified `i64` value can be properly interpreted as a [`Decimal64`](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#variant.Decimal64 "variant arrow::datatypes::DataType::Decimal64") number with precision `precision` [validate\_decimal256\_precision](https://docs.rs/arrow/latest/arrow/datatypes/fn.validate_decimal256_precision.html "fn arrow::datatypes::validate_decimal256_precision") Validates that the specified `i256` of value can be properly interpreted as a [`Decimal256`](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#variant.Decimal256 "variant arrow::datatypes::DataType::Decimal256") number with precision `precision` [validate\_decimal\_precision](https://docs.rs/arrow/latest/arrow/datatypes/fn.validate_decimal_precision.html "fn arrow::datatypes::validate_decimal_precision") Validates that the specified `i128` value can be properly interpreted as a [`Decimal128`](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html#variant.Decimal128 "variant arrow::datatypes::DataType::Decimal128") number with precision `precision` [validate\_decimal\_precision\_and\_scale](https://docs.rs/arrow/latest/arrow/datatypes/fn.validate_decimal_precision_and_scale.html "fn arrow::datatypes::validate_decimal_precision_and_scale") Validate that `precision` and `scale` are valid for `T` Type Aliases[§](https://docs.rs/arrow/latest/arrow/datatypes/index.html#types) ------------------------------------------------------------------------------- [BinaryType](https://docs.rs/arrow/latest/arrow/datatypes/type.BinaryType.html "type arrow::datatypes::BinaryType") An arrow binary array with i32 offsets [FieldRef](https://docs.rs/arrow/latest/arrow/datatypes/type.FieldRef.html "type arrow::datatypes::FieldRef") A reference counted [`Field`](https://docs.rs/arrow/latest/arrow/datatypes/struct.Field.html "struct arrow::datatypes::Field") [LargeBinaryType](https://docs.rs/arrow/latest/arrow/datatypes/type.LargeBinaryType.html "type arrow::datatypes::LargeBinaryType") An arrow binary array with i64 offsets [LargeUtf8Type](https://docs.rs/arrow/latest/arrow/datatypes/type.LargeUtf8Type.html "type arrow::datatypes::LargeUtf8Type") An arrow utf8 array with i64 offsets [SchemaRef](https://docs.rs/arrow/latest/arrow/datatypes/type.SchemaRef.html "type arrow::datatypes::SchemaRef") A reference-counted reference to a [`Schema`](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html "struct arrow::datatypes::Schema") . [Utf8Type](https://docs.rs/arrow/latest/arrow/datatypes/type.Utf8Type.html "type arrow::datatypes::Utf8Type") An arrow utf8 array with i32 offsets --- # parquet 58.1.0 - Docs.rs [Docs.rs](https://docs.rs/) * [parquet-58.1.0](https://docs.rs/crate/parquet/latest "Apache Parquet implementation in Rust") * [docs.rs](https://docs.rs/crate/parquet/latest#) * [About docs.rs](https://docs.rs/about) * [Badges](https://docs.rs/about/badges) * [Builds](https://docs.rs/about/builds) * [Metadata](https://docs.rs/about/metadata) * [Shorthand URLs](https://docs.rs/about/redirections) * [Download](https://docs.rs/about/download) * [Rustdoc JSON](https://docs.rs/about/rustdoc-json) * [Build queue](https://docs.rs/releases/queue) * [Privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#docs.rs) * [Rust](https://docs.rs/crate/parquet/latest#) * [Rust website](https://www.rust-lang.org/) * [The Book](https://doc.rust-lang.org/book/) * [Standard Library API Reference](https://doc.rust-lang.org/std/) * [Rust by Example](https://doc.rust-lang.org/rust-by-example/) * [The Cargo Guide](https://doc.rust-lang.org/cargo/guide/) * [Clippy Documentation](https://doc.rust-lang.org/nightly/clippy) parquet 58.1.0 ============== Apache Parquet implementation in Rust * [Crate](https://docs.rs/crate/parquet/latest) * [Source](https://docs.rs/crate/parquet/latest/source/) * [Builds](https://docs.rs/crate/parquet/latest/builds) * [Feature flags](https://docs.rs/crate/parquet/latest/features) * Size * Source code size: 4.83 MB This is the summed size of all the files inside the crates.io package for this release. * Ø build duration * all releases: 1m 38s Average build duration of **successful** builds in releases after 2024-10-23. * Links * [Homepage](https://github.com/apache/arrow-rs) * [apache/arrow-rs \ 3416 1135 543](https://github.com/apache/arrow-rs) * [crates.io](https://crates.io/crates/parquet "See parquet on crates.io") * Dependencies * * [arrow-array ^58.1.0 _normal_ _optional_](https://docs.rs/crate/arrow-array/^58.1.0) * [arrow-buffer ^58.1.0 _normal_ _optional_](https://docs.rs/crate/arrow-buffer/^58.1.0) * [arrow-csv ^58.1.0 _normal_ _optional_](https://docs.rs/crate/arrow-csv/^58.1.0) * [arrow-data ^58.1.0 _normal_ _optional_](https://docs.rs/crate/arrow-data/^58.1.0) * [arrow-ipc ^58.1.0 _normal_ _optional_](https://docs.rs/crate/arrow-ipc/^58.1.0) * [arrow-schema ^58.1.0 _normal_ _optional_](https://docs.rs/crate/arrow-schema/^58.1.0) * [arrow-select ^58.1.0 _normal_ _optional_](https://docs.rs/crate/arrow-select/^58.1.0) * [base64 ^0.22 _normal_ _optional_](https://docs.rs/crate/base64/^0.22) * [brotli ^8.0 _normal_ _optional_](https://docs.rs/crate/brotli/^8.0) * [bytes ^1.1 _normal_](https://docs.rs/crate/bytes/^1.1) * [chrono ^0.4.40 _normal_](https://docs.rs/crate/chrono/^0.4.40) * [clap ^4.1 _normal_ _optional_](https://docs.rs/crate/clap/^4.1) * [crc32fast ^1.4.2 _normal_ _optional_](https://docs.rs/crate/crc32fast/^1.4.2) * [flate2 ^1.1 _normal_ _optional_](https://docs.rs/crate/flate2/^1.1) * [futures ^0.3 _normal_ _optional_](https://docs.rs/crate/futures/^0.3) * [half ^2.1 _normal_](https://docs.rs/crate/half/^2.1) * [hashbrown ^0.16 _normal_](https://docs.rs/crate/hashbrown/^0.16) * [lz4\_flex ^0.13 _normal_ _optional_](https://docs.rs/crate/lz4_flex/^0.13) * [num-bigint ^0.4 _normal_](https://docs.rs/crate/num-bigint/^0.4) * [num-integer ^0.1.46 _normal_](https://docs.rs/crate/num-integer/^0.1.46) * [num-traits ^0.2.19 _normal_](https://docs.rs/crate/num-traits/^0.2.19) * [object\_store ^0.13.1 _normal_ _optional_](https://docs.rs/crate/object_store/^0.13.1) * [parquet-geospatial ^58.1.0 _normal_ _optional_](https://docs.rs/crate/parquet-geospatial/^58.1.0) * [parquet-variant ^58.1.0 _normal_ _optional_](https://docs.rs/crate/parquet-variant/^58.1.0) * [parquet-variant-compute ^58.1.0 _normal_ _optional_](https://docs.rs/crate/parquet-variant-compute/^58.1.0) * [parquet-variant-json ^58.1.0 _normal_ _optional_](https://docs.rs/crate/parquet-variant-json/^58.1.0) * [paste ^1.0 _normal_](https://docs.rs/crate/paste/^1.0) * [ring ^0.17 _normal_ _optional_](https://docs.rs/crate/ring/^0.17) * [seq-macro ^0.3 _normal_](https://docs.rs/crate/seq-macro/^0.3) * [serde ^1.0 _normal_ _optional_](https://docs.rs/crate/serde/^1.0) * [serde\_json ^1.0 _normal_ _optional_](https://docs.rs/crate/serde_json/^1.0) * [simdutf8 ^0.1.5 _normal_ _optional_](https://docs.rs/crate/simdutf8/^0.1.5) * [snap ^1.0 _normal_ _optional_](https://docs.rs/crate/snap/^1.0) * [thrift ^0.17 _normal_](https://docs.rs/crate/thrift/^0.17) * [tokio ^1.0 _normal_ _optional_](https://docs.rs/crate/tokio/^1.0) * [twox-hash ^2.0 _normal_](https://docs.rs/crate/twox-hash/^2.0) * [zstd ^0.13 _normal_ _optional_](https://docs.rs/crate/zstd/^0.13) * [arrow ^58.1.0 _dev_](https://docs.rs/crate/arrow/^58.1.0) * [arrow-cast ^58.1.0 _dev_](https://docs.rs/crate/arrow-cast/^58.1.0) * [base64 ^0.22 _dev_](https://docs.rs/crate/base64/^0.22) * [brotli ^8.0 _dev_](https://docs.rs/crate/brotli/^8.0) * [criterion ^0.8.0 _dev_](https://docs.rs/crate/criterion/^0.8.0) * [flate2 ^1.0 _dev_](https://docs.rs/crate/flate2/^1.0) * [insta ^1.46.3 _dev_](https://docs.rs/crate/insta/^1.46.3) * [lz4\_flex ^0.13 _dev_](https://docs.rs/crate/lz4_flex/^0.13) * [object\_store ^0.13.1 _dev_](https://docs.rs/crate/object_store/^0.13.1) * [rand ^0.9 _dev_](https://docs.rs/crate/rand/^0.9) * [serde\_json ^1.0 _dev_](https://docs.rs/crate/serde_json/^1.0) * [snap ^1.0 _dev_](https://docs.rs/crate/snap/^1.0) * [sysinfo ^0.38.1 _dev_](https://docs.rs/crate/sysinfo/^0.38.1) * [tempfile ^3.0 _dev_](https://docs.rs/crate/tempfile/^3.0) * [tokio ^1.0 _dev_](https://docs.rs/crate/tokio/^1.0) * [zstd ^0.13 _dev_](https://docs.rs/crate/zstd/^0.13) * [ahash ^0.8 _normal_](https://docs.rs/crate/ahash/^0.8) * [ahash ^0.8 _normal_](https://docs.rs/crate/ahash/^0.8) * [ring ^0.17 _normal_ _optional_](https://docs.rs/crate/ring/^0.17) * Versions * * [**58.1.0** (2026-03-24)](https://docs.rs/crate/parquet/58.1.0 "docs.rs failed to build parquet-58.1.0") * [**58.0.0** (2026-02-23)](https://docs.rs/crate/parquet/58.0.0) * [**57.3.0** (2026-02-06)](https://docs.rs/crate/parquet/57.3.0) * [**57.2.0** (2026-01-11)](https://docs.rs/crate/parquet/57.2.0) * [**57.1.0** (2025-11-24)](https://docs.rs/crate/parquet/57.1.0) * [**57.0.0** (2025-10-23)](https://docs.rs/crate/parquet/57.0.0) * [**56.2.0** (2025-09-23)](https://docs.rs/crate/parquet/56.2.0) * [**56.1.0** (2025-08-25)](https://docs.rs/crate/parquet/56.1.0) * [**56.0.0** (2025-08-01)](https://docs.rs/crate/parquet/56.0.0) * [**55.2.0** (2025-06-26)](https://docs.rs/crate/parquet/55.2.0) * [**55.1.0** (2025-05-13)](https://docs.rs/crate/parquet/55.1.0) * [**55.0.0** (2025-04-11)](https://docs.rs/crate/parquet/55.0.0) * [**54.3.1** (2025-03-30)](https://docs.rs/crate/parquet/54.3.1) * [**54.3.0** (2025-03-21)](https://docs.rs/crate/parquet/54.3.0) * [**54.2.1** (2025-02-27)](https://docs.rs/crate/parquet/54.2.1) * [**54.2.0** (2025-02-16)](https://docs.rs/crate/parquet/54.2.0) * [**54.1.0** (2025-02-02)](https://docs.rs/crate/parquet/54.1.0) * [**54.0.0** (2024-12-23)](https://docs.rs/crate/parquet/54.0.0) * [**53.4.1** (2025-03-07)](https://docs.rs/crate/parquet/53.4.1) * [**53.4.0** (2025-01-18)](https://docs.rs/crate/parquet/53.4.0) * [**53.3.0** (2024-11-20)](https://docs.rs/crate/parquet/53.3.0) * [**53.2.0** (2024-10-24)](https://docs.rs/crate/parquet/53.2.0) * [**53.1.0** (2024-10-06)](https://docs.rs/crate/parquet/53.1.0) * [**53.0.0** (2024-09-03)](https://docs.rs/crate/parquet/53.0.0) * [**52.2.0** (2024-07-28)](https://docs.rs/crate/parquet/52.2.0) * [**52.1.0** (2024-07-06)](https://docs.rs/crate/parquet/52.1.0) * [**52.0.0** (2024-06-06)](https://docs.rs/crate/parquet/52.0.0) * [**51.0.0** (2024-03-18)](https://docs.rs/crate/parquet/51.0.0) * [**50.0.0** (2024-01-12)](https://docs.rs/crate/parquet/50.0.0) * [**49.0.0** (2023-11-13)](https://docs.rs/crate/parquet/49.0.0) * [**48.0.1** (2023-11-13)](https://docs.rs/crate/parquet/48.0.1) * [**48.0.0** (2023-10-23)](https://docs.rs/crate/parquet/48.0.0) * [**47.0.0** (2023-09-22)](https://docs.rs/crate/parquet/47.0.0) * [**46.0.0** (2023-08-24)](https://docs.rs/crate/parquet/46.0.0) * [**45.0.0** (2023-08-02)](https://docs.rs/crate/parquet/45.0.0) * [**44.0.0** (2023-07-18)](https://docs.rs/crate/parquet/44.0.0) * [**43.0.0** (2023-07-03)](https://docs.rs/crate/parquet/43.0.0) * [**42.0.0** (2023-06-20)](https://docs.rs/crate/parquet/42.0.0) * [**41.0.0** (2023-06-06)](https://docs.rs/crate/parquet/41.0.0) * [**40.0.0** (2023-05-22)](https://docs.rs/crate/parquet/40.0.0) * [**39.0.0** (2023-05-09)](https://docs.rs/crate/parquet/39.0.0) * [**38.0.0** (2023-04-25)](https://docs.rs/crate/parquet/38.0.0) * [**37.0.0** (2023-04-10)](https://docs.rs/crate/parquet/37.0.0) * [**36.0.0** (2023-03-28)](https://docs.rs/crate/parquet/36.0.0) * [**35.0.0** (2023-03-13)](https://docs.rs/crate/parquet/35.0.0) * [**34.0.0** (2023-02-27)](https://docs.rs/crate/parquet/34.0.0) * [**33.0.0** (2023-02-13)](https://docs.rs/crate/parquet/33.0.0) * [**32.0.0** (2023-01-30)](https://docs.rs/crate/parquet/32.0.0) * [**31.0.0** (2023-01-16)](https://docs.rs/crate/parquet/31.0.0) * [**30.0.1** (2023-01-08)](https://docs.rs/crate/parquet/30.0.1) * [**30.0.0** (2023-01-03)](https://docs.rs/crate/parquet/30.0.0) * [**29.0.0** (2022-12-12)](https://docs.rs/crate/parquet/29.0.0) * [**28.0.0** (2022-11-28)](https://docs.rs/crate/parquet/28.0.0) * [**27.0.0** (2022-11-14)](https://docs.rs/crate/parquet/27.0.0) * [**26.0.0** (2022-11-03)](https://docs.rs/crate/parquet/26.0.0) * [**25.0.0** (2022-10-17)](https://docs.rs/crate/parquet/25.0.0) * [**24.0.0** (2022-10-03)](https://docs.rs/crate/parquet/24.0.0) * [**23.0.0** (2022-09-19)](https://docs.rs/crate/parquet/23.0.0) * [**22.0.0** (2022-09-05)](https://docs.rs/crate/parquet/22.0.0) * [**21.0.0** (2022-08-29)](https://docs.rs/crate/parquet/21.0.0) * [**20.0.0** (2022-08-08)](https://docs.rs/crate/parquet/20.0.0) * [**19.0.0** (2022-07-26)](https://docs.rs/crate/parquet/19.0.0) * [**18.0.0** (2022-07-11)](https://docs.rs/crate/parquet/18.0.0) * [**17.0.0** (2022-06-27)](https://docs.rs/crate/parquet/17.0.0) * [**16.0.0** (2022-06-13)](https://docs.rs/crate/parquet/16.0.0) * [**15.0.0** (2022-05-30)](https://docs.rs/crate/parquet/15.0.0) * [**14.0.0** (2022-05-16)](https://docs.rs/crate/parquet/14.0.0) * [**14.0.0-dev** (2022-05-12)](https://docs.rs/crate/parquet/14.0.0-dev "parquet-14.0.0-dev is yanked and docs.rs failed to build it") * [**13.0.0** (2022-05-03)](https://docs.rs/crate/parquet/13.0.0) * [**12.0.0** (2022-04-19)](https://docs.rs/crate/parquet/12.0.0) * [**11.1.0** (2022-04-04)](https://docs.rs/crate/parquet/11.1.0) * [**11.0.0** (2022-03-21)](https://docs.rs/crate/parquet/11.0.0) * [**10.0.0** (2022-03-08)](https://docs.rs/crate/parquet/10.0.0) * [**9.1.0** (2022-02-22)](https://docs.rs/crate/parquet/9.1.0) * [**9.0.2** (2022-02-13)](https://docs.rs/crate/parquet/9.0.2) * [**8.0.0** (2022-01-25)](https://docs.rs/crate/parquet/8.0.0) * [**7.0.0** (2022-01-12)](https://docs.rs/crate/parquet/7.0.0) * [**6.5.0** (2021-12-29)](https://docs.rs/crate/parquet/6.5.0) * [**6.4.0** (2021-12-14)](https://docs.rs/crate/parquet/6.4.0) * [**6.3.0** (2021-11-29)](https://docs.rs/crate/parquet/6.3.0) * [**6.2.0** (2021-11-15)](https://docs.rs/crate/parquet/6.2.0) * [**6.1.0** (2021-11-03)](https://docs.rs/crate/parquet/6.1.0) * [**6.0.0** (2021-10-17)](https://docs.rs/crate/parquet/6.0.0) * [**5.5.0** (2021-09-28)](https://docs.rs/crate/parquet/5.5.0) * [**5.4.0** (2021-09-15)](https://docs.rs/crate/parquet/5.4.0) * [**5.3.0** (2021-08-31)](https://docs.rs/crate/parquet/5.3.0) * [**5.2.0** (2021-08-16)](https://docs.rs/crate/parquet/5.2.0) * [**5.1.0** (2021-08-02)](https://docs.rs/crate/parquet/5.1.0) * [**5.0.0** (2021-07-17)](https://docs.rs/crate/parquet/5.0.0) * [**4.4.0** (2021-06-28)](https://docs.rs/crate/parquet/4.4.0) * [**4.3.0** (2021-06-14)](https://docs.rs/crate/parquet/4.3.0) * [**4.2.0** (2021-06-01)](https://docs.rs/crate/parquet/4.2.0) * [**4.1.0** (2021-05-22)](https://docs.rs/crate/parquet/4.1.0) * [**4.0.0** (2021-04-26)](https://docs.rs/crate/parquet/4.0.0) * [**3.0.0** (2021-01-26)](https://docs.rs/crate/parquet/3.0.0) * [**2.0.0** (2020-10-19)](https://docs.rs/crate/parquet/2.0.0) * [**1.0.1** (2020-08-21)](https://docs.rs/crate/parquet/1.0.1) * [**1.0.0** (2020-07-24)](https://docs.rs/crate/parquet/1.0.0) * [**0.18.1** (2022-05-12)](https://docs.rs/crate/parquet/0.18.1 "parquet-0.18.1 is yanked") * [**0.18.0** (2022-05-12)](https://docs.rs/crate/parquet/0.18.0 "parquet-0.18.0 is yanked and docs.rs failed to build it") * [**0.17.0** (2020-04-21)](https://docs.rs/crate/parquet/0.17.0 "docs.rs failed to build parquet-0.17.0") * [**0.16.0** (2020-02-07)](https://docs.rs/crate/parquet/0.16.0) * [**0.15.1** (2019-11-01)](https://docs.rs/crate/parquet/0.15.1) * [**0.15.0** (2019-10-06)](https://docs.rs/crate/parquet/0.15.0) * [**0.14.1** (2019-07-22)](https://docs.rs/crate/parquet/0.14.1) * [**0.14.0** (2019-07-08)](https://docs.rs/crate/parquet/0.14.0) * [**0.13.0** (2019-04-01)](https://docs.rs/crate/parquet/0.13.0) * [**0.12.0** (2019-01-20)](https://docs.rs/crate/parquet/0.12.0) * [**0.4.2** (2018-11-03)](https://docs.rs/crate/parquet/0.4.2) * [**0.4.1** (2018-10-12)](https://docs.rs/crate/parquet/0.4.1) * [**0.4.0** (2018-10-08)](https://docs.rs/crate/parquet/0.4.0 "docs.rs failed to build parquet-0.4.0") * [**0.3.0** (2018-05-05)](https://docs.rs/crate/parquet/0.3.0) * [**0.2.0** (2018-04-26)](https://docs.rs/crate/parquet/0.2.0 "docs.rs failed to build parquet-0.2.0") * [**0.1.0** (2018-04-01)](https://docs.rs/crate/parquet/0.1.0 "docs.rs failed to build parquet-0.1.0") * Owners * [![andygrove](https://avatars.githubusercontent.com/u/934084?v=4)](https://crates.io/users/andygrove) [![sunchao](https://avatars3.githubusercontent.com/u/506679?v=4)](https://crates.io/users/sunchao) [![kou](https://avatars.githubusercontent.com/u/27350?v=4)](https://crates.io/users/kou) [![kszucs](https://avatars.githubusercontent.com/u/961747?v=4)](https://crates.io/users/kszucs) [![nevi-me](https://avatars.githubusercontent.com/u/1876878?v=4)](https://crates.io/users/nevi-me) [![sadikovi](https://avatars.githubusercontent.com/u/7788766?v=4)](https://crates.io/users/sadikovi) [![alamb](https://avatars.githubusercontent.com/u/490673?v=4)](https://crates.io/users/alamb) [![tustvold](https://avatars.githubusercontent.com/u/1781103?v=4)](https://crates.io/users/tustvold) docs.rs failed to build parquet-58.1.0 Please check the [build logs](https://docs.rs/crate/parquet/latest/builds) for more information. See [Builds](https://docs.rs/about/builds) for ideas on how to fix a failed build, or [Metadata](https://docs.rs/about/metadata) for how to configure docs.rs builds. If you believe this is docs.rs' fault, [open an issue](https://github.com/rust-lang/docs.rs/issues/new/choose) . Visit the last successful build: [parquet-58.0.0](https://docs.rs/crate/parquet/58.0.0) Apache Parquet Official Native Rust Implementation ================================================== [![crates.io](https://img.shields.io/crates/v/parquet.svg)](https://crates.io/crates/parquet) [![docs.rs](https://img.shields.io/docsrs/parquet.svg)](https://docs.rs/parquet/latest/parquet/) This crate contains the official Native Rust implementation of [Apache Parquet](https://parquet.apache.org/) , which is part of the [Apache Arrow](https://arrow.apache.org/) project. See the [API documentation](https://docs.rs/parquet/latest) for examples and the full API. The API documentation for most recent, unreleased code is available [here](https://arrow.apache.org/rust/parquet/index.html) . Rust Version Compatibility -------------------------- This crate is tested with the latest stable version of Rust. We do not currently test against other, older versions of the Rust compiler. Versioning / Releases --------------------- The `parquet` crate follows the [SemVer standard](https://doc.rust-lang.org/cargo/reference/semver.html) defined by Cargo and works well within the Rust crate ecosystem. See the [repository README](https://github.com/apache/arrow-rs) for more details on the release schedule, version and deprecation policy. Note that for historical reasons, this crate uses versions with major numbers greater than `0.x` (e.g. `19.0.0`), unlike many other crates in the Rust ecosystem which spend extended time releasing versions `0.x` to signal planned ongoing API changes. Minor arrow releases contain only compatible changes, while major releases may contain breaking API changes. Feature Flags ------------- The `parquet` crate provides the following features which may be enabled in your `Cargo.toml`: * `arrow` (default) - support for reading / writing [`arrow`](https://crates.io/crates/arrow) arrays to / from Parquet * `async` - support `async` APIs for reading Parquet * `json` - support for reading / writing `json` data to / from Parquet * `brotli` (default) - support for Parquet using `brotli` compression * `flate2` (default) - support for Parquet using `gzip` compression * `lz4` (default) - support for Parquet using `lz4` compression * `zstd` (default) - support for Parquet using `zstd` compression * `snap` (default) - support for Parquet using `snappy` compression * `cli` - parquet [CLI tools](https://github.com/apache/arrow-rs/tree/main/parquet/src/bin) * `crc` - enables functionality to automatically verify checksums of each page (if present) when decoding * `experimental` - Experimental APIs which may change, even between minor releases * `simdutf8` (default) - Use the [`simdutf8`](https://crates.io/crates/simdutf8) crate for SIMD-accelerated UTF-8 validation * `encryption` - support for reading / writing encrypted Parquet files * `variant_experimental` - ⚠️ Experimental [Parquet Variant](https://github.com/apache/parquet-format/blob/master/VariantEncoding.md) support, which may change, even between minor releases. * `geospatial` - ⚠️ Experimental geospatial support, which may change, even between minor releases. Parquet Feature Status ---------------------- Please see the [Implementation Status Page](https://parquet.apache.org/docs/file-format/implementationstatus/) on the [Apache Parquet](https://parquet.apache.org/) website for information on the status of this implementation. License ------- Licensed under the Apache License, Version 2.0: [http://www.apache.org/licenses/LICENSE-2.0](http://www.apache.org/licenses/LICENSE-2.0) . --- # arrow::record_batch - Rust [Docs.rs](https://docs.rs/) * [arrow-58.1.0](https://docs.rs/arrow/latest/arrow/record_batch/index.html# "Rust implementation of Apache Arrow") * arrow 58.1.0 * [Permalink](https://docs.rs/arrow/58.1.0/arrow/record_batch/ "Get a link to this specific version") * [Docs.rs crate page](https://docs.rs/crate/arrow/latest "See arrow in docs.rs") * [Apache-2.0](https://spdx.org/licenses/Apache-2.0) * Links * [Homepage](https://github.com/apache/arrow-rs) * [Repository](https://github.com/apache/arrow-rs) * [crates.io](https://crates.io/crates/arrow "See arrow in crates.io") * [Source](https://docs.rs/crate/arrow/latest/source/ "Browse source of arrow-58.1.0") * Owners * [andygrove](https://crates.io/users/andygrove) * [kou](https://crates.io/users/kou) * [kszucs](https://crates.io/users/kszucs) * [xhochy](https://crates.io/users/xhochy) * [nevi-me](https://crates.io/users/nevi-me) * [alamb](https://crates.io/users/alamb) * [tustvold](https://crates.io/users/tustvold) * Dependencies * * [arrow-arith ^58.1.0 _normal_](https://docs.rs/arrow-arith/^58.1.0/) * [arrow-array ^58.1.0 _normal_](https://docs.rs/arrow-array/^58.1.0/) * [arrow-buffer ^58.1.0 _normal_](https://docs.rs/arrow-buffer/^58.1.0/) * [arrow-cast ^58.1.0 _normal_](https://docs.rs/arrow-cast/^58.1.0/) * [arrow-csv ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-csv/^58.1.0/) * [arrow-data ^58.1.0 _normal_](https://docs.rs/arrow-data/^58.1.0/) * [arrow-ipc ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-ipc/^58.1.0/) * [arrow-json ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-json/^58.1.0/) * [arrow-ord ^58.1.0 _normal_](https://docs.rs/arrow-ord/^58.1.0/) * [arrow-pyarrow ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-pyarrow/^58.1.0/) * [arrow-row ^58.1.0 _normal_](https://docs.rs/arrow-row/^58.1.0/) * [arrow-schema ^58.1.0 _normal_](https://docs.rs/arrow-schema/^58.1.0/) * [arrow-select ^58.1.0 _normal_](https://docs.rs/arrow-select/^58.1.0/) * [arrow-string ^58.1.0 _normal_](https://docs.rs/arrow-string/^58.1.0/) * [half ^2.1 _normal_ _optional_](https://docs.rs/half/^2.1/) * [rand ^0.9 _normal_ _optional_](https://docs.rs/rand/^0.9/) * [bytes ^1.9 _dev_](https://docs.rs/bytes/^1.9/) * [chrono ^0.4.40 _dev_](https://docs.rs/chrono/^0.4.40/) * [criterion ^0.8.0 _dev_](https://docs.rs/criterion/^0.8.0/) * [half ^2.1 _dev_](https://docs.rs/half/^2.1/) * [memmap2 ^0.9.3 _dev_](https://docs.rs/memmap2/^0.9.3/) * [rand ^0.9 _dev_](https://docs.rs/rand/^0.9/) * [serde ^1.0 _dev_](https://docs.rs/serde/^1.0/) * Versions * [**100%** of the crate is documented](https://docs.rs/crate/arrow/latest) * [Platform](https://docs.rs/arrow/latest/arrow/record_batch/index.html#) * [x86\_64-unknown-linux-gnu](https://docs.rs/crate/arrow/latest/target-redirect/arrow/record_batch/) * [Feature flags](https://docs.rs/crate/arrow/latest/features "Browse available feature flags of arrow-58.1.0") * [docs.rs](https://docs.rs/arrow/latest/arrow/record_batch/index.html#) * [About docs.rs](https://docs.rs/about) * [Badges](https://docs.rs/about/badges) * [Builds](https://docs.rs/about/builds) * [Metadata](https://docs.rs/about/metadata) * [Shorthand URLs](https://docs.rs/about/redirections) * [Download](https://docs.rs/about/download) * [Rustdoc JSON](https://docs.rs/about/rustdoc-json) * [Build queue](https://docs.rs/releases/queue) * [Privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#docs.rs) * [Rust](https://docs.rs/arrow/latest/arrow/record_batch/index.html#) * [Rust website](https://www.rust-lang.org/) * [The Book](https://doc.rust-lang.org/book/) * [Standard Library API Reference](https://doc.rust-lang.org/std/) * [Rust by Example](https://doc.rust-lang.org/rust-by-example/) * [The Cargo Guide](https://doc.rust-lang.org/cargo/guide/) * [Clippy Documentation](https://doc.rust-lang.org/nightly/clippy) [Skip to main content](https://docs.rs/arrow/latest/arrow/record_batch/index.html#main-content) [Module record\_batch](https://docs.rs/arrow/latest/arrow/record_batch/index.html#) ------------------------------------------------------------------------------------ [arrow](https://docs.rs/arrow/latest/arrow/index.html) Module record\_batch Copy item path =================================== [Source](https://docs.rs/arrow/latest/src/arrow/lib.rs.html#405) Expand description Contains the `RecordBatch` type and associated traits Structs[§](https://docs.rs/arrow/latest/arrow/record_batch/index.html#structs) ------------------------------------------------------------------------------- [RecordBatch](https://docs.rs/arrow/latest/arrow/record_batch/struct.RecordBatch.html "struct arrow::record_batch::RecordBatch") A two-dimensional batch of column-oriented data with a defined [schema](https://docs.rs/arrow/latest/arrow/datatypes/struct.Schema.html "struct arrow::datatypes::Schema") . [RecordBatchIterator](https://docs.rs/arrow/latest/arrow/record_batch/struct.RecordBatchIterator.html "struct arrow::record_batch::RecordBatchIterator") Generic implementation of [RecordBatchReader](https://docs.rs/arrow/latest/arrow/array/trait.RecordBatchReader.html "trait arrow::array::RecordBatchReader") that wraps an iterator. [RecordBatchOptions](https://docs.rs/arrow/latest/arrow/record_batch/struct.RecordBatchOptions.html "struct arrow::record_batch::RecordBatchOptions") Options that control the behaviour used when creating a [`RecordBatch`](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html "struct arrow::array::RecordBatch") . Traits[§](https://docs.rs/arrow/latest/arrow/record_batch/index.html#traits) ----------------------------------------------------------------------------- [RecordBatchReader](https://docs.rs/arrow/latest/arrow/record_batch/trait.RecordBatchReader.html "trait arrow::record_batch::RecordBatchReader") Trait for types that can read `RecordBatch`’s. [RecordBatchWriter](https://docs.rs/arrow/latest/arrow/record_batch/trait.RecordBatchWriter.html "trait arrow::record_batch::RecordBatchWriter") Trait for types that can write `RecordBatch`’s. --- # Releases - Docs.rs [Docs.rs](https://docs.rs/) * [docs.rs](https://docs.rs/releases#) * [About docs.rs](https://docs.rs/about) * [Badges](https://docs.rs/about/badges) * [Builds](https://docs.rs/about/builds) * [Metadata](https://docs.rs/about/metadata) * [Shorthand URLs](https://docs.rs/about/redirections) * [Download](https://docs.rs/about/download) * [Rustdoc JSON](https://docs.rs/about/rustdoc-json) * [Build queue](https://docs.rs/releases/queue) * [Privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#docs.rs) * [Rust](https://docs.rs/releases#) * [Rust website](https://www.rust-lang.org/) * [The Book](https://doc.rust-lang.org/book/) * [Standard Library API Reference](https://doc.rust-lang.org/std/) * [Rust by Example](https://doc.rust-lang.org/rust-by-example/) * [The Cargo Guide](https://doc.rust-lang.org/cargo/guide/) * [Clippy Documentation](https://doc.rust-lang.org/nightly/clippy) Releases ======== Recently uploaded crates * [Recent](https://docs.rs/releases) * [Stars](https://docs.rs/releases/stars) * [Recent Failures](https://docs.rs/releases/recent-failures) * [Failures By Stars](https://docs.rs/releases/failures) * [Activity](https://docs.rs/releases/activity) * [Queue](https://docs.rs/releases/queue) * [wacks-0.1.0\ \ Structured WASM panic stack traces for browsers\ \ 8 seconds ago](https://docs.rs/wacks/0.1.0/wacks/) * [hashtree-fuse-0.2.18\ \ FUSE filesystem mount for hashtree content-addressed trees\ \ 24 seconds ago](https://docs.rs/hashtree-fuse/0.2.18/hashtree_fuse/) * [perl-ts-statement-tracker-0.12.1\ \ Statement boundary and heredoc context tracking for Perl tree-sitter tooling\ \ 31 seconds ago](https://docs.rs/perl-ts-statement-tracker/0.12.1/perl_ts_statement_tracker/) * [hashtree-fs-0.2.18\ \ Filesystem-based content-addressed blob storage for hashtree\ \ 32 seconds ago](https://docs.rs/hashtree-fs/0.2.18/hashtree_fs/) * [treesitter-types-toml-0.1.0\ \ Pre-generated strongly-typed AST types for TOML (tree-sitter-toml-ng)\ \ 49 seconds ago](https://docs.rs/treesitter-types-toml/0.1.0/treesitter_types_toml/) * [hashtree-lmdb-0.2.18\ \ LMDB-backed content-addressed blob storage for hashtree\ \ one minute ago](https://docs.rs/hashtree-lmdb/0.2.18/hashtree_lmdb/) * [agentix-0.11.0\ \ Multi-provider LLM client for Rust — streaming, non-streaming, tool calls, MCP, DeepSeek, OpenAI, Anthropic, Gemini\ \ one minute ago](https://docs.rs/agentix/0.11.0/agentix/) * [mewt-3.0.1\ \ Mutation testing framework with multi-language support\ \ one minute ago](https://docs.rs/mewt/3.0.1/mewt/) * [hashtree-index-0.2.18\ \ Content-addressed B-tree indexes for hashtree\ \ one minute ago](https://docs.rs/hashtree-index/0.2.18/hashtree_index/) * [a2a-protocol-sdk-0.4.0\ \ A2A protocol v1.0 — convenience umbrella re-export crate\ \ 2 minutes ago](https://docs.rs/a2a-protocol-sdk/0.4.0/a2a_protocol_sdk/) * [cashu-service-0.2.18\ \ Reusable Cashu helper and wallet primitives for paid connectivity services\ \ 2 minutes ago](https://docs.rs/cashu-service/0.2.18/cashu_service/) * [lisette-0.1.2\ \ Little language inspired by Rust that compiles to Go\ \ 3 minutes ago](https://docs.rs/lisette/0.1.2/lisette/) * [hashtree-merge-0.2.18\ \ Deterministic path-based merge primitives for hashtree\ \ 3 minutes ago](https://docs.rs/hashtree-merge/0.2.18/hashtree_merge/) * [btrfs-tune-0.7.0\ \ Tune btrfs filesystem parameters\ \ 3 minutes ago](https://docs.rs/btrfs-tune/0.7.0/btrfs_tune/) * [btrfs-cli-0.7.0\ \ User-space command-line tool for inspecting and managing Btrfs filesystems\ \ 3 minutes ago](https://docs.rs/btrfs-cli/0.7.0/btrfs_cli/) * [a2a-protocol-client-0.4.0\ \ A2A protocol v1.0 — HTTP client (hyper-backed)\ \ 4 minutes ago](https://docs.rs/a2a-protocol-client/0.4.0/a2a_protocol_client/) * [a2a-protocol-server-0.4.0\ \ A2A protocol v1.0 — server framework (hyper-backed)\ \ 4 minutes ago](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/) * [btrfs-stream-0.7.0\ \ Btrfs send stream parser and receive operations\ \ 4 minutes ago](https://docs.rs/btrfs-stream/0.7.0/btrfs_stream/) * [btrfs-mkfs-0.7.0\ \ Create btrfs filesystems\ \ 5 minutes ago](https://docs.rs/btrfs-mkfs/0.7.0/btrfs_mkfs/) * [lisette-lsp-0.1.2\ \ Little language inspired by Rust that compiles to Go\ \ 5 minutes ago](https://docs.rs/lisette-lsp/0.1.2/lisette_lsp/) * [btrfs-uapi-0.7.0\ \ Wrappers around the btrfs userspace interface (ioctls and sysfs)\ \ 5 minutes ago](https://docs.rs/btrfs-uapi/0.7.0/btrfs_uapi/) * [btrfs-disk-0.7.0\ \ Platform-independent parsing and writing of btrfs on-disk structures\ \ 6 minutes ago](https://docs.rs/btrfs-disk/0.7.0/btrfs_disk/) * [hashtree-config-0.2.18\ \ Shared configuration for hashtree tools\ \ 6 minutes ago](https://docs.rs/hashtree-config/0.2.18/hashtree_config/) * [a2a-protocol-types-0.4.0\ \ A2A protocol v1.0 — pure data types, serde only, no I/O\ \ 6 minutes ago](https://docs.rs/a2a-protocol-types/0.4.0/a2a_protocol_types/) * [lisette-semantics-0.1.2\ \ Little language inspired by Rust that compiles to Go\ \ 6 minutes ago](https://docs.rs/lisette-semantics/0.1.2/lisette_semantics/) * [hashtree-core-0.2.18\ \ Simple content-addressed merkle tree with KV storage\ \ 7 minutes ago](https://docs.rs/hashtree-core/0.2.18/hashtree_core/) * [lisette-format-0.1.2\ \ Little language inspired by Rust that compiles to Go\ \ 7 minutes ago](https://docs.rs/lisette-format/0.1.2/lisette_format/) * [lisette-emit-0.1.2\ \ Little language inspired by Rust that compiles to Go\ \ 7 minutes ago](https://docs.rs/lisette-emit/0.1.2/lisette_emit/) * [packet-dissector-dns-0.1.0\ \ DNS (RFC 1035) dissector for packet-dissector\ \ 7 minutes ago](https://docs.rs/packet-dissector-dns/0.1.0/packet_dissector_dns/) * [taffy-0.10.0\ \ A flexible UI layout library\ \ 8 minutes ago](https://docs.rs/taffy/0.10.0/taffy/) [Next Page](https://docs.rs/releases/recent/2) --- # arrow-ipc 58.1.0 - Docs.rs [Docs.rs](https://docs.rs/) * [arrow-ipc-58.1.0](https://docs.rs/crate/arrow-ipc/58.1.0 "Support for the Arrow IPC format") * [Platform](https://docs.rs/crate/arrow-ipc/58.1.0/source/#) * [x86\_64-unknown-linux-gnu](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/) * [Feature flags](https://docs.rs/crate/arrow-ipc/58.1.0/features "Browse available feature flags of arrow-ipc-58.1.0") * [docs.rs](https://docs.rs/crate/arrow-ipc/58.1.0/source/#) * [About docs.rs](https://docs.rs/about) * [Badges](https://docs.rs/about/badges) * [Builds](https://docs.rs/about/builds) * [Metadata](https://docs.rs/about/metadata) * [Shorthand URLs](https://docs.rs/about/redirections) * [Download](https://docs.rs/about/download) * [Rustdoc JSON](https://docs.rs/about/rustdoc-json) * [Build queue](https://docs.rs/releases/queue) * [Privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#docs.rs) * [Rust](https://docs.rs/crate/arrow-ipc/58.1.0/source/#) * [Rust website](https://www.rust-lang.org/) * [The Book](https://doc.rust-lang.org/book/) * [Standard Library API Reference](https://doc.rust-lang.org/std/) * [Rust by Example](https://doc.rust-lang.org/rust-by-example/) * [The Cargo Guide](https://doc.rust-lang.org/cargo/guide/) * [Clippy Documentation](https://doc.rust-lang.org/nightly/clippy) arrow-ipc 58.1.0 ================ Support for the Arrow IPC format * [Crate](https://docs.rs/crate/arrow-ipc/58.1.0) * [Source](https://docs.rs/crate/arrow-ipc/58.1.0/source/) * [Builds](https://docs.rs/crate/arrow-ipc/58.1.0/builds) * [Feature flags](https://docs.rs/crate/arrow-ipc/58.1.0/features) [Documentation](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/) * [benches](https://docs.rs/crate/arrow-ipc/58.1.0/source/benches/) * [src](https://docs.rs/crate/arrow-ipc/58.1.0/source/src/) * [Cargo.lock](https://docs.rs/crate/arrow-ipc/58.1.0/source/Cargo.lock) * [Cargo.toml](https://docs.rs/crate/arrow-ipc/58.1.0/source/Cargo.toml) * [Cargo.toml.orig](https://docs.rs/crate/arrow-ipc/58.1.0/source/Cargo.toml.orig) * [LICENSE.txt](https://docs.rs/crate/arrow-ipc/58.1.0/source/LICENSE.txt) * [NOTICE.txt](https://docs.rs/crate/arrow-ipc/58.1.0/source/NOTICE.txt) --- # arrow-data 58.1.0 - Docs.rs [Docs.rs](https://docs.rs/) * [arrow-data-58.1.0](https://docs.rs/crate/arrow-data/58.1.0 "Array data abstractions for Apache Arrow") * [Platform](https://docs.rs/crate/arrow-data/58.1.0/source/#) * [aarch64-apple-darwin](https://docs.rs/arrow-data/58.1.0/aarch64-apple-darwin/arrow_data/) * [aarch64-unknown-linux-gnu](https://docs.rs/arrow-data/58.1.0/aarch64-unknown-linux-gnu/arrow_data/) * [i686-pc-windows-msvc](https://docs.rs/arrow-data/58.1.0/i686-pc-windows-msvc/arrow_data/) * [x86\_64-pc-windows-msvc](https://docs.rs/arrow-data/58.1.0/x86_64-pc-windows-msvc/arrow_data/) * [x86\_64-unknown-linux-gnu](https://docs.rs/arrow-data/58.1.0/arrow_data/) * [Feature flags](https://docs.rs/crate/arrow-data/58.1.0/features "Browse available feature flags of arrow-data-58.1.0") * [docs.rs](https://docs.rs/crate/arrow-data/58.1.0/source/#) * [About docs.rs](https://docs.rs/about) * [Badges](https://docs.rs/about/badges) * [Builds](https://docs.rs/about/builds) * [Metadata](https://docs.rs/about/metadata) * [Shorthand URLs](https://docs.rs/about/redirections) * [Download](https://docs.rs/about/download) * [Rustdoc JSON](https://docs.rs/about/rustdoc-json) * [Build queue](https://docs.rs/releases/queue) * [Privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#docs.rs) * [Rust](https://docs.rs/crate/arrow-data/58.1.0/source/#) * [Rust website](https://www.rust-lang.org/) * [The Book](https://doc.rust-lang.org/book/) * [Standard Library API Reference](https://doc.rust-lang.org/std/) * [Rust by Example](https://doc.rust-lang.org/rust-by-example/) * [The Cargo Guide](https://doc.rust-lang.org/cargo/guide/) * [Clippy Documentation](https://doc.rust-lang.org/nightly/clippy) arrow-data 58.1.0 ================= Array data abstractions for Apache Arrow * [Crate](https://docs.rs/crate/arrow-data/58.1.0) * [Source](https://docs.rs/crate/arrow-data/58.1.0/source/) * [Builds](https://docs.rs/crate/arrow-data/58.1.0/builds) * [Feature flags](https://docs.rs/crate/arrow-data/58.1.0/features) [Documentation](https://docs.rs/arrow-data/58.1.0/arrow_data/) * [src](https://docs.rs/crate/arrow-data/58.1.0/source/src/) * [Cargo.lock](https://docs.rs/crate/arrow-data/58.1.0/source/Cargo.lock) * [Cargo.toml](https://docs.rs/crate/arrow-data/58.1.0/source/Cargo.toml) * [Cargo.toml.orig](https://docs.rs/crate/arrow-data/58.1.0/source/Cargo.toml.orig) * [LICENSE.txt](https://docs.rs/crate/arrow-data/58.1.0/source/LICENSE.txt) * [NOTICE.txt](https://docs.rs/crate/arrow-data/58.1.0/source/NOTICE.txt) --- # arrow 58.1.0 - Docs.rs [Docs.rs](https://docs.rs/) * [arrow-58.1.0](https://docs.rs/crate/arrow/latest "Rust implementation of Apache Arrow") * [Platform](https://docs.rs/crate/arrow/latest/source/benches/#) * [x86\_64-unknown-linux-gnu](https://docs.rs/arrow/latest/arrow/) * [Feature flags](https://docs.rs/crate/arrow/latest/features "Browse available feature flags of arrow-58.1.0") * [docs.rs](https://docs.rs/crate/arrow/latest/source/benches/#) * [About docs.rs](https://docs.rs/about) * [Badges](https://docs.rs/about/badges) * [Builds](https://docs.rs/about/builds) * [Metadata](https://docs.rs/about/metadata) * [Shorthand URLs](https://docs.rs/about/redirections) * [Download](https://docs.rs/about/download) * [Rustdoc JSON](https://docs.rs/about/rustdoc-json) * [Build queue](https://docs.rs/releases/queue) * [Privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#docs.rs) * [Rust](https://docs.rs/crate/arrow/latest/source/benches/#) * [Rust website](https://www.rust-lang.org/) * [The Book](https://doc.rust-lang.org/book/) * [Standard Library API Reference](https://doc.rust-lang.org/std/) * [Rust by Example](https://doc.rust-lang.org/rust-by-example/) * [The Cargo Guide](https://doc.rust-lang.org/cargo/guide/) * [Clippy Documentation](https://doc.rust-lang.org/nightly/clippy) arrow 58.1.0 ============ Rust implementation of Apache Arrow * [Crate](https://docs.rs/crate/arrow/latest) * [Source](https://docs.rs/crate/arrow/latest/source/benches/) * [Builds](https://docs.rs/crate/arrow/latest/builds) * [Feature flags](https://docs.rs/crate/arrow/latest/features) [Documentation](https://docs.rs/arrow/latest/arrow/) * [..](https://docs.rs/crate/arrow/latest/source/) * [aggregate\_kernels.rs](https://docs.rs/crate/arrow/latest/source/benches/aggregate_kernels.rs) * [arithmetic\_kernels.rs](https://docs.rs/crate/arrow/latest/source/benches/arithmetic_kernels.rs) * [array\_data\_validate.rs](https://docs.rs/crate/arrow/latest/source/benches/array_data_validate.rs) * [array\_from.rs](https://docs.rs/crate/arrow/latest/source/benches/array_from.rs) * [array\_iter.rs](https://docs.rs/crate/arrow/latest/source/benches/array_iter.rs) * [array\_slice.rs](https://docs.rs/crate/arrow/latest/source/benches/array_slice.rs) * [bit\_length\_kernel.rs](https://docs.rs/crate/arrow/latest/source/benches/bit_length_kernel.rs) * [bitwise\_kernel.rs](https://docs.rs/crate/arrow/latest/source/benches/bitwise_kernel.rs) * [boolean\_append\_packed.rs](https://docs.rs/crate/arrow/latest/source/benches/boolean_append_packed.rs) * [boolean\_kernels.rs](https://docs.rs/crate/arrow/latest/source/benches/boolean_kernels.rs) * [buffer\_bit\_ops.rs](https://docs.rs/crate/arrow/latest/source/benches/buffer_bit_ops.rs) * [buffer\_create.rs](https://docs.rs/crate/arrow/latest/source/benches/buffer_create.rs) * [builder.rs](https://docs.rs/crate/arrow/latest/source/benches/builder.rs) * [cast\_kernels.rs](https://docs.rs/crate/arrow/latest/source/benches/cast_kernels.rs) * [coalesce\_kernels.rs](https://docs.rs/crate/arrow/latest/source/benches/coalesce_kernels.rs) * [comparison\_kernels.rs](https://docs.rs/crate/arrow/latest/source/benches/comparison_kernels.rs) * [concatenate\_kernel.rs](https://docs.rs/crate/arrow/latest/source/benches/concatenate_kernel.rs) * [csv\_reader.rs](https://docs.rs/crate/arrow/latest/source/benches/csv_reader.rs) * [csv\_writer.rs](https://docs.rs/crate/arrow/latest/source/benches/csv_writer.rs) * [decimal\_validate.rs](https://docs.rs/crate/arrow/latest/source/benches/decimal_validate.rs) * [equal.rs](https://docs.rs/crate/arrow/latest/source/benches/equal.rs) * [filter\_kernels.rs](https://docs.rs/crate/arrow/latest/source/benches/filter_kernels.rs) * [interleave\_kernels.rs](https://docs.rs/crate/arrow/latest/source/benches/interleave_kernels.rs) * [json\_reader.rs](https://docs.rs/crate/arrow/latest/source/benches/json_reader.rs) * [json\_writer.rs](https://docs.rs/crate/arrow/latest/source/benches/json_writer.rs) * [length\_kernel.rs](https://docs.rs/crate/arrow/latest/source/benches/length_kernel.rs) * [lexsort.rs](https://docs.rs/crate/arrow/latest/source/benches/lexsort.rs) * [merge\_kernels.rs](https://docs.rs/crate/arrow/latest/source/benches/merge_kernels.rs) * [mutable\_array.rs](https://docs.rs/crate/arrow/latest/source/benches/mutable_array.rs) * [nullif\_kernel.rs](https://docs.rs/crate/arrow/latest/source/benches/nullif_kernel.rs) * [partition\_kernels.rs](https://docs.rs/crate/arrow/latest/source/benches/partition_kernels.rs) * [primitive\_run\_accessor.rs](https://docs.rs/crate/arrow/latest/source/benches/primitive_run_accessor.rs) * [primitive\_run\_take.rs](https://docs.rs/crate/arrow/latest/source/benches/primitive_run_take.rs) * [regexp\_kernels.rs](https://docs.rs/crate/arrow/latest/source/benches/regexp_kernels.rs) * [row\_format.rs](https://docs.rs/crate/arrow/latest/source/benches/row_format.rs) * [sort\_kernel.rs](https://docs.rs/crate/arrow/latest/source/benches/sort_kernel.rs) * [string\_dictionary\_builder.rs](https://docs.rs/crate/arrow/latest/source/benches/string_dictionary_builder.rs) * [string\_run\_builder.rs](https://docs.rs/crate/arrow/latest/source/benches/string_run_builder.rs) * [string\_run\_iterator.rs](https://docs.rs/crate/arrow/latest/source/benches/string_run_iterator.rs) * [substring\_kernels.rs](https://docs.rs/crate/arrow/latest/source/benches/substring_kernels.rs) * [take\_kernels.rs](https://docs.rs/crate/arrow/latest/source/benches/take_kernels.rs) * [zip\_kernels.rs](https://docs.rs/crate/arrow/latest/source/benches/zip_kernels.rs) --- # hashtree_merge - Rust [Docs.rs](https://docs.rs/) * [hashtree-merge-0.2.18](https://docs.rs/hashtree-merge/0.2.18/hashtree_merge/# "Deterministic path-based merge primitives for hashtree") * hashtree-merge 0.2.18 * [Docs.rs crate page](https://docs.rs/crate/hashtree-merge/0.2.18 "See hashtree-merge in docs.rs") * [MIT](https://spdx.org/licenses/MIT) * Links * [Homepage](https://git.iris.to/#/npub1xdhnr9mrv47kkrn95k6cwecearydeh8e895990n3acntwvmgk2dsdeeycm/hashtree) * [Repository](https://git.iris.to/#/npub1xdhnr9mrv47kkrn95k6cwecearydeh8e895990n3acntwvmgk2dsdeeycm/hashtree) * [crates.io](https://crates.io/crates/hashtree-merge "See hashtree-merge in crates.io") * [Source](https://docs.rs/crate/hashtree-merge/0.2.18/source/ "Browse source of hashtree-merge-0.2.18") * Owners * [mmalmi](https://crates.io/users/mmalmi) * Dependencies * Versions * [**0%** of the crate is documented](https://docs.rs/crate/hashtree-merge/0.2.18) * [Platform](https://docs.rs/hashtree-merge/0.2.18/hashtree_merge/#) * [aarch64-apple-darwin](https://docs.rs/crate/hashtree-merge/0.2.18/target-redirect/aarch64-apple-darwin/hashtree_merge/) * [aarch64-unknown-linux-gnu](https://docs.rs/crate/hashtree-merge/0.2.18/target-redirect/aarch64-unknown-linux-gnu/hashtree_merge/) * [i686-pc-windows-msvc](https://docs.rs/crate/hashtree-merge/0.2.18/target-redirect/i686-pc-windows-msvc/hashtree_merge/) * [x86\_64-pc-windows-msvc](https://docs.rs/crate/hashtree-merge/0.2.18/target-redirect/x86_64-pc-windows-msvc/hashtree_merge/) * [x86\_64-unknown-linux-gnu](https://docs.rs/crate/hashtree-merge/0.2.18/target-redirect/hashtree_merge/) * [Feature flags](https://docs.rs/crate/hashtree-merge/0.2.18/features "Browse available feature flags of hashtree-merge-0.2.18") * [docs.rs](https://docs.rs/hashtree-merge/0.2.18/hashtree_merge/#) * [About docs.rs](https://docs.rs/about) * [Badges](https://docs.rs/about/badges) * [Builds](https://docs.rs/about/builds) * [Metadata](https://docs.rs/about/metadata) * [Shorthand URLs](https://docs.rs/about/redirections) * [Download](https://docs.rs/about/download) * [Rustdoc JSON](https://docs.rs/about/rustdoc-json) * [Build queue](https://docs.rs/releases/queue) * [Privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#docs.rs) * [Rust](https://docs.rs/hashtree-merge/0.2.18/hashtree_merge/#) * [Rust website](https://www.rust-lang.org/) * [The Book](https://doc.rust-lang.org/book/) * [Standard Library API Reference](https://doc.rust-lang.org/std/) * [Rust by Example](https://doc.rust-lang.org/rust-by-example/) * [The Cargo Guide](https://doc.rust-lang.org/cargo/guide/) * [Clippy Documentation](https://doc.rust-lang.org/nightly/clippy) [Skip to main content](https://docs.rs/hashtree-merge/0.2.18/hashtree_merge/#main-content) [Crate hashtree\_merge](https://docs.rs/hashtree-merge/0.2.18/hashtree_merge/#) -------------------------------------------------------------------------------- Crate hashtree\_merge Copy item path ==================================== [Source](https://docs.rs/hashtree-merge/0.2.18/src/hashtree_merge/lib.rs.html#1-383) Structs[§](https://docs.rs/hashtree-merge/0.2.18/hashtree_merge/#structs) -------------------------------------------------------------------------- [HiddenPath](https://docs.rs/hashtree-merge/0.2.18/hashtree_merge/struct.HiddenPath.html "struct hashtree_merge::HiddenPath") [MergedPathEntry](https://docs.rs/hashtree-merge/0.2.18/hashtree_merge/struct.MergedPathEntry.html "struct hashtree_merge::MergedPathEntry") [PathEntry](https://docs.rs/hashtree-merge/0.2.18/hashtree_merge/struct.PathEntry.html "struct hashtree_merge::PathEntry") [PathMergeResult](https://docs.rs/hashtree-merge/0.2.18/hashtree_merge/struct.PathMergeResult.html "struct hashtree_merge::PathMergeResult") [PathMergeSource](https://docs.rs/hashtree-merge/0.2.18/hashtree_merge/struct.PathMergeSource.html "struct hashtree_merge::PathMergeSource") [PathTombstone](https://docs.rs/hashtree-merge/0.2.18/hashtree_merge/struct.PathTombstone.html "struct hashtree_merge::PathTombstone") Enums[§](https://docs.rs/hashtree-merge/0.2.18/hashtree_merge/#enums) ---------------------------------------------------------------------- [HiddenReason](https://docs.rs/hashtree-merge/0.2.18/hashtree_merge/enum.HiddenReason.html "enum hashtree_merge::HiddenReason") [PathEntryKind](https://docs.rs/hashtree-merge/0.2.18/hashtree_merge/enum.PathEntryKind.html "enum hashtree_merge::PathEntryKind") [PathMergeError](https://docs.rs/hashtree-merge/0.2.18/hashtree_merge/enum.PathMergeError.html "enum hashtree_merge::PathMergeError") Functions[§](https://docs.rs/hashtree-merge/0.2.18/hashtree_merge/#functions) ------------------------------------------------------------------------------ [merge\_path\_sources](https://docs.rs/hashtree-merge/0.2.18/hashtree_merge/fn.merge_path_sources.html "fn hashtree_merge::merge_path_sources") --- # memmap2 0.9.10 - Docs.rs [Docs.rs](https://docs.rs/) * [memmap2-0.9.10](https://docs.rs/crate/memmap2/0.9.10 "Cross-platform Rust API for memory-mapped file IO") * [Platform](https://docs.rs/crate/memmap2/0.9.10#) * [aarch64-apple-darwin](https://docs.rs/memmap2/0.9.10/aarch64-apple-darwin/memmap2/) * [aarch64-unknown-linux-gnu](https://docs.rs/memmap2/0.9.10/aarch64-unknown-linux-gnu/memmap2/) * [i686-pc-windows-msvc](https://docs.rs/memmap2/0.9.10/i686-pc-windows-msvc/memmap2/) * [x86\_64-pc-windows-msvc](https://docs.rs/memmap2/0.9.10/x86_64-pc-windows-msvc/memmap2/) * [x86\_64-unknown-linux-gnu](https://docs.rs/memmap2/0.9.10/memmap2/) * [Feature flags](https://docs.rs/crate/memmap2/0.9.10/features "Browse available feature flags of memmap2-0.9.10") * [docs.rs](https://docs.rs/crate/memmap2/0.9.10#) * [About docs.rs](https://docs.rs/about) * [Badges](https://docs.rs/about/badges) * [Builds](https://docs.rs/about/builds) * [Metadata](https://docs.rs/about/metadata) * [Shorthand URLs](https://docs.rs/about/redirections) * [Download](https://docs.rs/about/download) * [Rustdoc JSON](https://docs.rs/about/rustdoc-json) * [Build queue](https://docs.rs/releases/queue) * [Privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#docs.rs) * [Rust](https://docs.rs/crate/memmap2/0.9.10#) * [Rust website](https://www.rust-lang.org/) * [The Book](https://doc.rust-lang.org/book/) * [Standard Library API Reference](https://doc.rust-lang.org/std/) * [Rust by Example](https://doc.rust-lang.org/rust-by-example/) * [The Cargo Guide](https://doc.rust-lang.org/cargo/guide/) * [Clippy Documentation](https://doc.rust-lang.org/nightly/clippy) memmap2 0.9.10 ============== Cross-platform Rust API for memory-mapped file IO * [Crate](https://docs.rs/crate/memmap2/0.9.10) * [Source](https://docs.rs/crate/memmap2/0.9.10/source/) * [Builds](https://docs.rs/crate/memmap2/0.9.10/builds) * [Feature flags](https://docs.rs/crate/memmap2/0.9.10/features) [Documentation](https://docs.rs/memmap2/0.9.10/memmap2/) * Coverage * **96.47%** **82** out of **85** items documented**19** out of **65** items with examples * Size * Source code size: 163.31 kB This is the summed size of all the files inside the crates.io package for this release. * Documentation size: 8.17 MB This is the summed size of all files generated by rustdoc for all configured targets * Ø build duration * this release: 15s Average build duration of **successful** builds. * all releases: 13s Average build duration of **successful** builds in releases after 2024-10-23. * Links * [RazrFalcon/memmap2-rs \ 612 107 12](https://github.com/RazrFalcon/memmap2-rs) * [crates.io](https://crates.io/crates/memmap2 "See memmap2 on crates.io") * Dependencies * * [stable\_deref\_trait ^1.0 _normal_ _optional_](https://docs.rs/crate/stable_deref_trait/^1.0) * [owning\_ref ^0.4.1 _dev_](https://docs.rs/crate/owning_ref/^0.4.1) * [tempfile ^3 _dev_](https://docs.rs/crate/tempfile/^3) * [libc ^0.2.151 _normal_](https://docs.rs/crate/libc/^0.2.151) * Versions * * [**0.9.10** (2026-02-15)](https://docs.rs/crate/memmap2/0.9.10) * [**0.9.9** (2025-10-21)](https://docs.rs/crate/memmap2/0.9.9) * [**0.9.8** (2025-08-22)](https://docs.rs/crate/memmap2/0.9.8) * [**0.9.7** (2025-07-13)](https://docs.rs/crate/memmap2/0.9.7) * [**0.9.5** (2024-09-13)](https://docs.rs/crate/memmap2/0.9.5) * [**0.9.4** (2024-01-25)](https://docs.rs/crate/memmap2/0.9.4) * [**0.9.3** (2023-12-19)](https://docs.rs/crate/memmap2/0.9.3) * [**0.9.2** (2023-12-17)](https://docs.rs/crate/memmap2/0.9.2 "memmap2-0.9.2 is yanked") * [**0.9.1** (2023-12-16)](https://docs.rs/crate/memmap2/0.9.1 "memmap2-0.9.1 is yanked") * [**0.9.0** (2023-10-03)](https://docs.rs/crate/memmap2/0.9.0) * [**0.8.0** (2023-09-25)](https://docs.rs/crate/memmap2/0.8.0) * [**0.7.1** (2023-06-24)](https://docs.rs/crate/memmap2/0.7.1) * [**0.7.0** (2023-06-08)](https://docs.rs/crate/memmap2/0.7.0) * [**0.6.2** (2023-05-24)](https://docs.rs/crate/memmap2/0.6.2) * [**0.6.1** (2023-05-10)](https://docs.rs/crate/memmap2/0.6.1) * [**0.6.0** (2023-05-09)](https://docs.rs/crate/memmap2/0.6.0) * [**0.5.10** (2023-02-22)](https://docs.rs/crate/memmap2/0.5.10) * [**0.5.9** (2023-02-17)](https://docs.rs/crate/memmap2/0.5.9) * [**0.5.8** (2022-11-09)](https://docs.rs/crate/memmap2/0.5.8) * [**0.5.7** (2022-08-15)](https://docs.rs/crate/memmap2/0.5.7) * [**0.5.6** (2022-08-11)](https://docs.rs/crate/memmap2/0.5.6) * [**0.5.5** (2022-07-09)](https://docs.rs/crate/memmap2/0.5.5) * [**0.5.4** (2022-06-04)](https://docs.rs/crate/memmap2/0.5.4) * [**0.5.3** (2022-02-10)](https://docs.rs/crate/memmap2/0.5.3) * [**0.5.2** (2022-01-10)](https://docs.rs/crate/memmap2/0.5.2) * [**0.5.1** (2022-01-09)](https://docs.rs/crate/memmap2/0.5.1) * [**0.5.0** (2021-09-19)](https://docs.rs/crate/memmap2/0.5.0) * [**0.4.0** (2021-09-16)](https://docs.rs/crate/memmap2/0.4.0) * [**0.3.1** (2021-08-15)](https://docs.rs/crate/memmap2/0.3.1) * [**0.3.0** (2021-06-10)](https://docs.rs/crate/memmap2/0.3.0) * [**0.2.3** (2021-05-24)](https://docs.rs/crate/memmap2/0.2.3) * [**0.2.2** (2021-04-03)](https://docs.rs/crate/memmap2/0.2.2) * [**0.2.1** (2021-02-08)](https://docs.rs/crate/memmap2/0.2.1) * [**0.2.0** (2020-12-19)](https://docs.rs/crate/memmap2/0.2.0) * [**0.1.0** (2020-01-18)](https://docs.rs/crate/memmap2/0.1.0) * Owners * [![tbu-](https://avatars.githubusercontent.com/u/6666593?v=4)](https://crates.io/users/tbu-) [![RazrFalcon](https://avatars.githubusercontent.com/u/725494?v=4)](https://crates.io/users/RazrFalcon) [![de-vri-es](https://avatars.githubusercontent.com/u/786213?v=4)](https://crates.io/users/de-vri-es) [![allan2](https://avatars.githubusercontent.com/u/6740989?v=4)](https://crates.io/users/allan2) memmap2 ======= ![Build Status](https://github.com/RazrFalcon/memmap2-rs/workflows/Rust/badge.svg) [![Crates.io](https://img.shields.io/crates/v/memmap2.svg)](https://crates.io/crates/memmap2) [![Documentation](https://docs.rs/memmap2/badge.svg)](https://docs.rs/memmap2) [![MSRV 1.63.0](https://img.shields.io/badge/msrv-1.63.0-dea584.svg?logo=rust)](https://github.com/rust-lang/rust/releases/tag/1.63.0) A Rust library for cross-platform memory mapped IO. This is a **fork** of the [memmap-rs](https://github.com/danburkert/memmap-rs) crate. Features -------- * [x] file-backed memory maps * [x] anonymous memory maps * [x] synchronous and asynchronous flushing * [x] copy-on-write memory maps * [x] read-only memory maps * [x] stack support (`MAP_STACK` on unix) * [x] executable memory maps * [x] huge page support (linux only) A list of supported/tested targets can be found in [Actions](https://github.com/RazrFalcon/memmap2-rs/actions) . License ------- `memmap2` is primarily distributed under the terms of both the MIT license and the Apache License (Version 2.0). See [LICENSE-APACHE](https://docs.rs/crate/memmap2/LICENSE-APACHE) , [LICENSE-MIT](https://docs.rs/crate/memmap2/LICENSE-MIT) for details. Copyright (c) 2020 Yevhenii Reizner Copyright (c) 2015 Dan Burkert --- # arrow-ord 58.1.0 - Docs.rs [Docs.rs](https://docs.rs/) * [arrow-ord-58.1.0](https://docs.rs/crate/arrow-ord/58.1.0 "Ordering kernels for arrow arrays") * [Platform](https://docs.rs/crate/arrow-ord/58.1.0/features#) * [aarch64-apple-darwin](https://docs.rs/arrow-ord/58.1.0/aarch64-apple-darwin/arrow_ord/) * [aarch64-unknown-linux-gnu](https://docs.rs/arrow-ord/58.1.0/aarch64-unknown-linux-gnu/arrow_ord/) * [i686-pc-windows-msvc](https://docs.rs/arrow-ord/58.1.0/i686-pc-windows-msvc/arrow_ord/) * [x86\_64-pc-windows-msvc](https://docs.rs/arrow-ord/58.1.0/x86_64-pc-windows-msvc/arrow_ord/) * [x86\_64-unknown-linux-gnu](https://docs.rs/arrow-ord/58.1.0/arrow_ord/) * [Feature flags](https://docs.rs/crate/arrow-ord/58.1.0/features "Browse available feature flags of arrow-ord-58.1.0") * [docs.rs](https://docs.rs/crate/arrow-ord/58.1.0/features#) * [About docs.rs](https://docs.rs/about) * [Badges](https://docs.rs/about/badges) * [Builds](https://docs.rs/about/builds) * [Metadata](https://docs.rs/about/metadata) * [Shorthand URLs](https://docs.rs/about/redirections) * [Download](https://docs.rs/about/download) * [Rustdoc JSON](https://docs.rs/about/rustdoc-json) * [Build queue](https://docs.rs/releases/queue) * [Privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#docs.rs) * [Rust](https://docs.rs/crate/arrow-ord/58.1.0/features#) * [Rust website](https://www.rust-lang.org/) * [The Book](https://doc.rust-lang.org/book/) * [Standard Library API Reference](https://doc.rust-lang.org/std/) * [Rust by Example](https://doc.rust-lang.org/rust-by-example/) * [The Cargo Guide](https://doc.rust-lang.org/cargo/guide/) * [Clippy Documentation](https://doc.rust-lang.org/nightly/clippy) arrow-ord 58.1.0 ================ Ordering kernels for arrow arrays * [Crate](https://docs.rs/crate/arrow-ord/58.1.0) * [Source](https://docs.rs/crate/arrow-ord/58.1.0/source/) * [Builds](https://docs.rs/crate/arrow-ord/58.1.0/builds) * [Feature flags](https://docs.rs/crate/arrow-ord/58.1.0/features) [Documentation](https://docs.rs/arrow-ord/58.1.0/arrow_ord/) * Feature flags * This release does not have any feature flags. arrow-ord ========= There is very little structured metadata to build this page from currently. You should check the [main library docs](https://docs.rs/arrow-ord/58.1.0/arrow_ord/) , [readme](https://docs.rs/crate/arrow-ord/58.1.0) , or [Cargo.toml](https://docs.rs/crate/arrow-ord/58.1.0/source/Cargo.toml.orig) in case the author documented the features in them. This release does not have any feature flags. --- # memmap2 0.9.10 - Docs.rs [Docs.rs](https://docs.rs/) * [memmap2-0.9.10](https://docs.rs/crate/memmap2/0.9.10 "Cross-platform Rust API for memory-mapped file IO") * [Platform](https://docs.rs/crate/memmap2/0.9.10/source/#) * [aarch64-apple-darwin](https://docs.rs/memmap2/0.9.10/aarch64-apple-darwin/memmap2/) * [aarch64-unknown-linux-gnu](https://docs.rs/memmap2/0.9.10/aarch64-unknown-linux-gnu/memmap2/) * [i686-pc-windows-msvc](https://docs.rs/memmap2/0.9.10/i686-pc-windows-msvc/memmap2/) * [x86\_64-pc-windows-msvc](https://docs.rs/memmap2/0.9.10/x86_64-pc-windows-msvc/memmap2/) * [x86\_64-unknown-linux-gnu](https://docs.rs/memmap2/0.9.10/memmap2/) * [Feature flags](https://docs.rs/crate/memmap2/0.9.10/features "Browse available feature flags of memmap2-0.9.10") * [docs.rs](https://docs.rs/crate/memmap2/0.9.10/source/#) * [About docs.rs](https://docs.rs/about) * [Badges](https://docs.rs/about/badges) * [Builds](https://docs.rs/about/builds) * [Metadata](https://docs.rs/about/metadata) * [Shorthand URLs](https://docs.rs/about/redirections) * [Download](https://docs.rs/about/download) * [Rustdoc JSON](https://docs.rs/about/rustdoc-json) * [Build queue](https://docs.rs/releases/queue) * [Privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#docs.rs) * [Rust](https://docs.rs/crate/memmap2/0.9.10/source/#) * [Rust website](https://www.rust-lang.org/) * [The Book](https://doc.rust-lang.org/book/) * [Standard Library API Reference](https://doc.rust-lang.org/std/) * [Rust by Example](https://doc.rust-lang.org/rust-by-example/) * [The Cargo Guide](https://doc.rust-lang.org/cargo/guide/) * [Clippy Documentation](https://doc.rust-lang.org/nightly/clippy) memmap2 0.9.10 ============== Cross-platform Rust API for memory-mapped file IO * [Crate](https://docs.rs/crate/memmap2/0.9.10) * [Source](https://docs.rs/crate/memmap2/0.9.10/source/) * [Builds](https://docs.rs/crate/memmap2/0.9.10/builds) * [Feature flags](https://docs.rs/crate/memmap2/0.9.10/features) [Documentation](https://docs.rs/memmap2/0.9.10/memmap2/) * [.github](https://docs.rs/crate/memmap2/0.9.10/source/.github/) * [examples](https://docs.rs/crate/memmap2/0.9.10/source/examples/) * [src](https://docs.rs/crate/memmap2/0.9.10/source/src/) * [.cargo\_vcs\_info.json](https://docs.rs/crate/memmap2/0.9.10/source/.cargo_vcs_info.json) * [.gitignore](https://docs.rs/crate/memmap2/0.9.10/source/.gitignore) * [Cargo.lock](https://docs.rs/crate/memmap2/0.9.10/source/Cargo.lock) * [Cargo.toml](https://docs.rs/crate/memmap2/0.9.10/source/Cargo.toml) * [Cargo.toml.orig](https://docs.rs/crate/memmap2/0.9.10/source/Cargo.toml.orig) * [CHANGELOG.md](https://docs.rs/crate/memmap2/0.9.10/source/CHANGELOG.md) * [LICENSE-APACHE](https://docs.rs/crate/memmap2/0.9.10/source/LICENSE-APACHE) * [LICENSE-MIT](https://docs.rs/crate/memmap2/0.9.10/source/LICENSE-MIT) * [README.md](https://docs.rs/crate/memmap2/0.9.10/source/README.md) --- # arrow 58.1.0 - Docs.rs [Docs.rs](https://docs.rs/) * [arrow-58.1.0](https://docs.rs/crate/arrow/latest "Rust implementation of Apache Arrow") * [Platform](https://docs.rs/crate/arrow/latest/source/Cargo.lock#) * [x86\_64-unknown-linux-gnu](https://docs.rs/arrow/latest/arrow/) * [Feature flags](https://docs.rs/crate/arrow/latest/features "Browse available feature flags of arrow-58.1.0") * [docs.rs](https://docs.rs/crate/arrow/latest/source/Cargo.lock#) * [About docs.rs](https://docs.rs/about) * [Badges](https://docs.rs/about/badges) * [Builds](https://docs.rs/about/builds) * [Metadata](https://docs.rs/about/metadata) * [Shorthand URLs](https://docs.rs/about/redirections) * [Download](https://docs.rs/about/download) * [Rustdoc JSON](https://docs.rs/about/rustdoc-json) * [Build queue](https://docs.rs/releases/queue) * [Privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#docs.rs) * [Rust](https://docs.rs/crate/arrow/latest/source/Cargo.lock#) * [Rust website](https://www.rust-lang.org/) * [The Book](https://doc.rust-lang.org/book/) * [Standard Library API Reference](https://doc.rust-lang.org/std/) * [Rust by Example](https://doc.rust-lang.org/rust-by-example/) * [The Cargo Guide](https://doc.rust-lang.org/cargo/guide/) * [Clippy Documentation](https://doc.rust-lang.org/nightly/clippy) arrow 58.1.0 ============ Rust implementation of Apache Arrow * [Crate](https://docs.rs/crate/arrow/latest) * [Source](https://docs.rs/crate/arrow/latest/source/Cargo.lock) * [Builds](https://docs.rs/crate/arrow/latest/builds) * [Feature flags](https://docs.rs/crate/arrow/latest/features) [Documentation](https://docs.rs/arrow/latest/arrow/) * Hide files * [benches](https://docs.rs/crate/arrow/latest/source/benches/) * [src](https://docs.rs/crate/arrow/latest/source/src/) * [tests](https://docs.rs/crate/arrow/latest/source/tests/) * [Cargo.lock](https://docs.rs/crate/arrow/latest/source/Cargo.lock) * [Cargo.toml](https://docs.rs/crate/arrow/latest/source/Cargo.toml) * [Cargo.toml.orig](https://docs.rs/crate/arrow/latest/source/Cargo.toml.orig) * [LICENSE.txt](https://docs.rs/crate/arrow/latest/source/LICENSE.txt) * [NOTICE.txt](https://docs.rs/crate/arrow/latest/source/NOTICE.txt) * [README.md](https://docs.rs/crate/arrow/latest/source/README.md) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 1296 1297 1298 1299 1300 1301 1302 1303 1304 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 1320 1321 1322 1323 1324 1325 1326 1327 1328 1329 1330 1331 1332 1333 1334 1335 1336 1337 1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 1362 1363 1364 1365 1366 1367 1368 1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379 1380 1381 1382 1383 1384 1385 1386 1387 1388 1389 1390 1391 1392 1393 1394 1395 1396 1397 1398 1399 1400 1401 1402 1403 1404 1405 1406 1407 1408 1409 1410 1411 1412 1413 1414 1415 1416 1417 1418 1419 1420 1421 1422 1423 1424 1425 1426 1427 1428 1429 1430 1431 1432 1433 1434 1435 1436 1437 1438 1439 1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 1450 1451 1452 1453 1454 1455 1456 1457 1458 1459 1460 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 1473 1474 1475 1476 1477 1478 1479 1480 1481 1482 1483 1484 1485 # This file is automatically @generated by Cargo. # It is not intended for manual editing. version = 4 [[package]] name = "ahash" version = "0.8.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75" dependencies = [\ "cfg-if",\ "const-random",\ "getrandom 0.3.4",\ "once_cell",\ "version_check",\ "zerocopy",\ ] [[package]] name = "aho-corasick" version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301" dependencies = [\ "memchr",\ ] [[package]] name = "alloca" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e5a7d05ea6aea7e9e64d25b9156ba2fee3fdd659e34e41063cd2fc7cd020d7f4" dependencies = [\ "cc",\ ] [[package]] name = "android_system_properties" version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" dependencies = [\ "libc",\ ] [[package]] name = "anes" version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299" [[package]] name = "anstyle" version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "940b3a0ca603d1eade50a4846a2afffd5ef57a9feac2c0e2ec2e14f9ead76000" [[package]] name = "arrow" version = "58.1.0" dependencies = [\ "arrow-arith",\ "arrow-array",\ "arrow-buffer",\ "arrow-cast",\ "arrow-csv",\ "arrow-data",\ "arrow-ipc",\ "arrow-json",\ "arrow-ord",\ "arrow-pyarrow",\ "arrow-row",\ "arrow-schema",\ "arrow-select",\ "arrow-string",\ "bytes",\ "chrono",\ "criterion",\ "half",\ "memmap2",\ "rand",\ "serde",\ ] [[package]] name = "arrow-arith" version = "58.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ced5406f8b720cc0bc3aa9cf5758f93e8593cda5490677aa194e4b4b383f9a59" dependencies = [\ "arrow-array",\ "arrow-buffer",\ "arrow-data",\ "arrow-schema",\ "chrono",\ "num-traits",\ ] [[package]] name = "arrow-array" version = "58.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "772bd34cacdda8baec9418d80d23d0fb4d50ef0735685bd45158b83dfeb6e62d" dependencies = [\ "ahash",\ "arrow-buffer",\ "arrow-data",\ "arrow-schema",\ "chrono",\ "chrono-tz",\ "futures",\ "half",\ "hashbrown",\ "num-complex",\ "num-integer",\ "num-traits",\ ] [[package]] name = "arrow-buffer" version = "58.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "898f4cf1e9598fdb77f356fdf2134feedfd0ee8d5a4e0a5f573e7d0aec16baa4" dependencies = [\ "bytes",\ "half",\ "num-bigint",\ "num-traits",\ ] [[package]] name = "arrow-cast" version = "58.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b0127816c96533d20fc938729f48c52d3e48f99717e7a0b5ade77d742510736d" dependencies = [\ "arrow-array",\ "arrow-buffer",\ "arrow-data",\ "arrow-ord",\ "arrow-schema",\ "arrow-select",\ "atoi",\ "base64",\ "chrono",\ "comfy-table",\ "half",\ "lexical-core",\ "num-traits",\ "ryu",\ ] [[package]] name = "arrow-csv" version = "58.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ca025bd0f38eeecb57c2153c0123b960494138e6a957bbda10da2b25415209fe" dependencies = [\ "arrow-array",\ "arrow-cast",\ "arrow-schema",\ "chrono",\ "csv",\ "csv-core",\ "regex",\ ] [[package]] name = "arrow-data" version = "58.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42d10beeab2b1c3bb0b53a00f7c944a178b622173a5c7bcabc3cb45d90238df4" dependencies = [\ "arrow-buffer",\ "arrow-schema",\ "half",\ "num-integer",\ "num-traits",\ ] [[package]] name = "arrow-ipc" version = "58.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "609a441080e338147a84e8e6904b6da482cefb957c5cdc0f3398872f69a315d0" dependencies = [\ "arrow-array",\ "arrow-buffer",\ "arrow-data",\ "arrow-schema",\ "arrow-select",\ "flatbuffers",\ "lz4_flex",\ "zstd",\ ] [[package]] name = "arrow-json" version = "58.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6ead0914e4861a531be48fe05858265cf854a4880b9ed12618b1d08cba9bebc8" dependencies = [\ "arrow-array",\ "arrow-buffer",\ "arrow-cast",\ "arrow-data",\ "arrow-schema",\ "chrono",\ "half",\ "indexmap",\ "itoa",\ "lexical-core",\ "memchr",\ "num-traits",\ "ryu",\ "serde_core",\ "serde_json",\ "simdutf8",\ ] [[package]] name = "arrow-ord" version = "58.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "763a7ba279b20b52dad300e68cfc37c17efa65e68623169076855b3a9e941ca5" dependencies = [\ "arrow-array",\ "arrow-buffer",\ "arrow-data",\ "arrow-schema",\ "arrow-select",\ ] [[package]] name = "arrow-pyarrow" version = "58.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e63351dc11981a316c828a6032a5021345bba882f68bc4a36c36825a50725089" dependencies = [\ "arrow-array",\ "arrow-data",\ "arrow-schema",\ "pyo3",\ ] [[package]] name = "arrow-row" version = "58.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e14fe367802f16d7668163ff647830258e6e0aeea9a4d79aaedf273af3bdcd3e" dependencies = [\ "arrow-array",\ "arrow-buffer",\ "arrow-data",\ "arrow-schema",\ "half",\ ] [[package]] name = "arrow-schema" version = "58.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c30a1365d7a7dc50cc847e54154e6af49e4c4b0fddc9f607b687f29212082743" dependencies = [\ "bitflags",\ "serde_core",\ "serde_json",\ ] [[package]] name = "arrow-select" version = "58.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "78694888660a9e8ac949853db393af2a8b8fc82c19ce333132dfa2e72cc1a7fe" dependencies = [\ "ahash",\ "arrow-array",\ "arrow-buffer",\ "arrow-data",\ "arrow-schema",\ "num-traits",\ ] [[package]] name = "arrow-string" version = "58.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "61e04a01f8bb73ce54437514c5fd3ee2aa3e8abe4c777ee5cc55853b1652f79e" dependencies = [\ "arrow-array",\ "arrow-buffer",\ "arrow-data",\ "arrow-schema",\ "arrow-select",\ "memchr",\ "num-traits",\ "regex",\ "regex-syntax",\ ] [[package]] name = "atoi" version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f28d99ec8bfea296261ca1af174f24225171fea9664ba9003cbebee704810528" dependencies = [\ "num-traits",\ ] [[package]] name = "autocfg" version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" [[package]] name = "base64" version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" [[package]] name = "bitflags" version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "843867be96c8daad0d758b57df9392b6d8d271134fce549de6ce169ff98a92af" [[package]] name = "bumpalo" version = "3.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5d20789868f4b01b2f2caec9f5c4e0213b41e3e5702a50157d699ae31ced2fcb" [[package]] name = "bytes" version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33" [[package]] name = "cast" version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5" [[package]] name = "cc" version = "1.2.57" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7a0dd1ca384932ff3641c8718a02769f1698e7563dc6974ffd03346116310423" dependencies = [\ "find-msvc-tools",\ "jobserver",\ "libc",\ "shlex",\ ] [[package]] name = "cfg-if" version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" [[package]] name = "chrono" version = "0.4.44" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c673075a2e0e5f4a1dde27ce9dee1ea4558c7ffe648f576438a20ca1d2acc4b0" dependencies = [\ "iana-time-zone",\ "num-traits",\ "windows-link",\ ] [[package]] name = "chrono-tz" version = "0.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a6139a8597ed92cf816dfb33f5dd6cf0bb93a6adc938f11039f371bc5bcd26c3" dependencies = [\ "chrono",\ "phf",\ ] [[package]] name = "ciborium" version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42e69ffd6f0917f5c029256a24d0161db17cea3997d185db0d35926308770f0e" dependencies = [\ "ciborium-io",\ "ciborium-ll",\ "serde",\ ] [[package]] name = "ciborium-io" version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "05afea1e0a06c9be33d539b876f1ce3692f4afea2cb41f740e7743225ed1c757" [[package]] name = "ciborium-ll" version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "57663b653d948a338bfb3eeba9bb2fd5fcfaecb9e199e87e1eda4d9e8b240fd9" dependencies = [\ "ciborium-io",\ "half",\ ] [[package]] name = "clap" version = "4.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b193af5b67834b676abd72466a96c1024e6a6ad978a1f484bd90b85c94041351" dependencies = [\ "clap_builder",\ ] [[package]] name = "clap_builder" version = "4.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "714a53001bf66416adb0e2ef5ac857140e7dc3a0c48fb28b2f10762fc4b5069f" dependencies = [\ "anstyle",\ "clap_lex",\ ] [[package]] name = "clap_lex" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c8d4a3bb8b1e0c1050499d1815f5ab16d04f0959b233085fb31653fbfc9d98f9" [[package]] name = "comfy-table" version = "7.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "958c5d6ecf1f214b4c2bbbbf6ab9523a864bd136dcf71a7e8904799acfe1ad47" dependencies = [\ "unicode-segmentation",\ "unicode-width",\ ] [[package]] name = "const-random" version = "0.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "87e00182fe74b066627d63b85fd550ac2998d4b0bd86bfed477a0ae4c7c71359" dependencies = [\ "const-random-macro",\ ] [[package]] name = "const-random-macro" version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f9d839f2a20b0aee515dc581a6172f2321f96cab76c1a38a4c584a194955390e" dependencies = [\ "getrandom 0.2.17",\ "once_cell",\ "tiny-keccak",\ ] [[package]] name = "core-foundation-sys" version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" [[package]] name = "criterion" version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "950046b2aa2492f9a536f5f4f9a3de7b9e2476e575e05bd6c333371add4d98f3" dependencies = [\ "alloca",\ "anes",\ "cast",\ "ciborium",\ "clap",\ "criterion-plot",\ "itertools",\ "num-traits",\ "oorandom",\ "page_size",\ "regex",\ "serde",\ "serde_json",\ "tinytemplate",\ "walkdir",\ ] [[package]] name = "criterion-plot" version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d8d80a2f4f5b554395e47b5d8305bc3d27813bacb73493eb1001e8f76dae29ea" dependencies = [\ "cast",\ "itertools",\ ] [[package]] name = "crunchy" version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" [[package]] name = "csv" version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "52cd9d68cf7efc6ddfaaee42e7288d3a99d613d4b50f76ce9827ae0c6e14f938" dependencies = [\ "csv-core",\ "itoa",\ "ryu",\ "serde_core",\ ] [[package]] name = "csv-core" version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "704a3c26996a80471189265814dbc2c257598b96b8a7feae2d31ace646bb9782" dependencies = [\ "memchr",\ ] [[package]] name = "either" version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" [[package]] name = "equivalent" version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" [[package]] name = "find-msvc-tools" version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" [[package]] name = "flatbuffers" version = "25.12.19" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "35f6839d7b3b98adde531effaf34f0c2badc6f4735d26fe74709d8e513a96ef3" dependencies = [\ "bitflags",\ "rustc_version",\ ] [[package]] name = "futures" version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b147ee9d1f6d097cef9ce628cd2ee62288d963e16fb287bd9286455b241382d" dependencies = [\ "futures-channel",\ "futures-core",\ "futures-executor",\ "futures-io",\ "futures-sink",\ "futures-task",\ "futures-util",\ ] [[package]] name = "futures-channel" version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "07bbe89c50d7a535e539b8c17bc0b49bdb77747034daa8087407d655f3f7cc1d" dependencies = [\ "futures-core",\ "futures-sink",\ ] [[package]] name = "futures-core" version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7e3450815272ef58cec6d564423f6e755e25379b217b0bc688e295ba24df6b1d" [[package]] name = "futures-executor" version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf29c38818342a3b26b5b923639e7b1f4a61fc5e76102d4b1981c6dc7a7579d" dependencies = [\ "futures-core",\ "futures-task",\ "futures-util",\ ] [[package]] name = "futures-io" version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cecba35d7ad927e23624b22ad55235f2239cfa44fd10428eecbeba6d6a717718" [[package]] name = "futures-macro" version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e835b70203e41293343137df5c0664546da5745f82ec9b84d40be8336958447b" dependencies = [\ "proc-macro2",\ "quote",\ "syn",\ ] [[package]] name = "futures-sink" version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c39754e157331b013978ec91992bde1ac089843443c49cbc7f46150b0fad0893" [[package]] name = "futures-task" version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "037711b3d59c33004d3856fbdc83b99d4ff37a24768fa1be9ce3538a1cde4393" [[package]] name = "futures-util" version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "389ca41296e6190b48053de0321d02a77f32f8a5d2461dd38762c0593805c6d6" dependencies = [\ "futures-channel",\ "futures-core",\ "futures-io",\ "futures-macro",\ "futures-sink",\ "futures-task",\ "memchr",\ "pin-project-lite",\ "slab",\ ] [[package]] name = "getrandom" version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0" dependencies = [\ "cfg-if",\ "libc",\ "wasi",\ ] [[package]] name = "getrandom" version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" dependencies = [\ "cfg-if",\ "libc",\ "r-efi",\ "wasip2",\ ] [[package]] name = "half" version = "2.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6ea2d84b969582b4b1864a92dc5d27cd2b77b622a8d79306834f1be5ba20d84b" dependencies = [\ "cfg-if",\ "crunchy",\ "num-traits",\ "rand",\ "rand_distr",\ "zerocopy",\ ] [[package]] name = "hashbrown" version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" [[package]] name = "iana-time-zone" version = "0.1.65" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e31bc9ad994ba00e440a8aa5c9ef0ec67d5cb5e5cb0cc7f8b744a35b389cc470" dependencies = [\ "android_system_properties",\ "core-foundation-sys",\ "iana-time-zone-haiku",\ "js-sys",\ "log",\ "wasm-bindgen",\ "windows-core",\ ] [[package]] name = "iana-time-zone-haiku" version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" dependencies = [\ "cc",\ ] [[package]] name = "indexmap" version = "2.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7714e70437a7dc3ac8eb7e6f8df75fd8eb422675fc7678aff7364301092b1017" dependencies = [\ "equivalent",\ "hashbrown",\ ] [[package]] name = "itertools" version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" dependencies = [\ "either",\ ] [[package]] name = "itoa" version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" [[package]] name = "jobserver" version = "0.1.34" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33" dependencies = [\ "getrandom 0.3.4",\ "libc",\ ] [[package]] name = "js-sys" version = "0.3.91" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b49715b7073f385ba4bc528e5747d02e66cb39c6146efb66b781f131f0fb399c" dependencies = [\ "once_cell",\ "wasm-bindgen",\ ] [[package]] name = "lexical-core" version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7d8d125a277f807e55a77304455eb7b1cb52f2b18c143b60e766c120bd64a594" dependencies = [\ "lexical-parse-float",\ "lexical-parse-integer",\ "lexical-util",\ "lexical-write-float",\ "lexical-write-integer",\ ] [[package]] name = "lexical-parse-float" version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "52a9f232fbd6f550bc0137dcb5f99ab674071ac2d690ac69704593cb4abbea56" dependencies = [\ "lexical-parse-integer",\ "lexical-util",\ ] [[package]] name = "lexical-parse-integer" version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9a7a039f8fb9c19c996cd7b2fcce303c1b2874fe1aca544edc85c4a5f8489b34" dependencies = [\ "lexical-util",\ ] [[package]] name = "lexical-util" version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2604dd126bb14f13fb5d1bd6a66155079cb9fa655b37f875b3a742c705dbed17" [[package]] name = "lexical-write-float" version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "50c438c87c013188d415fbabbb1dceb44249ab81664efbd31b14ae55dabb6361" dependencies = [\ "lexical-util",\ "lexical-write-integer",\ ] [[package]] name = "lexical-write-integer" version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "409851a618475d2d5796377cad353802345cba92c867d9fbcde9cf4eac4e14df" dependencies = [\ "lexical-util",\ ] [[package]] name = "libc" version = "0.2.183" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b5b646652bf6661599e1da8901b3b9522896f01e736bad5f723fe7a3a27f899d" [[package]] name = "libm" version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b6d2cec3eae94f9f509c767b45932f1ada8350c4bdb85af2fcab4a3c14807981" [[package]] name = "log" version = "0.4.29" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" [[package]] name = "lz4_flex" version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "db9a0d582c2874f68138a16ce1867e0ffde6c0bb0a0df85e1f36d04146db488a" dependencies = [\ "twox-hash",\ ] [[package]] name = "memchr" version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79" [[package]] name = "memmap2" version = "0.9.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "714098028fe011992e1c3962653c96b2d578c4b4bce9036e15ff220319b1e0e3" dependencies = [\ "libc",\ ] [[package]] name = "num-bigint" version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" dependencies = [\ "num-integer",\ "num-traits",\ ] [[package]] name = "num-complex" version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495" dependencies = [\ "num-traits",\ ] [[package]] name = "num-integer" version = "0.1.46" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" dependencies = [\ "num-traits",\ ] [[package]] name = "num-traits" version = "0.2.19" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" dependencies = [\ "autocfg",\ "libm",\ ] [[package]] name = "once_cell" version = "1.21.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50" [[package]] name = "oorandom" version = "11.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d6790f58c7ff633d8771f42965289203411a5e5c68388703c06e14f24770b41e" [[package]] name = "page_size" version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "30d5b2194ed13191c1999ae0704b7839fb18384fa22e49b57eeaa97d79ce40da" dependencies = [\ "libc",\ "winapi",\ ] [[package]] name = "phf" version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "913273894cec178f401a31ec4b656318d95473527be05c0752cc41cdc32be8b7" dependencies = [\ "phf_shared",\ ] [[package]] name = "phf_shared" version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "06005508882fb681fd97892ecff4b7fd0fee13ef1aa569f8695dae7ab9099981" dependencies = [\ "siphasher",\ ] [[package]] name = "pin-project-lite" version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" [[package]] name = "pkg-config" version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" [[package]] name = "portable-atomic" version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c33a9471896f1c69cecef8d20cbe2f7accd12527ce60845ff44c153bb2a21b49" [[package]] name = "ppv-lite86" version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" dependencies = [\ "zerocopy",\ ] [[package]] name = "proc-macro2" version = "1.0.106" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934" dependencies = [\ "unicode-ident",\ ] [[package]] name = "pyo3" version = "0.28.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cf85e27e86080aafd5a22eae58a162e133a589551542b3e5cee4beb27e54f8e1" dependencies = [\ "libc",\ "once_cell",\ "portable-atomic",\ "pyo3-build-config",\ "pyo3-ffi",\ ] [[package]] name = "pyo3-build-config" version = "0.28.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8bf94ee265674bf76c09fa430b0e99c26e319c945d96ca0d5a8215f31bf81cf7" dependencies = [\ "target-lexicon",\ ] [[package]] name = "pyo3-ffi" version = "0.28.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "491aa5fc66d8059dd44a75f4580a2962c1862a1c2945359db36f6c2818b748dc" dependencies = [\ "libc",\ "pyo3-build-config",\ ] [[package]] name = "quote" version = "1.0.45" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924" dependencies = [\ "proc-macro2",\ ] [[package]] name = "r-efi" version = "5.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" [[package]] name = "rand" version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1" dependencies = [\ "rand_chacha",\ "rand_core",\ ] [[package]] name = "rand_chacha" version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" dependencies = [\ "ppv-lite86",\ "rand_core",\ ] [[package]] name = "rand_core" version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "76afc826de14238e6e8c374ddcc1fa19e374fd8dd986b0d2af0d02377261d83c" dependencies = [\ "getrandom 0.3.4",\ ] [[package]] name = "rand_distr" version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a8615d50dcf34fa31f7ab52692afec947c4dd0ab803cc87cb3b0b4570ff7463" dependencies = [\ "num-traits",\ "rand",\ ] [[package]] name = "regex" version = "1.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e10754a14b9137dd7b1e3e5b0493cc9171fdd105e0ab477f51b72e7f3ac0e276" dependencies = [\ "aho-corasick",\ "memchr",\ "regex-automata",\ "regex-syntax",\ ] [[package]] name = "regex-automata" version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f" dependencies = [\ "aho-corasick",\ "memchr",\ "regex-syntax",\ ] [[package]] name = "regex-syntax" version = "0.8.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a" [[package]] name = "rustc_version" version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" dependencies = [\ "semver",\ ] [[package]] name = "rustversion" version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" [[package]] name = "ryu" version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9774ba4a74de5f7b1c1451ed6cd5285a32eddb5cccb8cc655a4e50009e06477f" [[package]] name = "same-file" version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" dependencies = [\ "winapi-util",\ ] [[package]] name = "semver" version = "1.0.27" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2" [[package]] name = "serde" version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" dependencies = [\ "serde_core",\ "serde_derive",\ ] [[package]] name = "serde_core" version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" dependencies = [\ "serde_derive",\ ] [[package]] name = "serde_derive" version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [\ "proc-macro2",\ "quote",\ "syn",\ ] [[package]] name = "serde_json" version = "1.0.149" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86" dependencies = [\ "itoa",\ "memchr",\ "serde",\ "serde_core",\ "zmij",\ ] [[package]] name = "shlex" version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" [[package]] name = "simdutf8" version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e3a9fe34e3e7a50316060351f37187a3f546bce95496156754b601a5fa71b76e" [[package]] name = "siphasher" version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b2aa850e253778c88a04c3d7323b043aeda9d3e30d5971937c1855769763678e" [[package]] name = "slab" version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" [[package]] name = "syn" version = "2.0.117" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99" dependencies = [\ "proc-macro2",\ "quote",\ "unicode-ident",\ ] [[package]] name = "target-lexicon" version = "0.13.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "adb6935a6f5c20170eeceb1a3835a49e12e19d792f6dd344ccc76a985ca5a6ca" [[package]] name = "tiny-keccak" version = "2.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237" dependencies = [\ "crunchy",\ ] [[package]] name = "tinytemplate" version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "be4d6b5f19ff7664e8c98d03e2139cb510db9b0a60b55f8e8709b689d939b6bc" dependencies = [\ "serde",\ "serde_json",\ ] [[package]] name = "twox-hash" version = "2.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ea3136b675547379c4bd395ca6b938e5ad3c3d20fad76e7fe85f9e0d011419c" [[package]] name = "unicode-ident" version = "1.0.24" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" [[package]] name = "unicode-segmentation" version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" [[package]] name = "unicode-width" version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4ac048d71ede7ee76d585517add45da530660ef4390e49b098733c6e897f254" [[package]] name = "version_check" version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" [[package]] name = "walkdir" version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" dependencies = [\ "same-file",\ "winapi-util",\ ] [[package]] name = "wasi" version = "0.11.1+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" [[package]] name = "wasip2" version = "1.0.2+wasi-0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9517f9239f02c069db75e65f174b3da828fe5f5b945c4dd26bd25d89c03ebcf5" dependencies = [\ "wit-bindgen",\ ] [[package]] name = "wasm-bindgen" version = "0.2.114" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6532f9a5c1ece3798cb1c2cfdba640b9b3ba884f5db45973a6f442510a87d38e" dependencies = [\ "cfg-if",\ "once_cell",\ "rustversion",\ "wasm-bindgen-macro",\ "wasm-bindgen-shared",\ ] [[package]] name = "wasm-bindgen-macro" version = "0.2.114" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "18a2d50fcf105fb33bb15f00e7a77b772945a2ee45dcf454961fd843e74c18e6" dependencies = [\ "quote",\ "wasm-bindgen-macro-support",\ ] [[package]] name = "wasm-bindgen-macro-support" version = "0.2.114" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "03ce4caeaac547cdf713d280eda22a730824dd11e6b8c3ca9e42247b25c631e3" dependencies = [\ "bumpalo",\ "proc-macro2",\ "quote",\ "syn",\ "wasm-bindgen-shared",\ ] [[package]] name = "wasm-bindgen-shared" version = "0.2.114" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "75a326b8c223ee17883a4251907455a2431acc2791c98c26279376490c378c16" dependencies = [\ "unicode-ident",\ ] [[package]] name = "winapi" version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" dependencies = [\ "winapi-i686-pc-windows-gnu",\ "winapi-x86_64-pc-windows-gnu",\ ] [[package]] name = "winapi-i686-pc-windows-gnu" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] name = "winapi-util" version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" dependencies = [\ "windows-sys",\ ] [[package]] name = "winapi-x86_64-pc-windows-gnu" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "windows-core" version = "0.62.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb" dependencies = [\ "windows-implement",\ "windows-interface",\ "windows-link",\ "windows-result",\ "windows-strings",\ ] [[package]] name = "windows-implement" version = "0.60.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" dependencies = [\ "proc-macro2",\ "quote",\ "syn",\ ] [[package]] name = "windows-interface" version = "0.59.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" dependencies = [\ "proc-macro2",\ "quote",\ "syn",\ ] [[package]] name = "windows-link" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" [[package]] name = "windows-result" version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5" dependencies = [\ "windows-link",\ ] [[package]] name = "windows-strings" version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091" dependencies = [\ "windows-link",\ ] [[package]] name = "windows-sys" version = "0.61.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" dependencies = [\ "windows-link",\ ] [[package]] name = "wit-bindgen" version = "0.51.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5" [[package]] name = "zerocopy" version = "0.8.47" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "efbb2a062be311f2ba113ce66f697a4dc589f85e78a4aea276200804cea0ed87" dependencies = [\ "zerocopy-derive",\ ] [[package]] name = "zerocopy-derive" version = "0.8.47" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0e8bc7269b54418e7aeeef514aa68f8690b8c0489a06b0136e5f57c4c5ccab89" dependencies = [\ "proc-macro2",\ "quote",\ "syn",\ ] [[package]] name = "zmij" version = "1.0.21" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa" [[package]] name = "zstd" version = "0.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e91ee311a569c327171651566e07972200e76fcfe2242a4fa446149a3881c08a" dependencies = [\ "zstd-safe",\ ] [[package]] name = "zstd-safe" version = "7.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8f49c4d5f0abb602a93fb8736af2a4f4dd9512e36f7f570d66e65ff867ed3b9d" dependencies = [\ "zstd-sys",\ ] [[package]] name = "zstd-sys" version = "2.0.16+zstd.1.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "91e19ebc2adc8f83e43039e79776e3fda8ca919132d68a1fed6a5faca2683748" dependencies = [\ "cc",\ "pkg-config",\ ] --- # arrow 58.1.0 - Docs.rs [Docs.rs](https://docs.rs/) * [arrow-58.1.0](https://docs.rs/crate/arrow/latest "Rust implementation of Apache Arrow") * [Platform](https://docs.rs/crate/arrow/latest/source/LICENSE.txt#) * [x86\_64-unknown-linux-gnu](https://docs.rs/arrow/latest/arrow/) * [Feature flags](https://docs.rs/crate/arrow/latest/features "Browse available feature flags of arrow-58.1.0") * [docs.rs](https://docs.rs/crate/arrow/latest/source/LICENSE.txt#) * [About docs.rs](https://docs.rs/about) * [Badges](https://docs.rs/about/badges) * [Builds](https://docs.rs/about/builds) * [Metadata](https://docs.rs/about/metadata) * [Shorthand URLs](https://docs.rs/about/redirections) * [Download](https://docs.rs/about/download) * [Rustdoc JSON](https://docs.rs/about/rustdoc-json) * [Build queue](https://docs.rs/releases/queue) * [Privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#docs.rs) * [Rust](https://docs.rs/crate/arrow/latest/source/LICENSE.txt#) * [Rust website](https://www.rust-lang.org/) * [The Book](https://doc.rust-lang.org/book/) * [Standard Library API Reference](https://doc.rust-lang.org/std/) * [Rust by Example](https://doc.rust-lang.org/rust-by-example/) * [The Cargo Guide](https://doc.rust-lang.org/cargo/guide/) * [Clippy Documentation](https://doc.rust-lang.org/nightly/clippy) arrow 58.1.0 ============ Rust implementation of Apache Arrow * [Crate](https://docs.rs/crate/arrow/latest) * [Source](https://docs.rs/crate/arrow/latest/source/LICENSE.txt) * [Builds](https://docs.rs/crate/arrow/latest/builds) * [Feature flags](https://docs.rs/crate/arrow/latest/features) [Documentation](https://docs.rs/arrow/latest/arrow/) * Hide files * [benches](https://docs.rs/crate/arrow/latest/source/benches/) * [src](https://docs.rs/crate/arrow/latest/source/src/) * [tests](https://docs.rs/crate/arrow/latest/source/tests/) * [Cargo.lock](https://docs.rs/crate/arrow/latest/source/Cargo.lock) * [Cargo.toml](https://docs.rs/crate/arrow/latest/source/Cargo.toml) * [Cargo.toml.orig](https://docs.rs/crate/arrow/latest/source/Cargo.toml.orig) * [LICENSE.txt](https://docs.rs/crate/arrow/latest/source/LICENSE.txt) * [NOTICE.txt](https://docs.rs/crate/arrow/latest/source/NOTICE.txt) * [README.md](https://docs.rs/crate/arrow/latest/source/README.md) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. --- # arrow_ord::cmp - Rust [Docs.rs](https://docs.rs/) * [arrow-ord-58.1.0](https://docs.rs/arrow-ord/58.1.0/arrow_ord/cmp/index.html# "Ordering kernels for arrow arrays") * arrow-ord 58.1.0 * [Docs.rs crate page](https://docs.rs/crate/arrow-ord/58.1.0 "See arrow-ord in docs.rs") * [Apache-2.0](https://spdx.org/licenses/Apache-2.0) * Links * [Homepage](https://github.com/apache/arrow-rs) * [Repository](https://github.com/apache/arrow-rs) * [crates.io](https://crates.io/crates/arrow-ord "See arrow-ord in crates.io") * [Source](https://docs.rs/crate/arrow-ord/58.1.0/source/ "Browse source of arrow-ord-58.1.0") * Owners * [andygrove](https://crates.io/users/andygrove) * [kou](https://crates.io/users/kou) * [xhochy](https://crates.io/users/xhochy) * [nevi-me](https://crates.io/users/nevi-me) * [alamb](https://crates.io/users/alamb) * [tustvold](https://crates.io/users/tustvold) * Dependencies * * [arrow-array ^58.1.0 _normal_](https://docs.rs/arrow-array/^58.1.0/) * [arrow-buffer ^58.1.0 _normal_](https://docs.rs/arrow-buffer/^58.1.0/) * [arrow-data ^58.1.0 _normal_](https://docs.rs/arrow-data/^58.1.0/) * [arrow-schema ^58.1.0 _normal_](https://docs.rs/arrow-schema/^58.1.0/) * [arrow-select ^58.1.0 _normal_](https://docs.rs/arrow-select/^58.1.0/) * [half ^2.1 _dev_](https://docs.rs/half/^2.1/) * [rand ^0.9 _dev_](https://docs.rs/rand/^0.9/) * Versions * [**100%** of the crate is documented](https://docs.rs/crate/arrow-ord/58.1.0) * [Platform](https://docs.rs/arrow-ord/58.1.0/arrow_ord/cmp/index.html#) * [aarch64-apple-darwin](https://docs.rs/crate/arrow-ord/58.1.0/target-redirect/aarch64-apple-darwin/arrow_ord/cmp/) * [aarch64-unknown-linux-gnu](https://docs.rs/crate/arrow-ord/58.1.0/target-redirect/aarch64-unknown-linux-gnu/arrow_ord/cmp/) * [i686-pc-windows-msvc](https://docs.rs/crate/arrow-ord/58.1.0/target-redirect/i686-pc-windows-msvc/arrow_ord/cmp/) * [x86\_64-pc-windows-msvc](https://docs.rs/crate/arrow-ord/58.1.0/target-redirect/x86_64-pc-windows-msvc/arrow_ord/cmp/) * [x86\_64-unknown-linux-gnu](https://docs.rs/crate/arrow-ord/58.1.0/target-redirect/arrow_ord/cmp/) * [Feature flags](https://docs.rs/crate/arrow-ord/58.1.0/features "Browse available feature flags of arrow-ord-58.1.0") * [docs.rs](https://docs.rs/arrow-ord/58.1.0/arrow_ord/cmp/index.html#) * [About docs.rs](https://docs.rs/about) * [Badges](https://docs.rs/about/badges) * [Builds](https://docs.rs/about/builds) * [Metadata](https://docs.rs/about/metadata) * [Shorthand URLs](https://docs.rs/about/redirections) * [Download](https://docs.rs/about/download) * [Rustdoc JSON](https://docs.rs/about/rustdoc-json) * [Build queue](https://docs.rs/releases/queue) * [Privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#docs.rs) * [Rust](https://docs.rs/arrow-ord/58.1.0/arrow_ord/cmp/index.html#) * [Rust website](https://www.rust-lang.org/) * [The Book](https://doc.rust-lang.org/book/) * [Standard Library API Reference](https://doc.rust-lang.org/std/) * [Rust by Example](https://doc.rust-lang.org/rust-by-example/) * [The Cargo Guide](https://doc.rust-lang.org/cargo/guide/) * [Clippy Documentation](https://doc.rust-lang.org/nightly/clippy) [Skip to main content](https://docs.rs/arrow-ord/58.1.0/arrow_ord/cmp/index.html#main-content) [Module cmp](https://docs.rs/arrow-ord/58.1.0/arrow_ord/cmp/index.html#) ------------------------------------------------------------------------- [arrow\_ord](https://docs.rs/arrow-ord/58.1.0/arrow_ord/index.html) Module cmp Copy item path ========================= [Source](https://docs.rs/arrow-ord/58.1.0/src/arrow_ord/cmp.rs.html#18-1069) Expand description Comparison kernels for `Array`s. These kernels can leverage SIMD if available on your system. Currently no runtime detection is provided, you should enable the specific SIMD intrinsics using `RUSTFLAGS="-C target-feature=+avx2"` for example. See the documentation [here](https://doc.rust-lang.org/stable/core/arch/) for more information. Functions[§](https://docs.rs/arrow-ord/58.1.0/arrow_ord/cmp/index.html#functions) ---------------------------------------------------------------------------------- [compare\_byte\_view](https://docs.rs/arrow-ord/58.1.0/arrow_ord/cmp/fn.compare_byte_view.html "fn arrow_ord::cmp::compare_byte_view") Compares two [`GenericByteViewArray`](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/arrow_array/array/byte_view_array/struct.GenericByteViewArray.html "struct arrow_array::array::byte_view_array::GenericByteViewArray") at index `left_idx` and `right_idx` [distinct](https://docs.rs/arrow-ord/58.1.0/arrow_ord/cmp/fn.distinct.html "fn arrow_ord::cmp::distinct") Perform `left IS DISTINCT FROM right` operation on two [`Datum`](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/arrow_array/scalar/trait.Datum.html "trait arrow_array::scalar::Datum") [eq](https://docs.rs/arrow-ord/58.1.0/arrow_ord/cmp/fn.eq.html "fn arrow_ord::cmp::eq") Perform `left == right` operation on two [`Datum`](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/arrow_array/scalar/trait.Datum.html "trait arrow_array::scalar::Datum") . [gt](https://docs.rs/arrow-ord/58.1.0/arrow_ord/cmp/fn.gt.html "fn arrow_ord::cmp::gt") Perform `left > right` operation on two [`Datum`](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/arrow_array/scalar/trait.Datum.html "trait arrow_array::scalar::Datum") . [gt\_eq](https://docs.rs/arrow-ord/58.1.0/arrow_ord/cmp/fn.gt_eq.html "fn arrow_ord::cmp::gt_eq") Perform `left >= right` operation on two [`Datum`](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/arrow_array/scalar/trait.Datum.html "trait arrow_array::scalar::Datum") . [lt](https://docs.rs/arrow-ord/58.1.0/arrow_ord/cmp/fn.lt.html "fn arrow_ord::cmp::lt") Perform `left < right` operation on two [`Datum`](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/arrow_array/scalar/trait.Datum.html "trait arrow_array::scalar::Datum") . [lt\_eq](https://docs.rs/arrow-ord/58.1.0/arrow_ord/cmp/fn.lt_eq.html "fn arrow_ord::cmp::lt_eq") Perform `left <= right` operation on two [`Datum`](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/arrow_array/scalar/trait.Datum.html "trait arrow_array::scalar::Datum") . [neq](https://docs.rs/arrow-ord/58.1.0/arrow_ord/cmp/fn.neq.html "fn arrow_ord::cmp::neq") Perform `left != right` operation on two [`Datum`](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/arrow_array/scalar/trait.Datum.html "trait arrow_array::scalar::Datum") . [not\_distinct](https://docs.rs/arrow-ord/58.1.0/arrow_ord/cmp/fn.not_distinct.html "fn arrow_ord::cmp::not_distinct") Perform `left IS NOT DISTINCT FROM right` operation on two [`Datum`](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/arrow_array/scalar/trait.Datum.html "trait arrow_array::scalar::Datum") --- # arrow_arith::arity - Rust [Docs.rs](https://docs.rs/) * [arrow-arith-58.1.0](https://docs.rs/arrow-arith/58.1.0/arrow_arith/arity/index.html# "Arrow arithmetic kernels") * arrow-arith 58.1.0 * [Docs.rs crate page](https://docs.rs/crate/arrow-arith/58.1.0 "See arrow-arith in docs.rs") * [Apache-2.0](https://spdx.org/licenses/Apache-2.0) * Links * [Homepage](https://github.com/apache/arrow-rs) * [Repository](https://github.com/apache/arrow-rs) * [crates.io](https://crates.io/crates/arrow-arith "See arrow-arith in crates.io") * [Source](https://docs.rs/crate/arrow-arith/58.1.0/source/ "Browse source of arrow-arith-58.1.0") * Owners * [kou](https://crates.io/users/kou) * [xhochy](https://crates.io/users/xhochy) * [nevi-me](https://crates.io/users/nevi-me) * [alamb](https://crates.io/users/alamb) * [tustvold](https://crates.io/users/tustvold) * Dependencies * * [arrow-array ^58.1.0 _normal_](https://docs.rs/arrow-array/^58.1.0/) * [arrow-buffer ^58.1.0 _normal_](https://docs.rs/arrow-buffer/^58.1.0/) * [arrow-data ^58.1.0 _normal_](https://docs.rs/arrow-data/^58.1.0/) * [arrow-schema ^58.1.0 _normal_](https://docs.rs/arrow-schema/^58.1.0/) * [chrono ^0.4.40 _normal_](https://docs.rs/chrono/^0.4.40/) * [num-traits ^0.2.19 _normal_](https://docs.rs/num-traits/^0.2.19/) * Versions * [**100%** of the crate is documented](https://docs.rs/crate/arrow-arith/58.1.0) * [Platform](https://docs.rs/arrow-arith/58.1.0/arrow_arith/arity/index.html#) * [aarch64-apple-darwin](https://docs.rs/crate/arrow-arith/58.1.0/target-redirect/aarch64-apple-darwin/arrow_arith/arity/) * [aarch64-unknown-linux-gnu](https://docs.rs/crate/arrow-arith/58.1.0/target-redirect/aarch64-unknown-linux-gnu/arrow_arith/arity/) * [i686-pc-windows-msvc](https://docs.rs/crate/arrow-arith/58.1.0/target-redirect/i686-pc-windows-msvc/arrow_arith/arity/) * [x86\_64-pc-windows-msvc](https://docs.rs/crate/arrow-arith/58.1.0/target-redirect/x86_64-pc-windows-msvc/arrow_arith/arity/) * [x86\_64-unknown-linux-gnu](https://docs.rs/crate/arrow-arith/58.1.0/target-redirect/arrow_arith/arity/) * [Feature flags](https://docs.rs/crate/arrow-arith/58.1.0/features "Browse available feature flags of arrow-arith-58.1.0") * [docs.rs](https://docs.rs/arrow-arith/58.1.0/arrow_arith/arity/index.html#) * [About docs.rs](https://docs.rs/about) * [Badges](https://docs.rs/about/badges) * [Builds](https://docs.rs/about/builds) * [Metadata](https://docs.rs/about/metadata) * [Shorthand URLs](https://docs.rs/about/redirections) * [Download](https://docs.rs/about/download) * [Rustdoc JSON](https://docs.rs/about/rustdoc-json) * [Build queue](https://docs.rs/releases/queue) * [Privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#docs.rs) * [Rust](https://docs.rs/arrow-arith/58.1.0/arrow_arith/arity/index.html#) * [Rust website](https://www.rust-lang.org/) * [The Book](https://doc.rust-lang.org/book/) * [Standard Library API Reference](https://doc.rust-lang.org/std/) * [Rust by Example](https://doc.rust-lang.org/rust-by-example/) * [The Cargo Guide](https://doc.rust-lang.org/cargo/guide/) * [Clippy Documentation](https://doc.rust-lang.org/nightly/clippy) [Skip to main content](https://docs.rs/arrow-arith/58.1.0/arrow_arith/arity/index.html#main-content) [Module arity](https://docs.rs/arrow-arith/58.1.0/arrow_arith/arity/index.html#) --------------------------------------------------------------------------------- [arrow\_arith](https://docs.rs/arrow-arith/58.1.0/arrow_arith/index.html) Module arity Copy item path =========================== [Source](https://docs.rs/arrow-arith/58.1.0/src/arrow_arith/arity.rs.html#18-528) Expand description Kernels for operating on [`PrimitiveArray`](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/arrow_array/array/primitive_array/struct.PrimitiveArray.html "struct arrow_array::array::primitive_array::PrimitiveArray") s Functions[§](https://docs.rs/arrow-arith/58.1.0/arrow_arith/arity/index.html#functions) ---------------------------------------------------------------------------------------- [binary](https://docs.rs/arrow-arith/58.1.0/arrow_arith/arity/fn.binary.html "fn arrow_arith::arity::binary") Allies a binary infallable function to two [`PrimitiveArray`](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/arrow_array/array/primitive_array/struct.PrimitiveArray.html "struct arrow_array::array::primitive_array::PrimitiveArray") s, producing a new [`PrimitiveArray`](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/arrow_array/array/primitive_array/struct.PrimitiveArray.html "struct arrow_array::array::primitive_array::PrimitiveArray") [binary\_mut](https://docs.rs/arrow-arith/58.1.0/arrow_arith/arity/fn.binary_mut.html "fn arrow_arith::arity::binary_mut") Applies a binary and infallible function to values in two arrays, replacing the values in the first array in place. [try\_binary](https://docs.rs/arrow-arith/58.1.0/arrow_arith/arity/fn.try_binary.html "fn arrow_arith::arity::try_binary") Applies the provided fallible binary operation across `a` and `b`. [try\_binary\_mut](https://docs.rs/arrow-arith/58.1.0/arrow_arith/arity/fn.try_binary_mut.html "fn arrow_arith::arity::try_binary_mut") Applies the provided fallible binary operation across `a` and `b` by mutating the mutable [`PrimitiveArray`](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/arrow_array/array/primitive_array/struct.PrimitiveArray.html "struct arrow_array::array::primitive_array::PrimitiveArray") `a` with the results. [try\_unary](https://docs.rs/arrow-arith/58.1.0/arrow_arith/arity/fn.try_unary.html "fn arrow_arith::arity::try_unary") See [`PrimitiveArray::try_unary`](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/arrow_array/array/primitive_array/struct.PrimitiveArray.html#method.try_unary "method arrow_array::array::primitive_array::PrimitiveArray::try_unary") [try\_unary\_mut](https://docs.rs/arrow-arith/58.1.0/arrow_arith/arity/fn.try_unary_mut.html "fn arrow_arith::arity::try_unary_mut") See [`PrimitiveArray::try_unary_mut`](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/arrow_array/array/primitive_array/struct.PrimitiveArray.html#method.try_unary_mut "method arrow_array::array::primitive_array::PrimitiveArray::try_unary_mut") [unary](https://docs.rs/arrow-arith/58.1.0/arrow_arith/arity/fn.unary.html "fn arrow_arith::arity::unary") See [`PrimitiveArray::unary`](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/arrow_array/array/primitive_array/struct.PrimitiveArray.html#method.unary "method arrow_array::array::primitive_array::PrimitiveArray::unary") [unary\_mut](https://docs.rs/arrow-arith/58.1.0/arrow_arith/arity/fn.unary_mut.html "fn arrow_arith::arity::unary_mut") See [`PrimitiveArray::unary_mut`](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/arrow_array/array/primitive_array/struct.PrimitiveArray.html#method.unary_mut "method arrow_array::array::primitive_array::PrimitiveArray::unary_mut") --- # List of all items in this crate [Docs.rs](https://docs.rs/) * [arrow-select-58.1.0](https://docs.rs/arrow-select/58.1.0/arrow_select/all.html# "Selection kernels for arrow arrays") * arrow-select 58.1.0 * [Docs.rs crate page](https://docs.rs/crate/arrow-select/58.1.0 "See arrow-select in docs.rs") * [Apache-2.0](https://spdx.org/licenses/Apache-2.0) * Links * [Homepage](https://github.com/apache/arrow-rs) * [Repository](https://github.com/apache/arrow-rs) * [crates.io](https://crates.io/crates/arrow-select "See arrow-select in crates.io") * [Source](https://docs.rs/crate/arrow-select/58.1.0/source/ "Browse source of arrow-select-58.1.0") * Owners * [kou](https://crates.io/users/kou) * [kszucs](https://crates.io/users/kszucs) * [xhochy](https://crates.io/users/xhochy) * [nevi-me](https://crates.io/users/nevi-me) * [alamb](https://crates.io/users/alamb) * [tustvold](https://crates.io/users/tustvold) * Dependencies * * [ahash ^0.8 _normal_](https://docs.rs/ahash/^0.8/) * [arrow-array ^58.1.0 _normal_](https://docs.rs/arrow-array/^58.1.0/) * [arrow-buffer ^58.1.0 _normal_](https://docs.rs/arrow-buffer/^58.1.0/) * [arrow-data ^58.1.0 _normal_](https://docs.rs/arrow-data/^58.1.0/) * [arrow-schema ^58.1.0 _normal_](https://docs.rs/arrow-schema/^58.1.0/) * [num-traits ^0.2.19 _normal_](https://docs.rs/num-traits/^0.2.19/) * [rand ^0.9 _dev_](https://docs.rs/rand/^0.9/) * Versions * [**100%** of the crate is documented](https://docs.rs/crate/arrow-select/58.1.0) * [Platform](https://docs.rs/arrow-select/58.1.0/arrow_select/all.html#) * [aarch64-apple-darwin](https://docs.rs/crate/arrow-select/58.1.0/target-redirect/aarch64-apple-darwin/arrow_select/all.html) * [aarch64-unknown-linux-gnu](https://docs.rs/crate/arrow-select/58.1.0/target-redirect/aarch64-unknown-linux-gnu/arrow_select/all.html) * [i686-pc-windows-msvc](https://docs.rs/crate/arrow-select/58.1.0/target-redirect/i686-pc-windows-msvc/arrow_select/all.html) * [x86\_64-pc-windows-msvc](https://docs.rs/crate/arrow-select/58.1.0/target-redirect/x86_64-pc-windows-msvc/arrow_select/all.html) * [x86\_64-unknown-linux-gnu](https://docs.rs/crate/arrow-select/58.1.0/target-redirect/arrow_select/all.html) * [Feature flags](https://docs.rs/crate/arrow-select/58.1.0/features "Browse available feature flags of arrow-select-58.1.0") * [docs.rs](https://docs.rs/arrow-select/58.1.0/arrow_select/all.html#) * [About docs.rs](https://docs.rs/about) * [Badges](https://docs.rs/about/badges) * [Builds](https://docs.rs/about/builds) * [Metadata](https://docs.rs/about/metadata) * [Shorthand URLs](https://docs.rs/about/redirections) * [Download](https://docs.rs/about/download) * [Rustdoc JSON](https://docs.rs/about/rustdoc-json) * [Build queue](https://docs.rs/releases/queue) * [Privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#docs.rs) * [Rust](https://docs.rs/arrow-select/58.1.0/arrow_select/all.html#) * [Rust website](https://www.rust-lang.org/) * [The Book](https://doc.rust-lang.org/book/) * [Standard Library API Reference](https://doc.rust-lang.org/std/) * [Rust by Example](https://doc.rust-lang.org/rust-by-example/) * [The Cargo Guide](https://doc.rust-lang.org/cargo/guide/) * [Clippy Documentation](https://doc.rust-lang.org/nightly/clippy) [Skip to main content](https://docs.rs/arrow-select/58.1.0/arrow_select/all.html#main-content) [All](https://docs.rs/arrow-select/58.1.0/arrow_select/all.html#) ------------------------------------------------------------------ List of all items ================= ### Structs * [coalesce::BatchCoalescer](https://docs.rs/arrow-select/58.1.0/arrow_select/coalesce/struct.BatchCoalescer.html) * [filter::FilterBuilder](https://docs.rs/arrow-select/58.1.0/arrow_select/filter/struct.FilterBuilder.html) * [filter::FilterPredicate](https://docs.rs/arrow-select/58.1.0/arrow_select/filter/struct.FilterPredicate.html) * [filter::SlicesIterator](https://docs.rs/arrow-select/58.1.0/arrow_select/filter/struct.SlicesIterator.html) * [take::TakeOptions](https://docs.rs/arrow-select/58.1.0/arrow_select/take/struct.TakeOptions.html) * [zip::ScalarZipper](https://docs.rs/arrow-select/58.1.0/arrow_select/zip/struct.ScalarZipper.html) ### Traits * [merge::MergeIndex](https://docs.rs/arrow-select/58.1.0/arrow_select/merge/trait.MergeIndex.html) ### Functions * [concat::concat](https://docs.rs/arrow-select/58.1.0/arrow_select/concat/fn.concat.html) * [concat::concat\_batches](https://docs.rs/arrow-select/58.1.0/arrow_select/concat/fn.concat_batches.html) * [dictionary::garbage\_collect\_any\_dictionary](https://docs.rs/arrow-select/58.1.0/arrow_select/dictionary/fn.garbage_collect_any_dictionary.html) * [dictionary::garbage\_collect\_dictionary](https://docs.rs/arrow-select/58.1.0/arrow_select/dictionary/fn.garbage_collect_dictionary.html) * [filter::filter](https://docs.rs/arrow-select/58.1.0/arrow_select/filter/fn.filter.html) * [filter::filter\_record\_batch](https://docs.rs/arrow-select/58.1.0/arrow_select/filter/fn.filter_record_batch.html) * [filter::prep\_null\_mask\_filter](https://docs.rs/arrow-select/58.1.0/arrow_select/filter/fn.prep_null_mask_filter.html) * [interleave::interleave](https://docs.rs/arrow-select/58.1.0/arrow_select/interleave/fn.interleave.html) * [interleave::interleave\_record\_batch](https://docs.rs/arrow-select/58.1.0/arrow_select/interleave/fn.interleave_record_batch.html) * [merge::merge](https://docs.rs/arrow-select/58.1.0/arrow_select/merge/fn.merge.html) * [merge::merge\_n](https://docs.rs/arrow-select/58.1.0/arrow_select/merge/fn.merge_n.html) * [nullif::nullif](https://docs.rs/arrow-select/58.1.0/arrow_select/nullif/fn.nullif.html) * [take::take](https://docs.rs/arrow-select/58.1.0/arrow_select/take/fn.take.html) * [take::take\_arrays](https://docs.rs/arrow-select/58.1.0/arrow_select/take/fn.take_arrays.html) * [take::take\_record\_batch](https://docs.rs/arrow-select/58.1.0/arrow_select/take/fn.take_record_batch.html) * [union\_extract::union\_extract](https://docs.rs/arrow-select/58.1.0/arrow_select/union_extract/fn.union_extract.html) * [window::shift](https://docs.rs/arrow-select/58.1.0/arrow_select/window/fn.shift.html) * [zip::zip](https://docs.rs/arrow-select/58.1.0/arrow_select/zip/fn.zip.html) --- # List of all items in this crate [Docs.rs](https://docs.rs/) * [arrow-data-58.1.0](https://docs.rs/arrow-data/58.1.0/arrow_data/all.html# "Array data abstractions for Apache Arrow") * arrow-data 58.1.0 * [Docs.rs crate page](https://docs.rs/crate/arrow-data/58.1.0 "See arrow-data in docs.rs") * [Apache-2.0](https://spdx.org/licenses/Apache-2.0) * Links * [Homepage](https://github.com/apache/arrow-rs) * [Repository](https://github.com/apache/arrow-rs) * [crates.io](https://crates.io/crates/arrow-data "See arrow-data in crates.io") * [Source](https://docs.rs/crate/arrow-data/58.1.0/source/ "Browse source of arrow-data-58.1.0") * Owners * [andygrove](https://crates.io/users/andygrove) * [kou](https://crates.io/users/kou) * [xhochy](https://crates.io/users/xhochy) * [nevi-me](https://crates.io/users/nevi-me) * [alamb](https://crates.io/users/alamb) * [tustvold](https://crates.io/users/tustvold) * Dependencies * * [arrow-buffer ^58.1.0 _normal_](https://docs.rs/arrow-buffer/^58.1.0/) * [arrow-schema ^58.1.0 _normal_](https://docs.rs/arrow-schema/^58.1.0/) * [half ^2.1 _normal_](https://docs.rs/half/^2.1/) * [num-integer ^0.1.46 _normal_](https://docs.rs/num-integer/^0.1.46/) * [num-traits ^0.2.19 _normal_](https://docs.rs/num-traits/^0.2.19/) * Versions * [**100%** of the crate is documented](https://docs.rs/crate/arrow-data/58.1.0) * [Platform](https://docs.rs/arrow-data/58.1.0/arrow_data/all.html#) * [aarch64-apple-darwin](https://docs.rs/crate/arrow-data/58.1.0/target-redirect/aarch64-apple-darwin/arrow_data/all.html) * [aarch64-unknown-linux-gnu](https://docs.rs/crate/arrow-data/58.1.0/target-redirect/aarch64-unknown-linux-gnu/arrow_data/all.html) * [i686-pc-windows-msvc](https://docs.rs/crate/arrow-data/58.1.0/target-redirect/i686-pc-windows-msvc/arrow_data/all.html) * [x86\_64-pc-windows-msvc](https://docs.rs/crate/arrow-data/58.1.0/target-redirect/x86_64-pc-windows-msvc/arrow_data/all.html) * [x86\_64-unknown-linux-gnu](https://docs.rs/crate/arrow-data/58.1.0/target-redirect/arrow_data/all.html) * [Feature flags](https://docs.rs/crate/arrow-data/58.1.0/features "Browse available feature flags of arrow-data-58.1.0") * [docs.rs](https://docs.rs/arrow-data/58.1.0/arrow_data/all.html#) * [About docs.rs](https://docs.rs/about) * [Badges](https://docs.rs/about/badges) * [Builds](https://docs.rs/about/builds) * [Metadata](https://docs.rs/about/metadata) * [Shorthand URLs](https://docs.rs/about/redirections) * [Download](https://docs.rs/about/download) * [Rustdoc JSON](https://docs.rs/about/rustdoc-json) * [Build queue](https://docs.rs/releases/queue) * [Privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#docs.rs) * [Rust](https://docs.rs/arrow-data/58.1.0/arrow_data/all.html#) * [Rust website](https://www.rust-lang.org/) * [The Book](https://doc.rust-lang.org/book/) * [Standard Library API Reference](https://doc.rust-lang.org/std/) * [Rust by Example](https://doc.rust-lang.org/rust-by-example/) * [The Cargo Guide](https://doc.rust-lang.org/cargo/guide/) * [Clippy Documentation](https://doc.rust-lang.org/nightly/clippy) [Skip to main content](https://docs.rs/arrow-data/58.1.0/arrow_data/all.html#main-content) [All](https://docs.rs/arrow-data/58.1.0/arrow_data/all.html#) -------------------------------------------------------------- List of all items ================= ### Structs * [ArrayData](https://docs.rs/arrow-data/58.1.0/arrow_data/struct.ArrayData.html) * [ArrayDataBuilder](https://docs.rs/arrow-data/58.1.0/arrow_data/struct.ArrayDataBuilder.html) * [ByteView](https://docs.rs/arrow-data/58.1.0/arrow_data/struct.ByteView.html) * [DataTypeLayout](https://docs.rs/arrow-data/58.1.0/arrow_data/struct.DataTypeLayout.html) * [bit\_iterator::BitIndexIterator](https://docs.rs/arrow-data/58.1.0/arrow_data/bit_iterator/struct.BitIndexIterator.html) * [bit\_iterator::BitIndexU32Iterator](https://docs.rs/arrow-data/58.1.0/arrow_data/bit_iterator/struct.BitIndexU32Iterator.html) * [bit\_iterator::BitIterator](https://docs.rs/arrow-data/58.1.0/arrow_data/bit_iterator/struct.BitIterator.html) * [bit\_iterator::BitSliceIterator](https://docs.rs/arrow-data/58.1.0/arrow_data/bit_iterator/struct.BitSliceIterator.html) * [ffi::FFI\_ArrowArray](https://docs.rs/arrow-data/58.1.0/arrow_data/ffi/struct.FFI_ArrowArray.html) * [transform::MutableArrayData](https://docs.rs/arrow-data/58.1.0/arrow_data/transform/struct.MutableArrayData.html) ### Enums * [BufferSpec](https://docs.rs/arrow-data/58.1.0/arrow_data/enum.BufferSpec.html) * [transform::Capacities](https://docs.rs/arrow-data/58.1.0/arrow_data/transform/enum.Capacities.html) ### Functions * [bit\_iterator::try\_for\_each\_valid\_idx](https://docs.rs/arrow-data/58.1.0/arrow_data/bit_iterator/fn.try_for_each_valid_idx.html) * [bit\_mask::set\_bits](https://docs.rs/arrow-data/58.1.0/arrow_data/bit_mask/fn.set_bits.html) * [decimal::format\_decimal\_str](https://docs.rs/arrow-data/58.1.0/arrow_data/decimal/fn.format_decimal_str.html) * [decimal::is\_validate\_decimal256\_precision](https://docs.rs/arrow-data/58.1.0/arrow_data/decimal/fn.is_validate_decimal256_precision.html) * [decimal::is\_validate\_decimal32\_precision](https://docs.rs/arrow-data/58.1.0/arrow_data/decimal/fn.is_validate_decimal32_precision.html) * [decimal::is\_validate\_decimal64\_precision](https://docs.rs/arrow-data/58.1.0/arrow_data/decimal/fn.is_validate_decimal64_precision.html) * [decimal::is\_validate\_decimal\_precision](https://docs.rs/arrow-data/58.1.0/arrow_data/decimal/fn.is_validate_decimal_precision.html) * [decimal::validate\_decimal256\_precision](https://docs.rs/arrow-data/58.1.0/arrow_data/decimal/fn.validate_decimal256_precision.html) * [decimal::validate\_decimal32\_precision](https://docs.rs/arrow-data/58.1.0/arrow_data/decimal/fn.validate_decimal32_precision.html) * [decimal::validate\_decimal64\_precision](https://docs.rs/arrow-data/58.1.0/arrow_data/decimal/fn.validate_decimal64_precision.html) * [decimal::validate\_decimal\_precision](https://docs.rs/arrow-data/58.1.0/arrow_data/decimal/fn.validate_decimal_precision.html) * [layout](https://docs.rs/arrow-data/58.1.0/arrow_data/fn.layout.html) * [validate\_binary\_view](https://docs.rs/arrow-data/58.1.0/arrow_data/fn.validate_binary_view.html) * [validate\_string\_view](https://docs.rs/arrow-data/58.1.0/arrow_data/fn.validate_string_view.html) ### Type Aliases * [ArrayDataRef](https://docs.rs/arrow-data/58.1.0/arrow_data/type.ArrayDataRef.html) ### Constants * [MAX\_INLINE\_VIEW\_LEN](https://docs.rs/arrow-data/58.1.0/arrow_data/constant.MAX_INLINE_VIEW_LEN.html) * [decimal::DECIMAL128\_MAX\_PRECISION](https://docs.rs/arrow-data/58.1.0/arrow_data/decimal/constant.DECIMAL128_MAX_PRECISION.html) * [decimal::DECIMAL128\_MAX\_SCALE](https://docs.rs/arrow-data/58.1.0/arrow_data/decimal/constant.DECIMAL128_MAX_SCALE.html) * [decimal::DECIMAL256\_MAX\_PRECISION](https://docs.rs/arrow-data/58.1.0/arrow_data/decimal/constant.DECIMAL256_MAX_PRECISION.html) * [decimal::DECIMAL256\_MAX\_SCALE](https://docs.rs/arrow-data/58.1.0/arrow_data/decimal/constant.DECIMAL256_MAX_SCALE.html) * [decimal::DECIMAL32\_DEFAULT\_SCALE](https://docs.rs/arrow-data/58.1.0/arrow_data/decimal/constant.DECIMAL32_DEFAULT_SCALE.html) * [decimal::DECIMAL32\_MAX\_PRECISION](https://docs.rs/arrow-data/58.1.0/arrow_data/decimal/constant.DECIMAL32_MAX_PRECISION.html) * [decimal::DECIMAL32\_MAX\_SCALE](https://docs.rs/arrow-data/58.1.0/arrow_data/decimal/constant.DECIMAL32_MAX_SCALE.html) * [decimal::DECIMAL64\_DEFAULT\_SCALE](https://docs.rs/arrow-data/58.1.0/arrow_data/decimal/constant.DECIMAL64_DEFAULT_SCALE.html) * [decimal::DECIMAL64\_MAX\_PRECISION](https://docs.rs/arrow-data/58.1.0/arrow_data/decimal/constant.DECIMAL64_MAX_PRECISION.html) * [decimal::DECIMAL64\_MAX\_SCALE](https://docs.rs/arrow-data/58.1.0/arrow_data/decimal/constant.DECIMAL64_MAX_SCALE.html) * [decimal::DECIMAL\_DEFAULT\_SCALE](https://docs.rs/arrow-data/58.1.0/arrow_data/decimal/constant.DECIMAL_DEFAULT_SCALE.html) * [decimal::MAX\_DECIMAL128\_FOR\_EACH\_PRECISION](https://docs.rs/arrow-data/58.1.0/arrow_data/decimal/constant.MAX_DECIMAL128_FOR_EACH_PRECISION.html) * [decimal::MAX\_DECIMAL256\_FOR\_EACH\_PRECISION](https://docs.rs/arrow-data/58.1.0/arrow_data/decimal/constant.MAX_DECIMAL256_FOR_EACH_PRECISION.html) * [decimal::MAX\_DECIMAL32\_FOR\_EACH\_PRECISION](https://docs.rs/arrow-data/58.1.0/arrow_data/decimal/constant.MAX_DECIMAL32_FOR_EACH_PRECISION.html) * [decimal::MAX\_DECIMAL64\_FOR\_EACH\_PRECISION](https://docs.rs/arrow-data/58.1.0/arrow_data/decimal/constant.MAX_DECIMAL64_FOR_EACH_PRECISION.html) * [decimal::MAX\_DECIMAL\_FOR\_EACH\_PRECISION](https://docs.rs/arrow-data/58.1.0/arrow_data/decimal/constant.MAX_DECIMAL_FOR_EACH_PRECISION.html) * [decimal::MIN\_DECIMAL128\_FOR\_EACH\_PRECISION](https://docs.rs/arrow-data/58.1.0/arrow_data/decimal/constant.MIN_DECIMAL128_FOR_EACH_PRECISION.html) * [decimal::MIN\_DECIMAL256\_FOR\_EACH\_PRECISION](https://docs.rs/arrow-data/58.1.0/arrow_data/decimal/constant.MIN_DECIMAL256_FOR_EACH_PRECISION.html) * [decimal::MIN\_DECIMAL32\_FOR\_EACH\_PRECISION](https://docs.rs/arrow-data/58.1.0/arrow_data/decimal/constant.MIN_DECIMAL32_FOR_EACH_PRECISION.html) * [decimal::MIN\_DECIMAL64\_FOR\_EACH\_PRECISION](https://docs.rs/arrow-data/58.1.0/arrow_data/decimal/constant.MIN_DECIMAL64_FOR_EACH_PRECISION.html) * [decimal::MIN\_DECIMAL\_FOR\_EACH\_PRECISION](https://docs.rs/arrow-data/58.1.0/arrow_data/decimal/constant.MIN_DECIMAL_FOR_EACH_PRECISION.html) --- # arrow_ord::partition - Rust [Docs.rs](https://docs.rs/) * [arrow-ord-58.1.0](https://docs.rs/arrow-ord/58.1.0/arrow_ord/partition/index.html# "Ordering kernels for arrow arrays") * arrow-ord 58.1.0 * [Docs.rs crate page](https://docs.rs/crate/arrow-ord/58.1.0 "See arrow-ord in docs.rs") * [Apache-2.0](https://spdx.org/licenses/Apache-2.0) * Links * [Homepage](https://github.com/apache/arrow-rs) * [Repository](https://github.com/apache/arrow-rs) * [crates.io](https://crates.io/crates/arrow-ord "See arrow-ord in crates.io") * [Source](https://docs.rs/crate/arrow-ord/58.1.0/source/ "Browse source of arrow-ord-58.1.0") * Owners * [andygrove](https://crates.io/users/andygrove) * [kou](https://crates.io/users/kou) * [xhochy](https://crates.io/users/xhochy) * [nevi-me](https://crates.io/users/nevi-me) * [alamb](https://crates.io/users/alamb) * [tustvold](https://crates.io/users/tustvold) * Dependencies * * [arrow-array ^58.1.0 _normal_](https://docs.rs/arrow-array/^58.1.0/) * [arrow-buffer ^58.1.0 _normal_](https://docs.rs/arrow-buffer/^58.1.0/) * [arrow-data ^58.1.0 _normal_](https://docs.rs/arrow-data/^58.1.0/) * [arrow-schema ^58.1.0 _normal_](https://docs.rs/arrow-schema/^58.1.0/) * [arrow-select ^58.1.0 _normal_](https://docs.rs/arrow-select/^58.1.0/) * [half ^2.1 _dev_](https://docs.rs/half/^2.1/) * [rand ^0.9 _dev_](https://docs.rs/rand/^0.9/) * Versions * [**100%** of the crate is documented](https://docs.rs/crate/arrow-ord/58.1.0) * [Platform](https://docs.rs/arrow-ord/58.1.0/arrow_ord/partition/index.html#) * [aarch64-apple-darwin](https://docs.rs/crate/arrow-ord/58.1.0/target-redirect/aarch64-apple-darwin/arrow_ord/partition/) * [aarch64-unknown-linux-gnu](https://docs.rs/crate/arrow-ord/58.1.0/target-redirect/aarch64-unknown-linux-gnu/arrow_ord/partition/) * [i686-pc-windows-msvc](https://docs.rs/crate/arrow-ord/58.1.0/target-redirect/i686-pc-windows-msvc/arrow_ord/partition/) * [x86\_64-pc-windows-msvc](https://docs.rs/crate/arrow-ord/58.1.0/target-redirect/x86_64-pc-windows-msvc/arrow_ord/partition/) * [x86\_64-unknown-linux-gnu](https://docs.rs/crate/arrow-ord/58.1.0/target-redirect/arrow_ord/partition/) * [Feature flags](https://docs.rs/crate/arrow-ord/58.1.0/features "Browse available feature flags of arrow-ord-58.1.0") * [docs.rs](https://docs.rs/arrow-ord/58.1.0/arrow_ord/partition/index.html#) * [About docs.rs](https://docs.rs/about) * [Badges](https://docs.rs/about/badges) * [Builds](https://docs.rs/about/builds) * [Metadata](https://docs.rs/about/metadata) * [Shorthand URLs](https://docs.rs/about/redirections) * [Download](https://docs.rs/about/download) * [Rustdoc JSON](https://docs.rs/about/rustdoc-json) * [Build queue](https://docs.rs/releases/queue) * [Privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#docs.rs) * [Rust](https://docs.rs/arrow-ord/58.1.0/arrow_ord/partition/index.html#) * [Rust website](https://www.rust-lang.org/) * [The Book](https://doc.rust-lang.org/book/) * [Standard Library API Reference](https://doc.rust-lang.org/std/) * [Rust by Example](https://doc.rust-lang.org/rust-by-example/) * [The Cargo Guide](https://doc.rust-lang.org/cargo/guide/) * [Clippy Documentation](https://doc.rust-lang.org/nightly/clippy) [Skip to main content](https://docs.rs/arrow-ord/58.1.0/arrow_ord/partition/index.html#main-content) [Module partition](https://docs.rs/arrow-ord/58.1.0/arrow_ord/partition/index.html#) ------------------------------------------------------------------------------------- [arrow\_ord](https://docs.rs/arrow-ord/58.1.0/arrow_ord/index.html) Module partition Copy item path =============================== [Source](https://docs.rs/arrow-ord/58.1.0/src/arrow_ord/partition.rs.html#18-335) Expand description Defines partition kernel for `ArrayRef` Structs[§](https://docs.rs/arrow-ord/58.1.0/arrow_ord/partition/index.html#structs) ------------------------------------------------------------------------------------ [Partitions](https://docs.rs/arrow-ord/58.1.0/arrow_ord/partition/struct.Partitions.html "struct arrow_ord::partition::Partitions") A computed set of partitions, see [`partition`](https://docs.rs/arrow-ord/58.1.0/arrow_ord/partition/fn.partition.html "fn arrow_ord::partition::partition") Functions[§](https://docs.rs/arrow-ord/58.1.0/arrow_ord/partition/index.html#functions) ---------------------------------------------------------------------------------------- [partition](https://docs.rs/arrow-ord/58.1.0/arrow_ord/partition/fn.partition.html "fn arrow_ord::partition::partition") Given a list of lexicographically sorted columns, computes the [`Partitions`](https://docs.rs/arrow-ord/58.1.0/arrow_ord/partition/struct.Partitions.html "struct arrow_ord::partition::Partitions") , where a partition consists of the set of consecutive rows with equal values --- # a2a_protocol_server - Rust [Docs.rs](https://docs.rs/) * [a2a-protocol-server-0.4.0](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/# "A2A protocol v1.0 — server framework (hyper-backed)") * a2a-protocol-server 0.4.0 * [Docs.rs crate page](https://docs.rs/crate/a2a-protocol-server/0.4.0 "See a2a-protocol-server in docs.rs") * [Apache-2.0](https://spdx.org/licenses/Apache-2.0) * Links * [Homepage](https://github.com/tomtom215/a2a-rust) * [Repository](https://github.com/tomtom215/a2a-rust) * [crates.io](https://crates.io/crates/a2a-protocol-server "See a2a-protocol-server in crates.io") * [Source](https://docs.rs/crate/a2a-protocol-server/0.4.0/source/ "Browse source of a2a-protocol-server-0.4.0") * Owners * [tomtom215](https://crates.io/users/tomtom215) * Dependencies * * [a2a-protocol-types ^0.4.0 _normal_](https://docs.rs/a2a-protocol-types/^0.4.0/) * [axum ^0.8 _normal_ _optional_](https://docs.rs/axum/^0.8/) * [bytes ^1 _normal_](https://docs.rs/bytes/^1/) * [futures-util >=0.3.30, <0.4 _normal_ _optional_](https://docs.rs/futures-util/%3E=0.3.30,%20%3C0.4/) * [http-body-util >=0.1, <0.2 _normal_](https://docs.rs/http-body-util/%3E=0.1,%20%3C0.2/) * [hyper >=1.4, <2 _normal_](https://docs.rs/hyper/%3E=1.4,%20%3C2/) * [hyper-util >=0.1.6, <0.2 _normal_](https://docs.rs/hyper-util/%3E=0.1.6,%20%3C0.2/) * [opentelemetry ^0.28 _normal_ _optional_](https://docs.rs/opentelemetry/^0.28/) * [opentelemetry-otlp ^0.28 _normal_ _optional_](https://docs.rs/opentelemetry-otlp/^0.28/) * [opentelemetry\_sdk ^0.28 _normal_ _optional_](https://docs.rs/opentelemetry_sdk/^0.28/) * [prost ^0.13 _normal_ _optional_](https://docs.rs/prost/^0.13/) * [serde >=1.0.200, <2 _normal_](https://docs.rs/serde/%3E=1.0.200,%20%3C2/) * [serde\_json >=1.0.115, <2 _normal_](https://docs.rs/serde_json/%3E=1.0.115,%20%3C2/) * [sqlx ^0.8 _normal_ _optional_](https://docs.rs/sqlx/^0.8/) * [tokio >=1.38, <2 _normal_](https://docs.rs/tokio/%3E=1.38,%20%3C2/) * [tokio-stream ^0.1 _normal_ _optional_](https://docs.rs/tokio-stream/^0.1/) * [tokio-tungstenite >=0.24, <0.25 _normal_ _optional_](https://docs.rs/tokio-tungstenite/%3E=0.24,%20%3C0.25/) * [tokio-util >=0.7, <0.8 _normal_](https://docs.rs/tokio-util/%3E=0.7,%20%3C0.8/) * [tonic ^0.12 _normal_ _optional_](https://docs.rs/tonic/^0.12/) * [tracing >=0.1.40, <0.2 _normal_ _optional_](https://docs.rs/tracing/%3E=0.1.40,%20%3C0.2/) * [uuid >=1.8, <2 _normal_](https://docs.rs/uuid/%3E=1.8,%20%3C2/) * [a2a-protocol-types ^0.4.0 _dev_](https://docs.rs/a2a-protocol-types/^0.4.0/) * [axum ^0.8 _dev_](https://docs.rs/axum/^0.8/) * [bytes ^1 _dev_](https://docs.rs/bytes/^1/) * [criterion ^0.5 _dev_](https://docs.rs/criterion/^0.5/) * [http-body-util >=0.1, <0.2 _dev_](https://docs.rs/http-body-util/%3E=0.1,%20%3C0.2/) * [hyper >=1.4, <2 _dev_](https://docs.rs/hyper/%3E=1.4,%20%3C2/) * [hyper-util >=0.1.6, <0.2 _dev_](https://docs.rs/hyper-util/%3E=0.1.6,%20%3C0.2/) * [serde\_json >=1.0.115, <2 _dev_](https://docs.rs/serde_json/%3E=1.0.115,%20%3C2/) * [sqlx ^0.8 _dev_](https://docs.rs/sqlx/^0.8/) * [tokio >=1.38, <2 _dev_](https://docs.rs/tokio/%3E=1.38,%20%3C2/) * [tonic-build ^0.12 _build_ _optional_](https://docs.rs/tonic-build/^0.12/) * Versions * [**100%** of the crate is documented](https://docs.rs/crate/a2a-protocol-server/0.4.0) * [Platform](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/#) * [x86\_64-unknown-linux-gnu](https://docs.rs/crate/a2a-protocol-server/0.4.0/target-redirect/a2a_protocol_server/) * [Feature flags](https://docs.rs/crate/a2a-protocol-server/0.4.0/features "Browse available feature flags of a2a-protocol-server-0.4.0") * [docs.rs](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/#) * [About docs.rs](https://docs.rs/about) * [Badges](https://docs.rs/about/badges) * [Builds](https://docs.rs/about/builds) * [Metadata](https://docs.rs/about/metadata) * [Shorthand URLs](https://docs.rs/about/redirections) * [Download](https://docs.rs/about/download) * [Rustdoc JSON](https://docs.rs/about/rustdoc-json) * [Build queue](https://docs.rs/releases/queue) * [Privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#docs.rs) * [Rust](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/#) * [Rust website](https://www.rust-lang.org/) * [The Book](https://doc.rust-lang.org/book/) * [Standard Library API Reference](https://doc.rust-lang.org/std/) * [Rust by Example](https://doc.rust-lang.org/rust-by-example/) * [The Cargo Guide](https://doc.rust-lang.org/cargo/guide/) * [Clippy Documentation](https://doc.rust-lang.org/nightly/clippy) [Skip to main content](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/#main-content) [Crate a2a\_protocol\_server](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/#) ----------------------------------------------------------------------------------------------- Crate a2a\_protocol\_server Copy item path ========================================== [Source](https://docs.rs/a2a-protocol-server/0.4.0/src/a2a_protocol_server/lib.rs.html#6-138) Expand description A2A protocol v1.0 — server framework. Provides [`RequestHandler`](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/handler/struct.RequestHandler.html "struct a2a_protocol_server::handler::RequestHandler") and [`AgentExecutor`](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/executor/trait.AgentExecutor.html "trait a2a_protocol_server::executor::AgentExecutor") for implementing A2A agents over HTTP/1.1 and HTTP/2 using hyper 1.x. [§](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/#quick-start) Quick start ------------------------------------------------------------------------------------------- 1. Implement [`AgentExecutor`](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/executor/trait.AgentExecutor.html "trait a2a_protocol_server::executor::AgentExecutor") with your agent logic. 2. Build a [`RequestHandler`](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/handler/struct.RequestHandler.html "struct a2a_protocol_server::handler::RequestHandler") via [`RequestHandlerBuilder`](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/builder/struct.RequestHandlerBuilder.html "struct a2a_protocol_server::builder::RequestHandlerBuilder") . 3. Wire [`JsonRpcDispatcher`](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/dispatch/jsonrpc/struct.JsonRpcDispatcher.html "struct a2a_protocol_server::dispatch::jsonrpc::JsonRpcDispatcher") or [`RestDispatcher`](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/dispatch/rest/struct.RestDispatcher.html "struct a2a_protocol_server::dispatch::rest::RestDispatcher") into your hyper server. [§](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/#module-overview) Module overview --------------------------------------------------------------------------------------------------- | Module | Contents | | --- | --- | | [`error`](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/error/index.html "mod a2a_protocol_server::error") | [`ServerError`](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/error/enum.ServerError.html "enum a2a_protocol_server::error::ServerError")
, [`ServerResult`](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/error/type.ServerResult.html "type a2a_protocol_server::error::ServerResult") | | [`executor`](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/executor/index.html "mod a2a_protocol_server::executor") | [`AgentExecutor`](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/executor/trait.AgentExecutor.html "trait a2a_protocol_server::executor::AgentExecutor")
trait | | [`executor_helpers`](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/executor_helpers/index.html "mod a2a_protocol_server::executor_helpers") | [`boxed_future`](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/executor_helpers/fn.boxed_future.html "fn a2a_protocol_server::executor_helpers::boxed_future")
, [`agent_executor!`](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/macro.agent_executor.html "macro a2a_protocol_server::agent_executor")
macro | | [`handler`](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/handler/index.html "mod a2a_protocol_server::handler") | [`RequestHandler`](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/handler/struct.RequestHandler.html "struct a2a_protocol_server::handler::RequestHandler")
, [`SendMessageResult`](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/handler/enum.SendMessageResult.html "enum a2a_protocol_server::handler::SendMessageResult")
, [`HandlerLimits`](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/handler/struct.HandlerLimits.html "struct a2a_protocol_server::handler::HandlerLimits") | | [`builder`](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/builder/index.html "mod a2a_protocol_server::builder") | [`RequestHandlerBuilder`](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/builder/struct.RequestHandlerBuilder.html "struct a2a_protocol_server::builder::RequestHandlerBuilder") | | [`store`](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/store/index.html "mod a2a_protocol_server::store") | [`TaskStore`](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/store/task_store/trait.TaskStore.html "trait a2a_protocol_server::store::task_store::TaskStore")
, [`InMemoryTaskStore`](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/store/task_store/struct.InMemoryTaskStore.html "struct a2a_protocol_server::store::task_store::InMemoryTaskStore")
, `SqliteTaskStore` (sqlite feature) | | [`streaming`](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/streaming/index.html "mod a2a_protocol_server::streaming") | Event queues, SSE response builder | | [`push`](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/push/index.html "mod a2a_protocol_server::push") | Push config store, push sender | | [`agent_card`](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/agent_card/index.html "mod a2a_protocol_server::agent_card") | Static/dynamic agent card handlers | | [`serve`](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/serve/index.html "mod a2a_protocol_server::serve") | [`serve()`](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/serve/fn.serve.html "fn a2a_protocol_server::serve::serve")
, [`serve_with_addr`](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/serve/fn.serve_with_addr.html "fn a2a_protocol_server::serve::serve_with_addr")
, [`Dispatcher`](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/serve/trait.Dispatcher.html "trait a2a_protocol_server::serve::Dispatcher") | | [`dispatch`](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/dispatch/index.html "mod a2a_protocol_server::dispatch") | [`JsonRpcDispatcher`](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/dispatch/jsonrpc/struct.JsonRpcDispatcher.html "struct a2a_protocol_server::dispatch::jsonrpc::JsonRpcDispatcher")
, [`RestDispatcher`](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/dispatch/rest/struct.RestDispatcher.html "struct a2a_protocol_server::dispatch::rest::RestDispatcher") | | [`interceptor`](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/interceptor/index.html "mod a2a_protocol_server::interceptor") | [`ServerInterceptor`](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/interceptor/trait.ServerInterceptor.html "trait a2a_protocol_server::interceptor::ServerInterceptor")
, [`ServerInterceptorChain`](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/interceptor/struct.ServerInterceptorChain.html "struct a2a_protocol_server::interceptor::ServerInterceptorChain") | | [`rate_limit`](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/rate_limit/index.html "mod a2a_protocol_server::rate_limit") | [`RateLimitInterceptor`](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/rate_limit/struct.RateLimitInterceptor.html "struct a2a_protocol_server::rate_limit::RateLimitInterceptor")
, [`RateLimitConfig`](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/rate_limit/struct.RateLimitConfig.html "struct a2a_protocol_server::rate_limit::RateLimitConfig") | | [`request_context`](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/request_context/index.html "mod a2a_protocol_server::request_context") | [`RequestContext`](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/request_context/struct.RequestContext.html "struct a2a_protocol_server::request_context::RequestContext") | | [`call_context`](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/call_context/index.html "mod a2a_protocol_server::call_context") | [`CallContext`](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/call_context/struct.CallContext.html "struct a2a_protocol_server::call_context::CallContext")
(includes HTTP headers for auth) | | [`metrics`](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/metrics/index.html "mod a2a_protocol_server::metrics") | [`Metrics`](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/metrics/trait.Metrics.html "trait a2a_protocol_server::metrics::Metrics")
trait (request counts, latency, errors) | | [`tenant_resolver`](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/tenant_resolver/index.html "mod a2a_protocol_server::tenant_resolver") | [`TenantResolver`](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/tenant_resolver/trait.TenantResolver.html "trait a2a_protocol_server::tenant_resolver::TenantResolver")
, [`HeaderTenantResolver`](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/tenant_resolver/struct.HeaderTenantResolver.html "struct a2a_protocol_server::tenant_resolver::HeaderTenantResolver")
, [`BearerTokenTenantResolver`](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/tenant_resolver/struct.BearerTokenTenantResolver.html "struct a2a_protocol_server::tenant_resolver::BearerTokenTenantResolver")
, [`PathSegmentTenantResolver`](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/tenant_resolver/struct.PathSegmentTenantResolver.html "struct a2a_protocol_server::tenant_resolver::PathSegmentTenantResolver") | | [`tenant_config`](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/tenant_config/index.html "mod a2a_protocol_server::tenant_config") | [`PerTenantConfig`](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/tenant_config/struct.PerTenantConfig.html "struct a2a_protocol_server::tenant_config::PerTenantConfig")
, [`TenantLimits`](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/tenant_config/struct.TenantLimits.html "struct a2a_protocol_server::tenant_config::TenantLimits") | | `otel` | `OtelMetrics`, `OtelMetricsBuilder`, `init_otlp_pipeline` (`otel` feature) | [§](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/#axum-integration) Axum integration ----------------------------------------------------------------------------------------------------- Enable the `axum` feature flag to use `A2aRouter` for idiomatic Axum integration. See the `dispatch::axum_adapter` module for details. [§](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/#grpc-transport) gRPC transport ------------------------------------------------------------------------------------------------- Enable the `grpc` feature flag to use `GrpcDispatcher` for gRPC transport (tonic-backed). See the `dispatch::grpc` module for details. [§](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/#rate-limiting) Rate limiting ----------------------------------------------------------------------------------------------- Built-in rate limiting is available via [`RateLimitInterceptor`](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/rate_limit/struct.RateLimitInterceptor.html "struct a2a_protocol_server::rate_limit::RateLimitInterceptor") , a fixed-window per-caller interceptor. For advanced use cases (sliding windows, distributed counters), use a reverse proxy (nginx, Envoy) or a custom [`ServerInterceptor`](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/interceptor/trait.ServerInterceptor.html "trait a2a_protocol_server::interceptor::ServerInterceptor") . Re-exports[§](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/#reexports) ---------------------------------------------------------------------------------------- `pub use agent_card::[AgentCardProducer](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/agent_card/dynamic_handler/trait.AgentCardProducer.html "trait a2a_protocol_server::agent_card::dynamic_handler::AgentCardProducer") ;` `pub use agent_card::[DynamicAgentCardHandler](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/agent_card/dynamic_handler/struct.DynamicAgentCardHandler.html "struct a2a_protocol_server::agent_card::dynamic_handler::DynamicAgentCardHandler") ;` `pub use agent_card::[HotReloadAgentCardHandler](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/agent_card/hot_reload/struct.HotReloadAgentCardHandler.html "struct a2a_protocol_server::agent_card::hot_reload::HotReloadAgentCardHandler") ;` `pub use agent_card::[StaticAgentCardHandler](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/agent_card/static_handler/struct.StaticAgentCardHandler.html "struct a2a_protocol_server::agent_card::static_handler::StaticAgentCardHandler") ;` `pub use agent_card::[CORS_ALLOW_ALL](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/agent_card/constant.CORS_ALLOW_ALL.html "constant a2a_protocol_server::agent_card::CORS_ALLOW_ALL") ;` `pub use builder::[RequestHandlerBuilder](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/builder/struct.RequestHandlerBuilder.html "struct a2a_protocol_server::builder::RequestHandlerBuilder") ;` `pub use call_context::[CallContext](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/call_context/struct.CallContext.html "struct a2a_protocol_server::call_context::CallContext") ;` `pub use dispatch::axum_adapter::[A2aRouter](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/dispatch/axum_adapter/struct.A2aRouter.html "struct a2a_protocol_server::dispatch::axum_adapter::A2aRouter") ;` `pub use dispatch::[WebSocketDispatcher](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/dispatch/websocket/struct.WebSocketDispatcher.html "struct a2a_protocol_server::dispatch::websocket::WebSocketDispatcher") ;` `pub use dispatch::[CorsConfig](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/dispatch/cors/struct.CorsConfig.html "struct a2a_protocol_server::dispatch::cors::CorsConfig") ;` `pub use dispatch::[DispatchConfig](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/dispatch/struct.DispatchConfig.html "struct a2a_protocol_server::dispatch::DispatchConfig") ;` `pub use dispatch::[JsonRpcDispatcher](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/dispatch/jsonrpc/struct.JsonRpcDispatcher.html "struct a2a_protocol_server::dispatch::jsonrpc::JsonRpcDispatcher") ;` `pub use dispatch::[RestDispatcher](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/dispatch/rest/struct.RestDispatcher.html "struct a2a_protocol_server::dispatch::rest::RestDispatcher") ;` `pub use dispatch::[GrpcConfig](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/dispatch/grpc/struct.GrpcConfig.html "struct a2a_protocol_server::dispatch::grpc::GrpcConfig") ;` `pub use dispatch::[GrpcDispatcher](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/dispatch/grpc/struct.GrpcDispatcher.html "struct a2a_protocol_server::dispatch::grpc::GrpcDispatcher") ;` `pub use error::[ServerError](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/error/enum.ServerError.html "enum a2a_protocol_server::error::ServerError") ;` `pub use error::[ServerResult](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/error/type.ServerResult.html "type a2a_protocol_server::error::ServerResult") ;` `pub use executor::[AgentExecutor](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/executor/trait.AgentExecutor.html "trait a2a_protocol_server::executor::AgentExecutor") ;` `pub use executor_helpers::[boxed_future](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/executor_helpers/fn.boxed_future.html "fn a2a_protocol_server::executor_helpers::boxed_future") ;` `pub use executor_helpers::[EventEmitter](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/executor_helpers/struct.EventEmitter.html "struct a2a_protocol_server::executor_helpers::EventEmitter") ;` `pub use handler::[HandlerLimits](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/handler/struct.HandlerLimits.html "struct a2a_protocol_server::handler::HandlerLimits") ;` `pub use handler::[RequestHandler](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/handler/struct.RequestHandler.html "struct a2a_protocol_server::handler::RequestHandler") ;` `pub use handler::[SendMessageResult](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/handler/enum.SendMessageResult.html "enum a2a_protocol_server::handler::SendMessageResult") ;` `pub use interceptor::[ServerInterceptor](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/interceptor/trait.ServerInterceptor.html "trait a2a_protocol_server::interceptor::ServerInterceptor") ;` `pub use interceptor::[ServerInterceptorChain](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/interceptor/struct.ServerInterceptorChain.html "struct a2a_protocol_server::interceptor::ServerInterceptorChain") ;` `pub use metrics::[ConnectionPoolStats](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/metrics/struct.ConnectionPoolStats.html "struct a2a_protocol_server::metrics::ConnectionPoolStats") ;` `pub use metrics::[Metrics](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/metrics/trait.Metrics.html "trait a2a_protocol_server::metrics::Metrics") ;` `pub use otel::[OtelMetrics](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/otel/struct.OtelMetrics.html "struct a2a_protocol_server::otel::OtelMetrics") ;` `pub use push::[HttpPushSender](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/push/sender/struct.HttpPushSender.html "struct a2a_protocol_server::push::sender::HttpPushSender") ;` `pub use push::[InMemoryPushConfigStore](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/push/config_store/struct.InMemoryPushConfigStore.html "struct a2a_protocol_server::push::config_store::InMemoryPushConfigStore") ;` `pub use push::[PushConfigStore](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/push/config_store/trait.PushConfigStore.html "trait a2a_protocol_server::push::config_store::PushConfigStore") ;` `pub use push::[PushRetryPolicy](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/push/sender/struct.PushRetryPolicy.html "struct a2a_protocol_server::push::sender::PushRetryPolicy") ;` `pub use push::[PushSender](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/push/sender/trait.PushSender.html "trait a2a_protocol_server::push::sender::PushSender") ;` `pub use push::[TenantAwareInMemoryPushConfigStore](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/push/tenant_config_store/struct.TenantAwareInMemoryPushConfigStore.html "struct a2a_protocol_server::push::tenant_config_store::TenantAwareInMemoryPushConfigStore") ;` `pub use rate_limit::[RateLimitConfig](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/rate_limit/struct.RateLimitConfig.html "struct a2a_protocol_server::rate_limit::RateLimitConfig") ;` `pub use rate_limit::[RateLimitInterceptor](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/rate_limit/struct.RateLimitInterceptor.html "struct a2a_protocol_server::rate_limit::RateLimitInterceptor") ;` `pub use request_context::[RequestContext](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/request_context/struct.RequestContext.html "struct a2a_protocol_server::request_context::RequestContext") ;` `pub use serve::[serve](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/serve/fn.serve.html "fn a2a_protocol_server::serve::serve") ;` `pub use serve::[serve_with_addr](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/serve/fn.serve_with_addr.html "fn a2a_protocol_server::serve::serve_with_addr") ;` `pub use serve::[Dispatcher](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/serve/trait.Dispatcher.html "trait a2a_protocol_server::serve::Dispatcher") ;` `pub use store::[InMemoryTaskStore](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/store/task_store/struct.InMemoryTaskStore.html "struct a2a_protocol_server::store::task_store::InMemoryTaskStore") ;` `pub use store::[TaskStore](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/store/task_store/trait.TaskStore.html "trait a2a_protocol_server::store::task_store::TaskStore") ;` `pub use store::[TaskStoreConfig](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/store/task_store/struct.TaskStoreConfig.html "struct a2a_protocol_server::store::task_store::TaskStoreConfig") ;` `pub use store::[TenantAwareInMemoryTaskStore](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/store/tenant/struct.TenantAwareInMemoryTaskStore.html "struct a2a_protocol_server::store::tenant::TenantAwareInMemoryTaskStore") ;` `pub use store::[TenantContext](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/store/tenant/struct.TenantContext.html "struct a2a_protocol_server::store::tenant::TenantContext") ;` `pub use store::[TenantStoreConfig](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/store/tenant/struct.TenantStoreConfig.html "struct a2a_protocol_server::store::tenant::TenantStoreConfig") ;` `pub use push::[SqlitePushConfigStore](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/push/sqlite_config_store/struct.SqlitePushConfigStore.html "struct a2a_protocol_server::push::sqlite_config_store::SqlitePushConfigStore") ;` `pub use push::[TenantAwareSqlitePushConfigStore](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/push/tenant_sqlite_config_store/struct.TenantAwareSqlitePushConfigStore.html "struct a2a_protocol_server::push::tenant_sqlite_config_store::TenantAwareSqlitePushConfigStore") ;` `pub use store::[Migration](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/store/migration/struct.Migration.html "struct a2a_protocol_server::store::migration::Migration") ;` `pub use store::[MigrationRunner](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/store/migration/struct.MigrationRunner.html "struct a2a_protocol_server::store::migration::MigrationRunner") ;` `pub use store::[SqliteTaskStore](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/store/sqlite_store/struct.SqliteTaskStore.html "struct a2a_protocol_server::store::sqlite_store::SqliteTaskStore") ;` `pub use store::[TenantAwareSqliteTaskStore](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/store/tenant_sqlite_store/struct.TenantAwareSqliteTaskStore.html "struct a2a_protocol_server::store::tenant_sqlite_store::TenantAwareSqliteTaskStore") ;` `pub use push::[PostgresPushConfigStore](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/push/postgres_config_store/struct.PostgresPushConfigStore.html "struct a2a_protocol_server::push::postgres_config_store::PostgresPushConfigStore") ;` `pub use push::[TenantAwarePostgresPushConfigStore](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/push/tenant_postgres_config_store/struct.TenantAwarePostgresPushConfigStore.html "struct a2a_protocol_server::push::tenant_postgres_config_store::TenantAwarePostgresPushConfigStore") ;` `pub use store::[PgMigration](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/store/pg_migration/struct.PgMigration.html "struct a2a_protocol_server::store::pg_migration::PgMigration") ;` `pub use store::[PgMigrationRunner](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/store/pg_migration/struct.PgMigrationRunner.html "struct a2a_protocol_server::store::pg_migration::PgMigrationRunner") ;` `pub use store::[PostgresTaskStore](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/store/postgres_store/struct.PostgresTaskStore.html "struct a2a_protocol_server::store::postgres_store::PostgresTaskStore") ;` `pub use store::[TenantAwarePostgresTaskStore](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/store/tenant_postgres_store/struct.TenantAwarePostgresTaskStore.html "struct a2a_protocol_server::store::tenant_postgres_store::TenantAwarePostgresTaskStore") ;` `pub use streaming::[EventQueueManager](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/streaming/event_queue/struct.EventQueueManager.html "struct a2a_protocol_server::streaming::event_queue::EventQueueManager") ;` `pub use streaming::[EventQueueReader](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/streaming/event_queue/trait.EventQueueReader.html "trait a2a_protocol_server::streaming::event_queue::EventQueueReader") ;` `pub use streaming::[EventQueueWriter](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/streaming/event_queue/trait.EventQueueWriter.html "trait a2a_protocol_server::streaming::event_queue::EventQueueWriter") ;` `pub use streaming::[InMemoryQueueReader](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/streaming/event_queue/struct.InMemoryQueueReader.html "struct a2a_protocol_server::streaming::event_queue::InMemoryQueueReader") ;` `pub use streaming::[InMemoryQueueWriter](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/streaming/event_queue/struct.InMemoryQueueWriter.html "struct a2a_protocol_server::streaming::event_queue::InMemoryQueueWriter") ;` `pub use tenant_config::[PerTenantConfig](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/tenant_config/struct.PerTenantConfig.html "struct a2a_protocol_server::tenant_config::PerTenantConfig") ;` `pub use tenant_config::[TenantLimits](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/tenant_config/struct.TenantLimits.html "struct a2a_protocol_server::tenant_config::TenantLimits") ;` `pub use tenant_resolver::[BearerTokenTenantResolver](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/tenant_resolver/struct.BearerTokenTenantResolver.html "struct a2a_protocol_server::tenant_resolver::BearerTokenTenantResolver") ;` `pub use tenant_resolver::[HeaderTenantResolver](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/tenant_resolver/struct.HeaderTenantResolver.html "struct a2a_protocol_server::tenant_resolver::HeaderTenantResolver") ;` `pub use tenant_resolver::[PathSegmentTenantResolver](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/tenant_resolver/struct.PathSegmentTenantResolver.html "struct a2a_protocol_server::tenant_resolver::PathSegmentTenantResolver") ;` `pub use tenant_resolver::[TenantResolver](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/tenant_resolver/trait.TenantResolver.html "trait a2a_protocol_server::tenant_resolver::TenantResolver") ;` Modules[§](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/#modules) ----------------------------------------------------------------------------------- [agent\_card](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/agent_card/index.html "mod a2a_protocol_server::agent_card") Agent card HTTP handlers (static, dynamic, and caching utilities). [builder](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/builder/index.html "mod a2a_protocol_server::builder") Builder for [`RequestHandler`](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/handler/struct.RequestHandler.html "struct a2a_protocol_server::handler::RequestHandler") . [call\_context](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/call_context/index.html "mod a2a_protocol_server::call_context") Call context for server-side interceptors. [dispatch](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/dispatch/index.html "mod a2a_protocol_server::dispatch") HTTP dispatch layer — JSON-RPC and REST routing. [error](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/error/index.html "mod a2a_protocol_server::error") Server-specific error types. [executor](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/executor/index.html "mod a2a_protocol_server::executor") Agent executor trait. [executor\_helpers](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/executor_helpers/index.html "mod a2a_protocol_server::executor_helpers") Ergonomic helpers for implementing [`AgentExecutor`](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/executor/trait.AgentExecutor.html "trait a2a_protocol_server::executor::AgentExecutor") . [handler](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/handler/index.html "mod a2a_protocol_server::handler") Core request handler — protocol logic layer. [interceptor](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/interceptor/index.html "mod a2a_protocol_server::interceptor") Server-side interceptor chain. [metrics](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/metrics/index.html "mod a2a_protocol_server::metrics") Metrics hooks for observing handler activity. [otel](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/otel/index.html "mod a2a_protocol_server::otel") OpenTelemetry integration for the A2A server. [push](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/push/index.html "mod a2a_protocol_server::push") Push notification configuration storage and delivery. [rate\_limit](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/rate_limit/index.html "mod a2a_protocol_server::rate_limit") Token-bucket rate limiter as a [`ServerInterceptor`](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/interceptor/trait.ServerInterceptor.html "trait a2a_protocol_server::interceptor::ServerInterceptor") . [request\_context](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/request_context/index.html "mod a2a_protocol_server::request_context") Request context passed to the [`AgentExecutor`](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/executor/trait.AgentExecutor.html "trait a2a_protocol_server::executor::AgentExecutor") . [serve](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/serve/index.html "mod a2a_protocol_server::serve") Server startup helpers. [store](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/store/index.html "mod a2a_protocol_server::store") Task storage backend. [streaming](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/streaming/index.html "mod a2a_protocol_server::streaming") Streaming infrastructure for SSE responses and event queues. [tenant\_config](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/tenant_config/index.html "mod a2a_protocol_server::tenant_config") Per-tenant configuration for multi-tenant A2A servers. [tenant\_resolver](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/tenant_resolver/index.html "mod a2a_protocol_server::tenant_resolver") Tenant resolution for multi-tenant A2A servers. Macros[§](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/#macros) --------------------------------------------------------------------------------- [agent\_executor](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/macro.agent_executor.html "macro a2a_protocol_server::agent_executor") Generates an [`AgentExecutor`](https://docs.rs/a2a-protocol-server/0.4.0/a2a_protocol_server/executor/trait.AgentExecutor.html "trait a2a_protocol_server::executor::AgentExecutor") implementation from a closure-like syntax. --- # btrfs_cli - Rust [Docs.rs](https://docs.rs/) * [btrfs-cli-0.7.0](https://docs.rs/btrfs-cli/0.7.0/btrfs_cli/# "User-space command-line tool for inspecting and managing Btrfs filesystems") * btrfs-cli 0.7.0 * [Docs.rs crate page](https://docs.rs/crate/btrfs-cli/0.7.0 "See btrfs-cli in docs.rs") * [GPL-2.0-only](https://spdx.org/licenses/GPL-2.0-only) * Links * [Homepage](https://github.com/rustutils/btrfsutils) * [Repository](https://github.com/rustutils/btrfsutils) * [crates.io](https://crates.io/crates/btrfs-cli "See btrfs-cli in crates.io") * [Source](https://docs.rs/crate/btrfs-cli/0.7.0/source/ "Browse source of btrfs-cli-0.7.0") * Owners * [xfbs](https://crates.io/users/xfbs) * Dependencies * * [anyhow ^1.0.102 _normal_](https://docs.rs/anyhow/^1.0.102/) * [btrfs-disk ^0.7.0 _normal_](https://docs.rs/btrfs-disk/^0.7.0/) * [btrfs-stream ^0.7.0 _normal_](https://docs.rs/btrfs-stream/^0.7.0/) * [btrfs-uapi ^0.7.0 _normal_](https://docs.rs/btrfs-uapi/^0.7.0/) * [chrono ^0.4.44 _normal_](https://docs.rs/chrono/^0.4.44/) * [clap ^4.6.0 _normal_](https://docs.rs/clap/^4.6.0/) * [env\_logger ^0.11.9 _normal_](https://docs.rs/env_logger/^0.11.9/) * [flate2 ^1 _normal_](https://docs.rs/flate2/^1/) * [libc ^0.2 _normal_](https://docs.rs/libc/^0.2/) * [log ^0.4.29 _normal_](https://docs.rs/log/^0.4.29/) * [lzokay ^2 _normal_](https://docs.rs/lzokay/^2/) * [nix ^0.31.2 _normal_](https://docs.rs/nix/^0.31.2/) * [regex-lite ^0.1 _normal_](https://docs.rs/regex-lite/^0.1/) * [uuid ^1 _normal_](https://docs.rs/uuid/^1/) * [zstd ^0.13 _normal_](https://docs.rs/zstd/^0.13/) * [insta ^1 _dev_](https://docs.rs/insta/^1/) * [tempfile ^3 _dev_](https://docs.rs/tempfile/^3/) * Versions * [**64.99%** of the crate is documented](https://docs.rs/crate/btrfs-cli/0.7.0) * [Platform](https://docs.rs/btrfs-cli/0.7.0/btrfs_cli/#) * [x86\_64-unknown-linux-gnu](https://docs.rs/crate/btrfs-cli/0.7.0/target-redirect/btrfs_cli/) * [Feature flags](https://docs.rs/crate/btrfs-cli/0.7.0/features "Browse available feature flags of btrfs-cli-0.7.0") * [docs.rs](https://docs.rs/btrfs-cli/0.7.0/btrfs_cli/#) * [About docs.rs](https://docs.rs/about) * [Badges](https://docs.rs/about/badges) * [Builds](https://docs.rs/about/builds) * [Metadata](https://docs.rs/about/metadata) * [Shorthand URLs](https://docs.rs/about/redirections) * [Download](https://docs.rs/about/download) * [Rustdoc JSON](https://docs.rs/about/rustdoc-json) * [Build queue](https://docs.rs/releases/queue) * [Privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#docs.rs) * [Rust](https://docs.rs/btrfs-cli/0.7.0/btrfs_cli/#) * [Rust website](https://www.rust-lang.org/) * [The Book](https://doc.rust-lang.org/book/) * [Standard Library API Reference](https://doc.rust-lang.org/std/) * [Rust by Example](https://doc.rust-lang.org/rust-by-example/) * [The Cargo Guide](https://doc.rust-lang.org/cargo/guide/) * [Clippy Documentation](https://doc.rust-lang.org/nightly/clippy) [Skip to main content](https://docs.rs/btrfs-cli/0.7.0/btrfs_cli/#main-content) [Crate btrfs\_cli](https://docs.rs/btrfs-cli/0.7.0/btrfs_cli/#) ---------------------------------------------------------------- Crate btrfs\_cli Copy item path =============================== [Source](https://docs.rs/btrfs-cli/0.7.0/src/btrfs_cli/lib.rs.html#1-173) Expand description [§](https://docs.rs/btrfs-cli/0.7.0/btrfs_cli/#btrfs-cli-the-btrfs-command-line-tool) btrfs-cli: the btrfs command-line tool ---------------------------------------------------------------------------------------------------------------------------- This crate provides the `btrfs` command-line binary, an alternative implementation of btrfs-progs written in Rust. It is built on top of `btrfs-uapi` for kernel communication, `btrfs-disk` for direct on-disk structure parsing, and `btrfs-stream` for send/receive stream processing. Not all commands from btrfs-progs are implemented yet. Run `btrfs help` to see what is available. Most commands require root privileges or `CAP_SYS_ADMIN`. Structs[§](https://docs.rs/btrfs-cli/0.7.0/btrfs_cli/#structs) --------------------------------------------------------------- [Arguments](https://docs.rs/btrfs-cli/0.7.0/btrfs_cli/struct.Arguments.html "struct btrfs_cli::Arguments") User-space command-line tool for managing Btrfs filesystems. [BalanceCancelCommand](https://docs.rs/btrfs-cli/0.7.0/btrfs_cli/struct.BalanceCancelCommand.html "struct btrfs_cli::BalanceCancelCommand") Cancel a running balance operation [BalanceCommand](https://docs.rs/btrfs-cli/0.7.0/btrfs_cli/struct.BalanceCommand.html "struct btrfs_cli::BalanceCommand") Balance data across devices, or change block groups using filters. [BalancePauseCommand](https://docs.rs/btrfs-cli/0.7.0/btrfs_cli/struct.BalancePauseCommand.html "struct btrfs_cli::BalancePauseCommand") Pause a running balance operation [BalanceResumeCommand](https://docs.rs/btrfs-cli/0.7.0/btrfs_cli/struct.BalanceResumeCommand.html "struct btrfs_cli::BalanceResumeCommand") Resume a paused balance operation [BalanceStartCommand](https://docs.rs/btrfs-cli/0.7.0/btrfs_cli/struct.BalanceStartCommand.html "struct btrfs_cli::BalanceStartCommand") Balance chunks across the devices [BalanceStatusCommand](https://docs.rs/btrfs-cli/0.7.0/btrfs_cli/struct.BalanceStatusCommand.html "struct btrfs_cli::BalanceStatusCommand") Show status of running or paused balance operation. [CheckCommand](https://docs.rs/btrfs-cli/0.7.0/btrfs_cli/struct.CheckCommand.html "struct btrfs_cli::CheckCommand") Check structural integrity of a filesystem (unmounted). [DeviceAddCommand](https://docs.rs/btrfs-cli/0.7.0/btrfs_cli/struct.DeviceAddCommand.html "struct btrfs_cli::DeviceAddCommand") Add one or more devices to a mounted filesystem [DeviceCommand](https://docs.rs/btrfs-cli/0.7.0/btrfs_cli/struct.DeviceCommand.html "struct btrfs_cli::DeviceCommand") Manage devices in a btrfs filesystem. [DeviceReadyCommand](https://docs.rs/btrfs-cli/0.7.0/btrfs_cli/struct.DeviceReadyCommand.html "struct btrfs_cli::DeviceReadyCommand") Check whether all devices of a multi-device filesystem are present [DeviceRemoveCommand](https://docs.rs/btrfs-cli/0.7.0/btrfs_cli/struct.DeviceRemoveCommand.html "struct btrfs_cli::DeviceRemoveCommand") Remove one or more devices from a mounted filesystem [DeviceScanCommand](https://docs.rs/btrfs-cli/0.7.0/btrfs_cli/struct.DeviceScanCommand.html "struct btrfs_cli::DeviceScanCommand") Scan or unregister devices for multi-device btrfs filesystems [DeviceStatsCommand](https://docs.rs/btrfs-cli/0.7.0/btrfs_cli/struct.DeviceStatsCommand.html "struct btrfs_cli::DeviceStatsCommand") Show device I/O error statistics for all devices of a filesystem [DeviceUsageCommand](https://docs.rs/btrfs-cli/0.7.0/btrfs_cli/struct.DeviceUsageCommand.html "struct btrfs_cli::DeviceUsageCommand") Show detailed information about internal allocations in devices [DumpSuperCommand](https://docs.rs/btrfs-cli/0.7.0/btrfs_cli/struct.DumpSuperCommand.html "struct btrfs_cli::DumpSuperCommand") Dump the btrfs superblock from a device or image file. [DumpTreeCommand](https://docs.rs/btrfs-cli/0.7.0/btrfs_cli/struct.DumpTreeCommand.html "struct btrfs_cli::DumpTreeCommand") Dump tree blocks from a btrfs device or image file. [FilesystemCommand](https://docs.rs/btrfs-cli/0.7.0/btrfs_cli/struct.FilesystemCommand.html "struct btrfs_cli::FilesystemCommand") Overall filesystem tasks and information. [FilesystemCommitStatsCommand](https://docs.rs/btrfs-cli/0.7.0/btrfs_cli/struct.FilesystemCommitStatsCommand.html "struct btrfs_cli::FilesystemCommitStatsCommand") Show commit statistics for a mounted filesystem [FilesystemDefragCommand](https://docs.rs/btrfs-cli/0.7.0/btrfs_cli/struct.FilesystemDefragCommand.html "struct btrfs_cli::FilesystemDefragCommand") Defragment files or directories on a btrfs filesystem [FilesystemDfCommand](https://docs.rs/btrfs-cli/0.7.0/btrfs_cli/struct.FilesystemDfCommand.html "struct btrfs_cli::FilesystemDfCommand") Show space usage information for a mounted filesystem [FilesystemDuCommand](https://docs.rs/btrfs-cli/0.7.0/btrfs_cli/struct.FilesystemDuCommand.html "struct btrfs_cli::FilesystemDuCommand") Summarize disk usage of each file, showing shared extents [FilesystemLabelCommand](https://docs.rs/btrfs-cli/0.7.0/btrfs_cli/struct.FilesystemLabelCommand.html "struct btrfs_cli::FilesystemLabelCommand") Get or set the label of a btrfs filesystem [FilesystemMkswapfileCommand](https://docs.rs/btrfs-cli/0.7.0/btrfs_cli/struct.FilesystemMkswapfileCommand.html "struct btrfs_cli::FilesystemMkswapfileCommand") Create a swapfile on a btrfs filesystem [FilesystemResizeCommand](https://docs.rs/btrfs-cli/0.7.0/btrfs_cli/struct.FilesystemResizeCommand.html "struct btrfs_cli::FilesystemResizeCommand") Resize a mounted btrfs filesystem [FilesystemShowCommand](https://docs.rs/btrfs-cli/0.7.0/btrfs_cli/struct.FilesystemShowCommand.html "struct btrfs_cli::FilesystemShowCommand") Show information about one or more mounted or unmounted filesystems [FilesystemSyncCommand](https://docs.rs/btrfs-cli/0.7.0/btrfs_cli/struct.FilesystemSyncCommand.html "struct btrfs_cli::FilesystemSyncCommand") Force a sync on a mounted filesystem [FilesystemUsageCommand](https://docs.rs/btrfs-cli/0.7.0/btrfs_cli/struct.FilesystemUsageCommand.html "struct btrfs_cli::FilesystemUsageCommand") Show detailed information about internal filesystem usage [GlobalOptions](https://docs.rs/btrfs-cli/0.7.0/btrfs_cli/struct.GlobalOptions.html "struct btrfs_cli::GlobalOptions") Flags shared across all subcommands (verbosity, dry-run, output format). [InodeResolveCommand](https://docs.rs/btrfs-cli/0.7.0/btrfs_cli/struct.InodeResolveCommand.html "struct btrfs_cli::InodeResolveCommand") Get file system paths for the given inode [InspectCommand](https://docs.rs/btrfs-cli/0.7.0/btrfs_cli/struct.InspectCommand.html "struct btrfs_cli::InspectCommand") Query various internal filesystem information. [ListChunksCommand](https://docs.rs/btrfs-cli/0.7.0/btrfs_cli/struct.ListChunksCommand.html "struct btrfs_cli::ListChunksCommand") List all chunks in the filesystem, one row per stripe [LogicalResolveCommand](https://docs.rs/btrfs-cli/0.7.0/btrfs_cli/struct.LogicalResolveCommand.html "struct btrfs_cli::LogicalResolveCommand") Get file system paths for the given logical address [MapSwapfileCommand](https://docs.rs/btrfs-cli/0.7.0/btrfs_cli/struct.MapSwapfileCommand.html "struct btrfs_cli::MapSwapfileCommand") Print physical offset of first block and resume offset if file is suitable as swapfile. [MinDevSizeCommand](https://docs.rs/btrfs-cli/0.7.0/btrfs_cli/struct.MinDevSizeCommand.html "struct btrfs_cli::MinDevSizeCommand") Print the minimum size a device can be shrunk to. [ParsedSubvolumeFlags](https://docs.rs/btrfs-cli/0.7.0/btrfs_cli/struct.ParsedSubvolumeFlags.html "struct btrfs_cli::ParsedSubvolumeFlags") Wrapper around SubvolumeFlags that implements FromStr for clap parsing. [PropertyCommand](https://docs.rs/btrfs-cli/0.7.0/btrfs_cli/struct.PropertyCommand.html "struct btrfs_cli::PropertyCommand") Modify properties of filesystem objects. [PropertyGetCommand](https://docs.rs/btrfs-cli/0.7.0/btrfs_cli/struct.PropertyGetCommand.html "struct btrfs_cli::PropertyGetCommand") Get a property value of a btrfs object [PropertyListCommand](https://docs.rs/btrfs-cli/0.7.0/btrfs_cli/struct.PropertyListCommand.html "struct btrfs_cli::PropertyListCommand") List available properties with their descriptions for the given object [PropertySetCommand](https://docs.rs/btrfs-cli/0.7.0/btrfs_cli/struct.PropertySetCommand.html "struct btrfs_cli::PropertySetCommand") Set a property on a btrfs object [QgroupAssignCommand](https://docs.rs/btrfs-cli/0.7.0/btrfs_cli/struct.QgroupAssignCommand.html "struct btrfs_cli::QgroupAssignCommand") Assign a qgroup as the child of another qgroup [QgroupClearStaleCommand](https://docs.rs/btrfs-cli/0.7.0/btrfs_cli/struct.QgroupClearStaleCommand.html "struct btrfs_cli::QgroupClearStaleCommand") Clear all stale qgroups (level 0/subvolid) without a subvolume [QgroupCommand](https://docs.rs/btrfs-cli/0.7.0/btrfs_cli/struct.QgroupCommand.html "struct btrfs_cli::QgroupCommand") Manage quota groups. [QgroupCreateCommand](https://docs.rs/btrfs-cli/0.7.0/btrfs_cli/struct.QgroupCreateCommand.html "struct btrfs_cli::QgroupCreateCommand") Create a subvolume quota group [QgroupDestroyCommand](https://docs.rs/btrfs-cli/0.7.0/btrfs_cli/struct.QgroupDestroyCommand.html "struct btrfs_cli::QgroupDestroyCommand") Destroy a quota group [QgroupLimitCommand](https://docs.rs/btrfs-cli/0.7.0/btrfs_cli/struct.QgroupLimitCommand.html "struct btrfs_cli::QgroupLimitCommand") Set limits on a subvolume quota group [QgroupRemoveCommand](https://docs.rs/btrfs-cli/0.7.0/btrfs_cli/struct.QgroupRemoveCommand.html "struct btrfs_cli::QgroupRemoveCommand") Remove the relation between child qgroup SRC and DST [QgroupShowCommand](https://docs.rs/btrfs-cli/0.7.0/btrfs_cli/struct.QgroupShowCommand.html "struct btrfs_cli::QgroupShowCommand") List subvolume quota groups [QuotaCommand](https://docs.rs/btrfs-cli/0.7.0/btrfs_cli/struct.QuotaCommand.html "struct btrfs_cli::QuotaCommand") Manage filesystem quota settings. [QuotaDisableCommand](https://docs.rs/btrfs-cli/0.7.0/btrfs_cli/struct.QuotaDisableCommand.html "struct btrfs_cli::QuotaDisableCommand") Disable subvolume quota support for a filesystem [QuotaEnableCommand](https://docs.rs/btrfs-cli/0.7.0/btrfs_cli/struct.QuotaEnableCommand.html "struct btrfs_cli::QuotaEnableCommand") Enable subvolume quota support for a filesystem [QuotaRescanCommand](https://docs.rs/btrfs-cli/0.7.0/btrfs_cli/struct.QuotaRescanCommand.html "struct btrfs_cli::QuotaRescanCommand") Trash all qgroup numbers and scan the metadata again [QuotaStatusCommand](https://docs.rs/btrfs-cli/0.7.0/btrfs_cli/struct.QuotaStatusCommand.html "struct btrfs_cli::QuotaStatusCommand") Show status information about quota on the filesystem [ReceiveCommand](https://docs.rs/btrfs-cli/0.7.0/btrfs_cli/struct.ReceiveCommand.html "struct btrfs_cli::ReceiveCommand") Receive subvolumes from a stream. [ReplaceCancelCommand](https://docs.rs/btrfs-cli/0.7.0/btrfs_cli/struct.ReplaceCancelCommand.html "struct btrfs_cli::ReplaceCancelCommand") Cancel a running device replace operation. [ReplaceCommand](https://docs.rs/btrfs-cli/0.7.0/btrfs_cli/struct.ReplaceCommand.html "struct btrfs_cli::ReplaceCommand") Replace a device in the filesystem. [ReplaceStartCommand](https://docs.rs/btrfs-cli/0.7.0/btrfs_cli/struct.ReplaceStartCommand.html "struct btrfs_cli::ReplaceStartCommand") Replace a device in the filesystem. [ReplaceStatusCommand](https://docs.rs/btrfs-cli/0.7.0/btrfs_cli/struct.ReplaceStatusCommand.html "struct btrfs_cli::ReplaceStatusCommand") Print status of a running device replace operation. [RescueChunkRecoverCommand](https://docs.rs/btrfs-cli/0.7.0/btrfs_cli/struct.RescueChunkRecoverCommand.html "struct btrfs_cli::RescueChunkRecoverCommand") Recover the chunk tree by scanning the devices one by one [RescueClearInoCacheCommand](https://docs.rs/btrfs-cli/0.7.0/btrfs_cli/struct.RescueClearInoCacheCommand.html "struct btrfs_cli::RescueClearInoCacheCommand") Remove leftover items pertaining to the deprecated inode cache feature [RescueClearSpaceCacheCommand](https://docs.rs/btrfs-cli/0.7.0/btrfs_cli/struct.RescueClearSpaceCacheCommand.html "struct btrfs_cli::RescueClearSpaceCacheCommand") Completely remove the v1 or v2 free space cache [RescueClearUuidTreeCommand](https://docs.rs/btrfs-cli/0.7.0/btrfs_cli/struct.RescueClearUuidTreeCommand.html "struct btrfs_cli::RescueClearUuidTreeCommand") Delete uuid tree so that kernel can rebuild it at mount time [RescueCommand](https://docs.rs/btrfs-cli/0.7.0/btrfs_cli/struct.RescueCommand.html "struct btrfs_cli::RescueCommand") Toolbox for specific rescue operations. [RescueCreateControlDeviceCommand](https://docs.rs/btrfs-cli/0.7.0/btrfs_cli/struct.RescueCreateControlDeviceCommand.html "struct btrfs_cli::RescueCreateControlDeviceCommand") Create /dev/btrfs-control [RescueFixDataChecksumCommand](https://docs.rs/btrfs-cli/0.7.0/btrfs_cli/struct.RescueFixDataChecksumCommand.html "struct btrfs_cli::RescueFixDataChecksumCommand") Fix data checksum mismatches [RescueFixDeviceSizeCommand](https://docs.rs/btrfs-cli/0.7.0/btrfs_cli/struct.RescueFixDeviceSizeCommand.html "struct btrfs_cli::RescueFixDeviceSizeCommand") Re-align device and super block sizes [RescueSuperRecoverCommand](https://docs.rs/btrfs-cli/0.7.0/btrfs_cli/struct.RescueSuperRecoverCommand.html "struct btrfs_cli::RescueSuperRecoverCommand") Recover bad superblocks from good copies [RescueZeroLogCommand](https://docs.rs/btrfs-cli/0.7.0/btrfs_cli/struct.RescueZeroLogCommand.html "struct btrfs_cli::RescueZeroLogCommand") Clear the tree log (usable if it’s corrupted and prevents mount) [RestoreCommand](https://docs.rs/btrfs-cli/0.7.0/btrfs_cli/struct.RestoreCommand.html "struct btrfs_cli::RestoreCommand") Try to restore files from a damaged filesystem (unmounted). [RootidCommand](https://docs.rs/btrfs-cli/0.7.0/btrfs_cli/struct.RootidCommand.html "struct btrfs_cli::RootidCommand") Get tree ID of the containing subvolume of path [ScrubCancelCommand](https://docs.rs/btrfs-cli/0.7.0/btrfs_cli/struct.ScrubCancelCommand.html "struct btrfs_cli::ScrubCancelCommand") Cancel a running scrub [ScrubCommand](https://docs.rs/btrfs-cli/0.7.0/btrfs_cli/struct.ScrubCommand.html "struct btrfs_cli::ScrubCommand") Verify checksums of data and metadata. [ScrubLimitCommand](https://docs.rs/btrfs-cli/0.7.0/btrfs_cli/struct.ScrubLimitCommand.html "struct btrfs_cli::ScrubLimitCommand") Show or set the per-device scrub throughput limit [ScrubResumeCommand](https://docs.rs/btrfs-cli/0.7.0/btrfs_cli/struct.ScrubResumeCommand.html "struct btrfs_cli::ScrubResumeCommand") Resume a previously cancelled or interrupted scrub [ScrubStartCommand](https://docs.rs/btrfs-cli/0.7.0/btrfs_cli/struct.ScrubStartCommand.html "struct btrfs_cli::ScrubStartCommand") Start a new scrub on the filesystem or a device. [ScrubStatusCommand](https://docs.rs/btrfs-cli/0.7.0/btrfs_cli/struct.ScrubStatusCommand.html "struct btrfs_cli::ScrubStatusCommand") Show the status of a running or finished scrub [SendCommand](https://docs.rs/btrfs-cli/0.7.0/btrfs_cli/struct.SendCommand.html "struct btrfs_cli::SendCommand") Send the subvolume(s) to stdout. [SortKey](https://docs.rs/btrfs-cli/0.7.0/btrfs_cli/struct.SortKey.html "struct btrfs_cli::SortKey") A sort key with direction. [SortKeys](https://docs.rs/btrfs-cli/0.7.0/btrfs_cli/struct.SortKeys.html "struct btrfs_cli::SortKeys") Comma-separated list of sort keys (e.g. “rfer,-excl”). [SubvolidResolveCommand](https://docs.rs/btrfs-cli/0.7.0/btrfs_cli/struct.SubvolidResolveCommand.html "struct btrfs_cli::SubvolidResolveCommand") Resolve the path of a subvolume given its ID [SubvolumeCommand](https://docs.rs/btrfs-cli/0.7.0/btrfs_cli/struct.SubvolumeCommand.html "struct btrfs_cli::SubvolumeCommand") Create, delete, list, and manage btrfs subvolumes and snapshots. [SubvolumeCreateCommand](https://docs.rs/btrfs-cli/0.7.0/btrfs_cli/struct.SubvolumeCreateCommand.html "struct btrfs_cli::SubvolumeCreateCommand") Create a new subvolume at each given path. [SubvolumeDeleteCommand](https://docs.rs/btrfs-cli/0.7.0/btrfs_cli/struct.SubvolumeDeleteCommand.html "struct btrfs_cli::SubvolumeDeleteCommand") Delete one or more subvolumes or snapshots. [SubvolumeFindNewCommand](https://docs.rs/btrfs-cli/0.7.0/btrfs_cli/struct.SubvolumeFindNewCommand.html "struct btrfs_cli::SubvolumeFindNewCommand") List the recently modified files in a subvolume [SubvolumeGetDefaultCommand](https://docs.rs/btrfs-cli/0.7.0/btrfs_cli/struct.SubvolumeGetDefaultCommand.html "struct btrfs_cli::SubvolumeGetDefaultCommand") Show the default subvolume of a filesystem [SubvolumeGetFlagsCommand](https://docs.rs/btrfs-cli/0.7.0/btrfs_cli/struct.SubvolumeGetFlagsCommand.html "struct btrfs_cli::SubvolumeGetFlagsCommand") Show the flags of a subvolume [SubvolumeListCommand](https://docs.rs/btrfs-cli/0.7.0/btrfs_cli/struct.SubvolumeListCommand.html "struct btrfs_cli::SubvolumeListCommand") List subvolumes and snapshots in the filesystem [SubvolumeSetDefaultCommand](https://docs.rs/btrfs-cli/0.7.0/btrfs_cli/struct.SubvolumeSetDefaultCommand.html "struct btrfs_cli::SubvolumeSetDefaultCommand") Set the default subvolume of a filesystem. [SubvolumeSetFlagsCommand](https://docs.rs/btrfs-cli/0.7.0/btrfs_cli/struct.SubvolumeSetFlagsCommand.html "struct btrfs_cli::SubvolumeSetFlagsCommand") Set the flags of a subvolume [SubvolumeShowCommand](https://docs.rs/btrfs-cli/0.7.0/btrfs_cli/struct.SubvolumeShowCommand.html "struct btrfs_cli::SubvolumeShowCommand") Show detailed information about a subvolume [SubvolumeSnapshotCommand](https://docs.rs/btrfs-cli/0.7.0/btrfs_cli/struct.SubvolumeSnapshotCommand.html "struct btrfs_cli::SubvolumeSnapshotCommand") Create a snapshot of a subvolume [SubvolumeSyncCommand](https://docs.rs/btrfs-cli/0.7.0/btrfs_cli/struct.SubvolumeSyncCommand.html "struct btrfs_cli::SubvolumeSyncCommand") Wait until given subvolume(s) are completely removed from the filesystem [TreeStatsCommand](https://docs.rs/btrfs-cli/0.7.0/btrfs_cli/struct.TreeStatsCommand.html "struct btrfs_cli::TreeStatsCommand") Print statistics about trees in a btrfs filesystem [UnitMode](https://docs.rs/btrfs-cli/0.7.0/btrfs_cli/struct.UnitMode.html "struct btrfs_cli::UnitMode") Unit display mode flags, shared by subcommands that output sizes. Enums[§](https://docs.rs/btrfs-cli/0.7.0/btrfs_cli/#enums) ----------------------------------------------------------- [BalanceSubcommand](https://docs.rs/btrfs-cli/0.7.0/btrfs_cli/enum.BalanceSubcommand.html "enum btrfs_cli::BalanceSubcommand") [CheckMode](https://docs.rs/btrfs-cli/0.7.0/btrfs_cli/enum.CheckMode.html "enum btrfs_cli::CheckMode") Check mode for filesystem verification [Command](https://docs.rs/btrfs-cli/0.7.0/btrfs_cli/enum.Command.html "enum btrfs_cli::Command") [DeviceSubcommand](https://docs.rs/btrfs-cli/0.7.0/btrfs_cli/enum.DeviceSubcommand.html "enum btrfs_cli::DeviceSubcommand") [FilesystemSubcommand](https://docs.rs/btrfs-cli/0.7.0/btrfs_cli/enum.FilesystemSubcommand.html "enum btrfs_cli::FilesystemSubcommand") [Format](https://docs.rs/btrfs-cli/0.7.0/btrfs_cli/enum.Format.html "enum btrfs_cli::Format") Output format for commands that support structured output. [GenFilter](https://docs.rs/btrfs-cli/0.7.0/btrfs_cli/enum.GenFilter.html "enum btrfs_cli::GenFilter") A generation filter: exact match, >= (plus), or <= (minus). [InspectSubcommand](https://docs.rs/btrfs-cli/0.7.0/btrfs_cli/enum.InspectSubcommand.html "enum btrfs_cli::InspectSubcommand") [Level](https://docs.rs/btrfs-cli/0.7.0/btrfs_cli/enum.Level.html "enum btrfs_cli::Level") Log verbosity level, ordered from most to least verbose. [PropertyObjectType](https://docs.rs/btrfs-cli/0.7.0/btrfs_cli/enum.PropertyObjectType.html "enum btrfs_cli::PropertyObjectType") Object type for property operations [PropertySubcommand](https://docs.rs/btrfs-cli/0.7.0/btrfs_cli/enum.PropertySubcommand.html "enum btrfs_cli::PropertySubcommand") [QgroupLimitSize](https://docs.rs/btrfs-cli/0.7.0/btrfs_cli/enum.QgroupLimitSize.html "enum btrfs_cli::QgroupLimitSize") A size limit that is either a byte count or “none” to remove the limit. [QgroupSubcommand](https://docs.rs/btrfs-cli/0.7.0/btrfs_cli/enum.QgroupSubcommand.html "enum btrfs_cli::QgroupSubcommand") [QuotaSubcommand](https://docs.rs/btrfs-cli/0.7.0/btrfs_cli/enum.QuotaSubcommand.html "enum btrfs_cli::QuotaSubcommand") [ReplaceSubcommand](https://docs.rs/btrfs-cli/0.7.0/btrfs_cli/enum.ReplaceSubcommand.html "enum btrfs_cli::ReplaceSubcommand") [RescueSubcommand](https://docs.rs/btrfs-cli/0.7.0/btrfs_cli/enum.RescueSubcommand.html "enum btrfs_cli::RescueSubcommand") [ScrubSubcommand](https://docs.rs/btrfs-cli/0.7.0/btrfs_cli/enum.ScrubSubcommand.html "enum btrfs_cli::ScrubSubcommand") [SpaceCacheVersion](https://docs.rs/btrfs-cli/0.7.0/btrfs_cli/enum.SpaceCacheVersion.html "enum btrfs_cli::SpaceCacheVersion") Free space cache version to clear. [SubvolumeSubcommand](https://docs.rs/btrfs-cli/0.7.0/btrfs_cli/enum.SubvolumeSubcommand.html "enum btrfs_cli::SubvolumeSubcommand") Traits[§](https://docs.rs/btrfs-cli/0.7.0/btrfs_cli/#traits) ------------------------------------------------------------- [Runnable](https://docs.rs/btrfs-cli/0.7.0/btrfs_cli/trait.Runnable.html "trait btrfs_cli::Runnable") A CLI subcommand that can be executed. --- # Buffer in arrow_buffer::buffer - Rust [Docs.rs](https://docs.rs/) * [arrow-buffer-58.1.0](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html# "Buffer abstractions for Apache Arrow") * arrow-buffer 58.1.0 * [Docs.rs crate page](https://docs.rs/crate/arrow-buffer/58.1.0 "See arrow-buffer in docs.rs") * [Apache-2.0](https://spdx.org/licenses/Apache-2.0) * Links * [Homepage](https://github.com/apache/arrow-rs) * [Repository](https://github.com/apache/arrow-rs) * [crates.io](https://crates.io/crates/arrow-buffer "See arrow-buffer in crates.io") * [Source](https://docs.rs/crate/arrow-buffer/58.1.0/source/ "Browse source of arrow-buffer-58.1.0") * Owners * [andygrove](https://crates.io/users/andygrove) * [kou](https://crates.io/users/kou) * [kszucs](https://crates.io/users/kszucs) * [xhochy](https://crates.io/users/xhochy) * [nevi-me](https://crates.io/users/nevi-me) * [alamb](https://crates.io/users/alamb) * [tustvold](https://crates.io/users/tustvold) * Dependencies * * [bytes ^1.4 _normal_](https://docs.rs/bytes/^1.4/) * [half ^2.1 _normal_](https://docs.rs/half/^2.1/) * [num-bigint ^0.4.6 _normal_](https://docs.rs/num-bigint/^0.4.6/) * [num-traits ^0.2.19 _normal_](https://docs.rs/num-traits/^0.2.19/) * [criterion ^0.8.0 _dev_](https://docs.rs/criterion/^0.8.0/) * [rand ^0.9 _dev_](https://docs.rs/rand/^0.9/) * Versions * [**100%** of the crate is documented](https://docs.rs/crate/arrow-buffer/58.1.0) * [Platform](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#) * [aarch64-apple-darwin](https://docs.rs/crate/arrow-buffer/58.1.0/target-redirect/aarch64-apple-darwin/arrow_buffer/buffer/struct.Buffer.html) * [aarch64-unknown-linux-gnu](https://docs.rs/crate/arrow-buffer/58.1.0/target-redirect/aarch64-unknown-linux-gnu/arrow_buffer/buffer/struct.Buffer.html) * [i686-pc-windows-msvc](https://docs.rs/crate/arrow-buffer/58.1.0/target-redirect/i686-pc-windows-msvc/arrow_buffer/buffer/struct.Buffer.html) * [x86\_64-pc-windows-msvc](https://docs.rs/crate/arrow-buffer/58.1.0/target-redirect/x86_64-pc-windows-msvc/arrow_buffer/buffer/struct.Buffer.html) * [x86\_64-unknown-linux-gnu](https://docs.rs/crate/arrow-buffer/58.1.0/target-redirect/arrow_buffer/buffer/struct.Buffer.html) * [Feature flags](https://docs.rs/crate/arrow-buffer/58.1.0/features "Browse available feature flags of arrow-buffer-58.1.0") * [docs.rs](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#) * [About docs.rs](https://docs.rs/about) * [Badges](https://docs.rs/about/badges) * [Builds](https://docs.rs/about/builds) * [Metadata](https://docs.rs/about/metadata) * [Shorthand URLs](https://docs.rs/about/redirections) * [Download](https://docs.rs/about/download) * [Rustdoc JSON](https://docs.rs/about/rustdoc-json) * [Build queue](https://docs.rs/releases/queue) * [Privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#docs.rs) * [Rust](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#) * [Rust website](https://www.rust-lang.org/) * [The Book](https://doc.rust-lang.org/book/) * [Standard Library API Reference](https://doc.rust-lang.org/std/) * [Rust by Example](https://doc.rust-lang.org/rust-by-example/) * [The Cargo Guide](https://doc.rust-lang.org/cargo/guide/) * [Clippy Documentation](https://doc.rust-lang.org/nightly/clippy) [Skip to main content](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#main-content) [Buffer](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#) -------------------------------------------------------------------------------------- [arrow\_buffer](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/index.html) ::[buffer](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/index.html) Struct Buffer Copy item path ============================ [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/immutable.rs.html#71-85) pub struct Buffer { /* private fields */ } Expand description A contiguous memory region that can be shared with other buffers and across thread boundaries that stores Arrow data. `Buffer`s can be sliced and cloned without copying the underlying data and can be created from memory allocated by non-Rust sources such as C/C++. [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#example-create-a-buffer-from-a-vec-without-copying) Example: Create a `Buffer` from a `Vec` (without copying) -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- let vec: Vec = vec![1, 2, 3]; let buffer = Buffer::from(vec); [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#example-convert-a-buffer-to-a-vec-without-copying) Example: Convert a `Buffer` to a `Vec` (without copying) ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ Use [`Self::into_vec`](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#method.into_vec "method arrow_buffer::buffer::Buffer::into_vec") to convert a `Buffer` back into a `Vec` if there are no other references and the types are aligned correctly. // convert the buffer back into a Vec of u32 // note this will fail if the buffer is shared or not aligned correctly let vec: Vec = buffer.into_vec().unwrap(); [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#example-create-a-buffer-from-a-bytesbytes-without-copying) Example: Create a `Buffer` from a [`bytes::Bytes`](https://docs.rs/bytes/1.11.1/x86_64-unknown-linux-gnu/bytes/bytes/struct.Bytes.html "struct bytes::bytes::Bytes") (without copying) --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- [`bytes::Bytes`](https://docs.rs/bytes/1.11.1/x86_64-unknown-linux-gnu/bytes/bytes/struct.Bytes.html "struct bytes::bytes::Bytes") is a common type in the Rust ecosystem for shared memory regions. You can create a buffer from a `Bytes` instance using the `From` implementation, also without copying. let bytes = bytes::Bytes::from("hello"); let buffer = Buffer::from(bytes); Implementations[§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#implementations) --------------------------------------------------------------------------------------------------------------- [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/immutable.rs.html#105-473) [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#impl-Buffer) ### impl [Buffer](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html "struct arrow_buffer::buffer::Buffer") [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/immutable.rs.html#113-115) #### pub fn [from\_bytes](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#method.from_bytes) (bytes: Bytes) -> Self 👎Deprecated since 54.1.0: Use Buffer::from instead Create a new Buffer from a (internal) `Bytes` NOTE despite the same name, `Bytes` is an internal struct in arrow-rs and is different than [`bytes::Bytes`](https://docs.rs/bytes/1.11.1/x86_64-unknown-linux-gnu/bytes/bytes/struct.Bytes.html "struct bytes::bytes::Bytes") . See examples on [`Buffer`](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html "struct arrow_buffer::buffer::Buffer") for ways to create a buffer from a [`bytes::Bytes`](https://docs.rs/bytes/1.11.1/x86_64-unknown-linux-gnu/bytes/bytes/struct.Bytes.html "struct bytes::bytes::Bytes") . [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/immutable.rs.html#120-123) #### pub fn [ptr\_offset](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#method.ptr_offset) (&self) -> [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) Returns the offset, in bytes, of `Self::ptr` to `Self::data` self.ptr and self.data can be different after slicing or advancing the buffer. [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/immutable.rs.html#126-128) #### pub fn [data\_ptr](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#method.data_ptr) (&self) -> [NonNull](https://doc.rust-lang.org/nightly/core/ptr/non_null/struct.NonNull.html "struct core::ptr::non_null::NonNull") <[u8](https://doc.rust-lang.org/nightly/std/primitive.u8.html) \> Returns the pointer to the start of the buffer without the offset. [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/immutable.rs.html#135-137) #### pub fn [strong\_count](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#method.strong_count) (&self) -> [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) Returns the number of strong references to the buffer. This method is safe but if the buffer is shared across multiple threads the underlying value could change between calling this method and using the result. [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/immutable.rs.html#141-143) #### pub fn [from\_vec](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#method.from_vec) (vec: [Vec](https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html "struct alloc::vec::Vec") ) -> Self Create a [`Buffer`](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html "struct arrow_buffer::buffer::Buffer") from the provided [`Vec`](https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html "struct alloc::vec::Vec") without copying [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/immutable.rs.html#146-152) #### pub fn [from\_slice\_ref](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#method.from_slice_ref) >(items: T) -> Self Initializes a [Buffer](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html "struct arrow_buffer::buffer::Buffer") from a slice of items. [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/immutable.rs.html#169-175) #### pub unsafe fn [from\_custom\_allocation](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#method.from_custom_allocation) ( ptr: [NonNull](https://doc.rust-lang.org/nightly/core/ptr/non_null/struct.NonNull.html "struct core::ptr::non_null::NonNull") <[u8](https://doc.rust-lang.org/nightly/std/primitive.u8.html) \>, len: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) , owner: [Arc](https://doc.rust-lang.org/nightly/alloc/sync/struct.Arc.html "struct alloc::sync::Arc") , ) -> Self Creates a buffer from an existing memory region. Ownership of the memory is tracked via reference counting and the memory will be freed using the `drop` method of [crate::alloc::Allocation](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/alloc/trait.Allocation.html "trait arrow_buffer::alloc::Allocation") when the reference count reaches zero. ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#arguments) Arguments * `ptr` - Pointer to raw parts * `len` - Length of raw parts in **bytes** * `owner` - A [crate::alloc::Allocation](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/alloc/trait.Allocation.html "trait arrow_buffer::alloc::Allocation") which is responsible for freeing that data ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#safety) Safety This function is unsafe as there is no guarantee that the given pointer is valid for `len` bytes [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/immutable.rs.html#194-196) #### pub fn [len](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#method.len) (&self) -> [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) Returns the number of bytes in the buffer [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/immutable.rs.html#201-203) #### pub fn [capacity](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#method.capacity) (&self) -> [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) Returns the capacity of this buffer. For externally owned buffers, this returns zero [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/immutable.rs.html#214-238) #### pub fn [shrink\_to\_fit](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#method.shrink_to_fit) (&mut self) Tries to shrink the capacity of the buffer as much as possible, freeing unused memory. If the buffer is shared, this is a no-op. If the memory was allocated with a custom allocator, this is a no-op. If the capacity is already less than or equal to the desired capacity, this is a no-op. The memory region will be reallocated using `std::alloc::realloc`. [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/immutable.rs.html#242-244) #### pub fn [is\_empty](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#method.is_empty) (&self) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) Returns true if the buffer is empty. [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/immutable.rs.html#247-249) #### pub fn [as\_slice](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#method.as_slice) (&self) -> &\[[u8](https://doc.rust-lang.org/nightly/std/primitive.u8.html)\ \] [ⓘ](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#) Returns the byte slice stored in this buffer [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/immutable.rs.html#263-267) #### pub fn [slice](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#method.slice) (&self, offset: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) ) -> Self Returns a new [Buffer](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html "struct arrow_buffer::buffer::Buffer") that is a slice of this buffer starting at `offset`. This function is `O(1)` and does not copy any data, allowing the same memory region to be shared between buffers. ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#panics) Panics Panics iff `offset` is larger than `len`. [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/immutable.rs.html#275-288) #### pub fn [advance](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#method.advance) (&mut self, offset: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) ) Increases the offset of this buffer by `offset` ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#panics-1) Panics Panics iff `offset` is larger than `len`. [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/immutable.rs.html#298-312) #### pub fn [slice\_with\_length](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#method.slice_with_length) (&self, offset: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) , length: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) ) -> Self Returns a new [Buffer](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html "struct arrow_buffer::buffer::Buffer") that is a slice of this buffer starting at `offset`, with `length` bytes. This function is `O(1)` and does not copy any data, allowing the same memory region to be shared between buffers. ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#panics-2) Panics Panics iff `(offset + length)` is larger than the existing length. [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/immutable.rs.html#319-321) #### pub fn [as\_ptr](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#method.as_ptr) (&self) -> [\*const](https://doc.rust-lang.org/nightly/std/primitive.pointer.html) [u8](https://doc.rust-lang.org/nightly/std/primitive.u8.html) Returns a pointer to the start of this buffer. Note that this should be used cautiously, and the returned pointer should not be stored anywhere, to avoid dangling pointers. [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/immutable.rs.html#329-336) #### pub fn [typed\_data](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#method.typed_data) (&self) -> &[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html) View buffer as a slice of a specific type. ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#panics-3) Panics This function panics if the underlying buffer is not aligned correctly for type `T`. [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/immutable.rs.html#341-357) #### pub fn [bit\_slice](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#method.bit_slice) (&self, offset: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) , len: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) ) -> Self Returns a slice of this buffer starting at a certain bit offset. If the offset is byte-aligned the returned buffer is a shallow clone, otherwise a new buffer is allocated and filled with a copy of the bits in the range. [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/immutable.rs.html#362-364) #### pub fn [bit\_chunks](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#method.bit_chunks) (&self, offset: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) , len: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) ) -> [BitChunks](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/bit_chunk_iterator/struct.BitChunks.html "struct arrow_buffer::bit_chunk_iterator::BitChunks") <'\_> Returns a `BitChunks` instance which can be used to iterate over this buffers bits in larger chunks and starting at arbitrary bit offsets. Note that both `offset` and `length` are measured in bits. [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/immutable.rs.html#368-370) #### pub fn [count\_set\_bits\_offset](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#method.count_set_bits_offset) (&self, offset: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) , len: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) ) -> [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) Returns the number of 1-bits in this buffer, starting from `offset` with `length` bits inspected. Note that both `offset` and `length` are measured in bits. [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/immutable.rs.html#394-408) #### pub fn [into\_mutable](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#method.into_mutable) (self) -> [Result](https://doc.rust-lang.org/nightly/core/result/enum.Result.html "enum core::result::Result") <[MutableBuffer](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html "struct arrow_buffer::buffer::MutableBuffer") , Self> Returns `MutableBuffer` for mutating the buffer if this buffer is not shared. Returns `Err` if this is shared or its allocation is from an external source or it is not allocated with alignment [`ALIGNMENT`](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/alloc/constant.ALIGNMENT.html "constant arrow_buffer::alloc::ALIGNMENT") ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#example-creating-a-mutablebuffer-from-a-buffer) Example: Creating a [`MutableBuffer`](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html "struct arrow_buffer::buffer::MutableBuffer") from a [`Buffer`](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html "struct arrow_buffer::buffer::Buffer") let buffer: Buffer = Buffer::from(&[1u8, 2, 3, 4][..]); // Only possible to convert a Buffer into a MutableBuffer if uniquely owned // (i.e., there are no other references to it). let mut mutable_buffer = match buffer.into_mutable() { Ok(mutable) => mutable, Err(orig_buffer) => { panic!("buffer was not uniquely owned"); } }; mutable_buffer.push(5u8); let buffer = Buffer::from(mutable_buffer); assert_eq!(buffer.as_slice(), &[1u8, 2, 3, 4, 5]) [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/immutable.rs.html#420-453) #### pub fn [into\_vec](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#method.into_vec) (self) -> [Result](https://doc.rust-lang.org/nightly/core/result/enum.Result.html "enum core::result::Result") <[Vec](https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html "struct alloc::vec::Vec") , Self> Converts self into a `Vec`, if possible. This can be used to reuse / mutate the underlying data. ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#errors) Errors Returns `Err(self)` if 1. The buffer does not have the same [`Layout`](https://doc.rust-lang.org/nightly/core/alloc/layout/struct.Layout.html "struct core::alloc::layout::Layout") as the destination Vec 2. The buffer contains a non-zero offset 3. The buffer is shared [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/immutable.rs.html#459-461) #### pub fn [ptr\_eq](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#method.ptr_eq) (&self, other: &Self) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) Returns true if this [`Buffer`](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html "struct arrow_buffer::buffer::Buffer") is equal to `other`, using pointer comparisons to determine buffer equality. This is cheaper than `PartialEq::eq` but may return false when the arrays are logically equal [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/immutable.rs.html#470-472) #### pub fn [claim](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#method.claim) (&self, pool: &dyn [MemoryPool](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/trait.MemoryPool.html "trait arrow_buffer::MemoryPool") ) Available on **crate feature `pool`** only. Register this [`Buffer`](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html "struct arrow_buffer::buffer::Buffer") with the provided [`MemoryPool`](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/trait.MemoryPool.html "trait arrow_buffer::MemoryPool") This claims the memory used by this buffer in the pool, allowing for accurate accounting of memory usage. Any prior reservation will be released so this works well when the buffer is being shared among multiple arrays. [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/immutable.rs.html#572-615) [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#impl-Buffer-1) ### impl [Buffer](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html "struct arrow_buffer::buffer::Buffer") [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/immutable.rs.html#593-597) #### pub unsafe fn [from\_trusted\_len\_iter](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#method.from_trusted_len_iter) >( iterator: I, ) -> Self Creates a [`Buffer`](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html "struct arrow_buffer::buffer::Buffer") from an [`Iterator`](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html "trait core::iter::traits::iterator::Iterator") with a trusted (upper) length. Prefer this to `collect` whenever possible, as it is ~60% faster. ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#example) Example let v = vec![1u32]; let iter = v.iter().map(|x| x * 2); let buffer = unsafe { Buffer::from_trusted_len_iter(iter) }; assert_eq!(buffer.len(), 4) // u32 has 4 bytes ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#safety-1) Safety This method assumes that the iterator’s size is correct and is undefined behavior to use it on an iterator that reports an incorrect length. [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/immutable.rs.html#606-614) #### pub unsafe fn [try\_from\_trusted\_len\_iter](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#method.try_from_trusted_len_iter) >>( iterator: I, ) -> [Result](https://doc.rust-lang.org/nightly/core/result/enum.Result.html "enum core::result::Result") Creates a [`Buffer`](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html "struct arrow_buffer::buffer::Buffer") from an [`Iterator`](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html "trait core::iter::traits::iterator::Iterator") with a trusted (upper) length or errors if any of the items of the iterator is an error. Prefer this to `collect` whenever possible, as it is ~60% faster. ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#safety-2) Safety This method assumes that the iterator’s size is correct and is undefined behavior to use it on an iterator that reports an incorrect length. Methods from [Deref](https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html "trait core::ops::deref::Deref") [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#deref-methods-%5Bu8%5D) ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 1.23.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/ascii.rs.html#18) #### pub fn [is\_ascii](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#method.is_ascii) (&self) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) Checks if all bytes in this slice are within the ASCII range. An empty slice returns `true`. [Source](https://doc.rust-lang.org/nightly/src/core/slice/ascii.rs.html#27) #### pub fn [as\_ascii](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#method.as_ascii) (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <&\[[AsciiChar](https://doc.rust-lang.org/nightly/core/ascii/ascii_char/enum.AsciiChar.html "enum core::ascii::ascii_char::AsciiChar")\ \]> 🔬This is a nightly-only experimental API. (`ascii_char`) If this slice [`is_ascii`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.is_ascii "method slice::is_ascii") , returns it as a slice of [ASCII characters](https://doc.rust-lang.org/nightly/core/ascii/ascii_char/enum.AsciiChar.html "enum core::ascii::ascii_char::AsciiChar") , otherwise returns `None`. [Source](https://doc.rust-lang.org/nightly/src/core/slice/ascii.rs.html#45) #### pub unsafe fn [as\_ascii\_unchecked](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#method.as_ascii_unchecked) (&self) -> &\[[AsciiChar](https://doc.rust-lang.org/nightly/core/ascii/ascii_char/enum.AsciiChar.html "enum core::ascii::ascii_char::AsciiChar")\ \] 🔬This is a nightly-only experimental API. (`ascii_char`) Converts this slice of bytes into a slice of ASCII characters, without checking whether they’re valid. ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#safety-3) Safety Every byte in the slice must be in `0..=127`, or else this is UB. 1.23.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/ascii.rs.html#60) #### pub fn [eq\_ignore\_ascii\_case](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#method.eq_ignore_ascii_case) (&self, other: &\[[u8](https://doc.rust-lang.org/nightly/std/primitive.u8.html)\ \]) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) Checks that two slices are an ASCII case-insensitive match. Same as `to_ascii_lowercase(a) == to_ascii_lowercase(b)`, but without allocating and copying temporaries. 1.60.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/ascii.rs.html#218) #### pub fn [escape\_ascii](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#method.escape_ascii) (&self) -> [EscapeAscii](https://doc.rust-lang.org/nightly/core/slice/ascii/struct.EscapeAscii.html "struct core::slice::ascii::EscapeAscii") <'\_> Returns an iterator that produces an escaped version of this slice, treating it as an ASCII string. ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#examples) Examples let s = b"0\t\r\n'\"\\\x9d"; let escaped = s.escape_ascii().to_string(); assert_eq!(escaped, "0\\t\\r\\n\\'\\\"\\\\\\x9d"); 1.80.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/ascii.rs.html#237) #### pub fn [trim\_ascii\_start](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#method.trim_ascii_start) (&self) -> &\[[u8](https://doc.rust-lang.org/nightly/std/primitive.u8.html)\ \] [ⓘ](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#) Returns a byte slice with leading ASCII whitespace bytes removed. ‘Whitespace’ refers to the definition used by [`u8::is_ascii_whitespace`](https://doc.rust-lang.org/nightly/std/primitive.u8.html#method.is_ascii_whitespace "method u8::is_ascii_whitespace") . ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#examples-1) Examples assert_eq!(b" \t hello world\n".trim_ascii_start(), b"hello world\n"); assert_eq!(b" ".trim_ascii_start(), b""); assert_eq!(b"".trim_ascii_start(), b""); 1.80.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/ascii.rs.html#266) #### pub fn [trim\_ascii\_end](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#method.trim_ascii_end) (&self) -> &\[[u8](https://doc.rust-lang.org/nightly/std/primitive.u8.html)\ \] [ⓘ](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#) Returns a byte slice with trailing ASCII whitespace bytes removed. ‘Whitespace’ refers to the definition used by [`u8::is_ascii_whitespace`](https://doc.rust-lang.org/nightly/std/primitive.u8.html#method.is_ascii_whitespace "method u8::is_ascii_whitespace") . ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#examples-2) Examples assert_eq!(b"\r hello world\n ".trim_ascii_end(), b"\r hello world"); assert_eq!(b" ".trim_ascii_end(), b""); assert_eq!(b"".trim_ascii_end(), b""); 1.80.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/ascii.rs.html#296) #### pub fn [trim\_ascii](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#method.trim_ascii) (&self) -> &\[[u8](https://doc.rust-lang.org/nightly/std/primitive.u8.html)\ \] [ⓘ](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#) Returns a byte slice with leading and trailing ASCII whitespace bytes removed. ‘Whitespace’ refers to the definition used by [`u8::is_ascii_whitespace`](https://doc.rust-lang.org/nightly/std/primitive.u8.html#method.is_ascii_whitespace "method u8::is_ascii_whitespace") . ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#examples-3) Examples assert_eq!(b"\r hello world\n ".trim_ascii(), b"hello world"); assert_eq!(b" ".trim_ascii(), b""); assert_eq!(b"".trim_ascii(), b""); 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#116) #### pub fn [len](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#method.len-1) (&self) -> [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) Returns the number of elements in the slice. ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#examples-4) Examples let a = [1, 2, 3]; assert_eq!(a.len(), 3); 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#136) #### pub fn [is\_empty](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#method.is_empty-1) (&self) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) Returns `true` if the slice has a length of 0. ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#examples-5) Examples let a = [1, 2, 3]; assert!(!a.is_empty()); let b: &[i32] = &[]; assert!(b.is_empty()); 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#155) #### pub fn [first](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#method.first) (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <[&T](https://doc.rust-lang.org/nightly/std/primitive.reference.html) \> Returns the first element of the slice, or `None` if it is empty. ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#examples-6) Examples let v = [10, 40, 30]; assert_eq!(Some(&10), v.first()); let w: &[i32] = &[]; assert_eq!(None, w.first()); 1.5.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#198) #### pub fn [split\_first](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#method.split_first) (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <([&T](https://doc.rust-lang.org/nightly/std/primitive.reference.html) , &[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html) )> Returns the first and all the rest of the elements of the slice, or `None` if it is empty. ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#examples-7) Examples let x = &[0, 1, 2]; if let Some((first, elements)) = x.split_first() { assert_eq!(first, &0); assert_eq!(elements, &[1, 2]); } 1.5.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#240) #### pub fn [split\_last](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#method.split_last) (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <([&T](https://doc.rust-lang.org/nightly/std/primitive.reference.html) , &[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html) )> Returns the last and all the rest of the elements of the slice, or `None` if it is empty. ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#examples-8) Examples let x = &[0, 1, 2]; if let Some((last, elements)) = x.split_last() { assert_eq!(last, &2); assert_eq!(elements, &[0, 1]); } 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#281) #### pub fn [last](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#method.last) (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <[&T](https://doc.rust-lang.org/nightly/std/primitive.reference.html) \> Returns the last element of the slice, or `None` if it is empty. ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#examples-9) Examples let v = [10, 40, 30]; assert_eq!(Some(&30), v.last()); let w: &[i32] = &[]; assert_eq!(None, w.last()); 1.77.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#327) #### pub fn [first\_chunk](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#method.first_chunk) (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <&[\[T; N\]](https://doc.rust-lang.org/nightly/std/primitive.array.html) \> Returns an array reference to the first `N` items in the slice. If the slice is not at least `N` in length, this will return `None`. ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#examples-10) Examples let u = [10, 40, 30]; assert_eq!(Some(&[10, 40]), u.first_chunk::<2>()); let v: &[i32] = &[10]; assert_eq!(None, v.first_chunk::<2>()); let w: &[i32] = &[]; assert_eq!(Some(&[]), w.first_chunk::<0>()); 1.77.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#387) #### pub fn [split\_first\_chunk](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#method.split_first_chunk) (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <(&[\[T; N\]](https://doc.rust-lang.org/nightly/std/primitive.array.html) , &[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html) )> Returns an array reference to the first `N` items in the slice and the remaining slice. If the slice is not at least `N` in length, this will return `None`. ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#examples-11) Examples let x = &[0, 1, 2]; if let Some((first, elements)) = x.split_first_chunk::<2>() { assert_eq!(first, &[0, 1]); assert_eq!(elements, &[2]); } assert_eq!(None, x.split_first_chunk::<4>()); 1.77.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#447) #### pub fn [split\_last\_chunk](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#method.split_last_chunk) (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <(&[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html) , &[\[T; N\]](https://doc.rust-lang.org/nightly/std/primitive.array.html) )> Returns an array reference to the last `N` items in the slice and the remaining slice. If the slice is not at least `N` in length, this will return `None`. ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#examples-12) Examples let x = &[0, 1, 2]; if let Some((elements, last)) = x.split_last_chunk::<2>() { assert_eq!(elements, &[0]); assert_eq!(last, &[1, 2]); } assert_eq!(None, x.split_last_chunk::<4>()); 1.77.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#509) #### pub fn [last\_chunk](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#method.last_chunk) (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <&[\[T; N\]](https://doc.rust-lang.org/nightly/std/primitive.array.html) \> Returns an array reference to the last `N` items in the slice. If the slice is not at least `N` in length, this will return `None`. ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#examples-13) Examples let u = [10, 40, 30]; assert_eq!(Some(&[40, 30]), u.last_chunk::<2>()); let v: &[i32] = &[10]; assert_eq!(None, v.last_chunk::<2>()); let w: &[i32] = &[]; assert_eq!(Some(&[]), w.last_chunk::<0>()); 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#572-574) #### pub fn [get](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#method.get) (&self, index: I) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <&>::[Output](https://doc.rust-lang.org/nightly/core/slice/index/trait.SliceIndex.html#associatedtype.Output "type core::slice::index::SliceIndex::Output") \> where I: [SliceIndex](https://doc.rust-lang.org/nightly/core/slice/index/trait.SliceIndex.html "trait core::slice::index::SliceIndex") <[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html) \>, Returns a reference to an element or subslice depending on the type of index. * If given a position, returns a reference to the element at that position or `None` if out of bounds. * If given a range, returns the subslice corresponding to that range, or `None` if out of bounds. ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#examples-14) Examples let v = [10, 40, 30]; assert_eq!(Some(&40), v.get(1)); assert_eq!(Some(&[10, 40][..]), v.get(0..2)); assert_eq!(None, v.get(3)); assert_eq!(None, v.get(0..4)); 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#639-641) #### pub unsafe fn [get\_unchecked](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#method.get_unchecked) ( &self, index: I, ) -> &>::[Output](https://doc.rust-lang.org/nightly/core/slice/index/trait.SliceIndex.html#associatedtype.Output "type core::slice::index::SliceIndex::Output") where I: [SliceIndex](https://doc.rust-lang.org/nightly/core/slice/index/trait.SliceIndex.html "trait core::slice::index::SliceIndex") <[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html) \>, Returns a reference to an element or subslice, without doing bounds checking. For a safe alternative see [`get`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.get "method slice::get") . ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#safety-4) Safety Calling this method with an out-of-bounds index is _[undefined behavior](https://doc.rust-lang.org/reference/behavior-considered-undefined.html) _ even if the resulting reference is not used. You can think of this like `.get(index).unwrap_unchecked()`. It’s UB to call `.get_unchecked(len)`, even if you immediately convert to a pointer. And it’s UB to call `.get_unchecked(..len + 1)`, `.get_unchecked(..=len)`, or similar. ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#examples-15) Examples let x = &[1, 2, 4]; unsafe { assert_eq!(x.get_unchecked(1), &2); } 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#726) #### pub fn [as\_ptr](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#method.as_ptr-1) (&self) -> [\*const T](https://doc.rust-lang.org/nightly/std/primitive.pointer.html) Returns a raw pointer to the slice’s buffer. The caller must ensure that the slice outlives the pointer this function returns, or else it will end up dangling. The caller must also ensure that the memory the pointer (non-transitively) points to is never written to (except inside an `UnsafeCell`) using this pointer or any pointer derived from it. If you need to mutate the contents of the slice, use [`as_mut_ptr`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.as_mut_ptr "method slice::as_mut_ptr") . Modifying the container referenced by this slice may cause its buffer to be reallocated, which would also make any pointers to it invalid. ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#examples-16) Examples let x = &[1, 2, 4]; let x_ptr = x.as_ptr(); unsafe { for i in 0..x.len() { assert_eq!(x.get_unchecked(i), &*x_ptr.add(i)); } } 1.48.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#793) #### pub fn [as\_ptr\_range](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#method.as_ptr_range) (&self) -> [Range](https://doc.rust-lang.org/nightly/core/ops/range/struct.Range.html "struct core::ops::range::Range") <[\*const T](https://doc.rust-lang.org/nightly/std/primitive.pointer.html) \> Returns the two raw pointers spanning the slice. The returned range is half-open, which means that the end pointer points _one past_ the last element of the slice. This way, an empty slice is represented by two equal pointers, and the difference between the two pointers represents the size of the slice. See [`as_ptr`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.as_ptr "method slice::as_ptr") for warnings on using these pointers. The end pointer requires extra caution, as it does not point to a valid element in the slice. This function is useful for interacting with foreign interfaces which use two pointers to refer to a range of elements in memory, as is common in C++. It can also be useful to check if a pointer to an element refers to an element of this slice: let a = [1, 2, 3]; let x = &a[1] as *const _; let y = &5 as *const _; assert!(a.as_ptr_range().contains(&x)); assert!(!a.as_ptr_range().contains(&y)); 1.93.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#850) #### pub fn [as\_array](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#method.as_array) (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <&[\[T; N\]](https://doc.rust-lang.org/nightly/std/primitive.array.html) \> Gets a reference to the underlying array. If `N` is not exactly equal to the length of `self`, then this method returns `None`. 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#1040) #### pub fn [iter](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#method.iter) (&self) -> [Iter](https://doc.rust-lang.org/nightly/core/slice/iter/struct.Iter.html "struct core::slice::iter::Iter") <'\_, T> Returns an iterator over the slice. The iterator yields all items from start to end. ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#examples-17) Examples let x = &[1, 2, 4]; let mut iterator = x.iter(); assert_eq!(iterator.next(), Some(&1)); assert_eq!(iterator.next(), Some(&2)); assert_eq!(iterator.next(), Some(&4)); assert_eq!(iterator.next(), None); 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#1115) #### pub fn [windows](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#method.windows) (&self, size: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) ) -> [Windows](https://doc.rust-lang.org/nightly/core/slice/iter/struct.Windows.html "struct core::slice::iter::Windows") <'\_, T> Returns an iterator over all contiguous windows of length `size`. The windows overlap. If the slice is shorter than `size`, the iterator returns no values. ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#panics-4) Panics Panics if `size` is zero. ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#examples-18) Examples let slice = ['l', 'o', 'r', 'e', 'm']; let mut iter = slice.windows(3); assert_eq!(iter.next().unwrap(), &['l', 'o', 'r']); assert_eq!(iter.next().unwrap(), &['o', 'r', 'e']); assert_eq!(iter.next().unwrap(), &['r', 'e', 'm']); assert!(iter.next().is_none()); If the slice is shorter than `size`: let slice = ['f', 'o', 'o']; let mut iter = slice.windows(4); assert!(iter.next().is_none()); Because the [Iterator](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html "trait core::iter::traits::iterator::Iterator") trait cannot represent the required lifetimes, there is no `windows_mut` analog to `windows`; `[0,1,2].windows_mut(2).collect()` would violate [the rules of references](https://doc.rust-lang.org/book/ch04-02-references-and-borrowing.html#the-rules-of-references) (though a [LendingIterator](https://blog.rust-lang.org/2022/10/28/gats-stabilization.html) analog is possible). You can sometimes use [`Cell::as_slice_of_cells`](https://doc.rust-lang.org/nightly/core/cell/struct.Cell.html#method.as_slice_of_cells "method core::cell::Cell::as_slice_of_cells") in conjunction with `windows` instead: use std::cell::Cell; let mut array = ['R', 'u', 's', 't', ' ', '2', '0', '1', '5']; let slice = &mut array[..]; let slice_of_cells: &[Cell] = Cell::from_mut(slice).as_slice_of_cells(); for w in slice_of_cells.windows(3) { Cell::swap(&w[0], &w[2]); } assert_eq!(array, ['s', 't', ' ', '2', '0', '1', '5', 'u', 'R']); 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#1155) #### pub fn [chunks](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#method.chunks) (&self, chunk\_size: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) ) -> [Chunks](https://doc.rust-lang.org/nightly/core/slice/iter/struct.Chunks.html "struct core::slice::iter::Chunks") <'\_, T> Returns an iterator over `chunk_size` elements of the slice at a time, starting at the beginning of the slice. The chunks are slices and do not overlap. If `chunk_size` does not divide the length of the slice, then the last chunk will not have length `chunk_size`. See [`chunks_exact`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.chunks_exact "method slice::chunks_exact") for a variant of this iterator that returns chunks of always exactly `chunk_size` elements, and [`rchunks`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.rchunks "method slice::rchunks") for the same iterator but starting at the end of the slice. If your `chunk_size` is a constant, consider using [`as_chunks`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.as_chunks "method slice::as_chunks") instead, which will give references to arrays of exactly that length, rather than slices. ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#panics-5) Panics Panics if `chunk_size` is zero. ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#examples-19) Examples let slice = ['l', 'o', 'r', 'e', 'm']; let mut iter = slice.chunks(2); assert_eq!(iter.next().unwrap(), &['l', 'o']); assert_eq!(iter.next().unwrap(), &['r', 'e']); assert_eq!(iter.next().unwrap(), &['m']); assert!(iter.next().is_none()); 1.31.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#1242) #### pub fn [chunks\_exact](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#method.chunks_exact) (&self, chunk\_size: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) ) -> [ChunksExact](https://doc.rust-lang.org/nightly/core/slice/iter/struct.ChunksExact.html "struct core::slice::iter::ChunksExact") <'\_, T> Returns an iterator over `chunk_size` elements of the slice at a time, starting at the beginning of the slice. The chunks are slices and do not overlap. If `chunk_size` does not divide the length of the slice, then the last up to `chunk_size-1` elements will be omitted and can be retrieved from the `remainder` function of the iterator. Due to each chunk having exactly `chunk_size` elements, the compiler can often optimize the resulting code better than in the case of [`chunks`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.chunks "method slice::chunks") . See [`chunks`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.chunks "method slice::chunks") for a variant of this iterator that also returns the remainder as a smaller chunk, and [`rchunks_exact`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.rchunks_exact "method slice::rchunks_exact") for the same iterator but starting at the end of the slice. If your `chunk_size` is a constant, consider using [`as_chunks`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.as_chunks "method slice::as_chunks") instead, which will give references to arrays of exactly that length, rather than slices. ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#panics-6) Panics Panics if `chunk_size` is zero. ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#examples-20) Examples let slice = ['l', 'o', 'r', 'e', 'm']; let mut iter = slice.chunks_exact(2); assert_eq!(iter.next().unwrap(), &['l', 'o']); assert_eq!(iter.next().unwrap(), &['r', 'e']); assert!(iter.next().is_none()); assert_eq!(iter.remainder(), &['m']); 1.88.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#1338) #### pub unsafe fn [as\_chunks\_unchecked](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#method.as_chunks_unchecked) (&self) -> &\[[\[T; N\]](https://doc.rust-lang.org/nightly/std/primitive.array.html)\ \] Splits the slice into a slice of `N`\-element arrays, assuming that there’s no remainder. This is the inverse operation to [`as_flattened`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.as_flattened "method slice::as_flattened") . As this is `unsafe`, consider whether you could use [`as_chunks`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.as_chunks "method slice::as_chunks") or [`as_rchunks`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.as_rchunks "method slice::as_rchunks") instead, perhaps via something like `if let (chunks, []) = slice.as_chunks()` or `let (chunks, []) = slice.as_chunks() else { unreachable!() };`. ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#safety-5) Safety This may only be called when * The slice splits exactly into `N`\-element chunks (aka `self.len() % N == 0`). * `N != 0`. ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#examples-21) Examples let slice: &[char] = &['l', 'o', 'r', 'e', 'm', '!']; let chunks: &[[char; 1]] = // SAFETY: 1-element chunks never have remainder unsafe { slice.as_chunks_unchecked() }; assert_eq!(chunks, &[['l'], ['o'], ['r'], ['e'], ['m'], ['!']]); let chunks: &[[char; 3]] = // SAFETY: The slice length (6) is a multiple of 3 unsafe { slice.as_chunks_unchecked() }; assert_eq!(chunks, &[['l', 'o', 'r'], ['e', 'm', '!']]); // These would be unsound: // let chunks: &[[_; 5]] = slice.as_chunks_unchecked() // The slice length is not a multiple of 5 // let chunks: &[[_; 0]] = slice.as_chunks_unchecked() // Zero-length chunks are never allowed 1.88.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#1396) #### pub fn [as\_chunks](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#method.as_chunks) (&self) -> (&\[[\[T; N\]](https://doc.rust-lang.org/nightly/std/primitive.array.html)\ \], &[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html) ) Splits the slice into a slice of `N`\-element arrays, starting at the beginning of the slice, and a remainder slice with length strictly less than `N`. The remainder is meaningful in the division sense. Given `let (chunks, remainder) = slice.as_chunks()`, then: * `chunks.len()` equals `slice.len() / N`, * `remainder.len()` equals `slice.len() % N`, and * `slice.len()` equals `chunks.len() * N + remainder.len()`. You can flatten the chunks back into a slice-of-`T` with [`as_flattened`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.as_flattened "method slice::as_flattened") . ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#panics-7) Panics Panics if `N` is zero. Note that this check is against a const generic parameter, not a runtime value, and thus a particular monomorphization will either always panic or it will never panic. ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#examples-22) Examples let slice = ['l', 'o', 'r', 'e', 'm']; let (chunks, remainder) = slice.as_chunks(); assert_eq!(chunks, &[['l', 'o'], ['r', 'e']]); assert_eq!(remainder, &['m']); If you expect the slice to be an exact multiple, you can combine `let`\-`else` with an empty slice pattern: let slice = ['R', 'u', 's', 't']; let (chunks, []) = slice.as_chunks::<2>() else { panic!("slice didn't have even length") }; assert_eq!(chunks, &[['R', 'u'], ['s', 't']]); 1.88.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#1443) #### pub fn [as\_rchunks](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#method.as_rchunks) (&self) -> (&[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html) , &\[[\[T; N\]](https://doc.rust-lang.org/nightly/std/primitive.array.html)\ \]) Splits the slice into a slice of `N`\-element arrays, starting at the end of the slice, and a remainder slice with length strictly less than `N`. The remainder is meaningful in the division sense. Given `let (remainder, chunks) = slice.as_rchunks()`, then: * `remainder.len()` equals `slice.len() % N`, * `chunks.len()` equals `slice.len() / N`, and * `slice.len()` equals `chunks.len() * N + remainder.len()`. You can flatten the chunks back into a slice-of-`T` with [`as_flattened`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.as_flattened "method slice::as_flattened") . ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#panics-8) Panics Panics if `N` is zero. Note that this check is against a const generic parameter, not a runtime value, and thus a particular monomorphization will either always panic or it will never panic. ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#examples-23) Examples let slice = ['l', 'o', 'r', 'e', 'm']; let (remainder, chunks) = slice.as_rchunks(); assert_eq!(remainder, &['l']); assert_eq!(chunks, &[['o', 'r'], ['e', 'm']]); 1.94.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#1646) #### pub fn [array\_windows](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#method.array_windows) (&self) -> [ArrayWindows](https://doc.rust-lang.org/nightly/core/slice/iter/struct.ArrayWindows.html "struct core::slice::iter::ArrayWindows") <'\_, T, N> Returns an iterator over overlapping windows of `N` elements of a slice, starting at the beginning of the slice. This is the const generic equivalent of [`windows`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.windows "method slice::windows") . If `N` is greater than the size of the slice, it will return no windows. ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#panics-9) Panics Panics if `N` is zero. Note that this check is against a const generic parameter, not a runtime value, and thus a particular monomorphization will either always panic or it will never panic. ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#examples-24) Examples let slice = [0, 1, 2, 3]; let mut iter = slice.array_windows(); assert_eq!(iter.next().unwrap(), &[0, 1]); assert_eq!(iter.next().unwrap(), &[1, 2]); assert_eq!(iter.next().unwrap(), &[2, 3]); assert!(iter.next().is_none()); 1.31.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#1686) #### pub fn [rchunks](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#method.rchunks) (&self, chunk\_size: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) ) -> [RChunks](https://doc.rust-lang.org/nightly/core/slice/iter/struct.RChunks.html "struct core::slice::iter::RChunks") <'\_, T> Returns an iterator over `chunk_size` elements of the slice at a time, starting at the end of the slice. The chunks are slices and do not overlap. If `chunk_size` does not divide the length of the slice, then the last chunk will not have length `chunk_size`. See [`rchunks_exact`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.rchunks_exact "method slice::rchunks_exact") for a variant of this iterator that returns chunks of always exactly `chunk_size` elements, and [`chunks`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.chunks "method slice::chunks") for the same iterator but starting at the beginning of the slice. If your `chunk_size` is a constant, consider using [`as_rchunks`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.as_rchunks "method slice::as_rchunks") instead, which will give references to arrays of exactly that length, rather than slices. ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#panics-10) Panics Panics if `chunk_size` is zero. ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#examples-25) Examples let slice = ['l', 'o', 'r', 'e', 'm']; let mut iter = slice.rchunks(2); assert_eq!(iter.next().unwrap(), &['e', 'm']); assert_eq!(iter.next().unwrap(), &['o', 'r']); assert_eq!(iter.next().unwrap(), &['l']); assert!(iter.next().is_none()); 1.31.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#1775) #### pub fn [rchunks\_exact](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#method.rchunks_exact) (&self, chunk\_size: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) ) -> [RChunksExact](https://doc.rust-lang.org/nightly/core/slice/iter/struct.RChunksExact.html "struct core::slice::iter::RChunksExact") <'\_, T> Returns an iterator over `chunk_size` elements of the slice at a time, starting at the end of the slice. The chunks are slices and do not overlap. If `chunk_size` does not divide the length of the slice, then the last up to `chunk_size-1` elements will be omitted and can be retrieved from the `remainder` function of the iterator. Due to each chunk having exactly `chunk_size` elements, the compiler can often optimize the resulting code better than in the case of [`rchunks`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.rchunks "method slice::rchunks") . See [`rchunks`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.rchunks "method slice::rchunks") for a variant of this iterator that also returns the remainder as a smaller chunk, and [`chunks_exact`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.chunks_exact "method slice::chunks_exact") for the same iterator but starting at the beginning of the slice. If your `chunk_size` is a constant, consider using [`as_rchunks`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.as_rchunks "method slice::as_rchunks") instead, which will give references to arrays of exactly that length, rather than slices. ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#panics-11) Panics Panics if `chunk_size` is zero. ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#examples-26) Examples let slice = ['l', 'o', 'r', 'e', 'm']; let mut iter = slice.rchunks_exact(2); assert_eq!(iter.next().unwrap(), &['e', 'm']); assert_eq!(iter.next().unwrap(), &['o', 'r']); assert!(iter.next().is_none()); assert_eq!(iter.remainder(), &['l']); 1.77.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#1864-1866) #### pub fn [chunk\_by](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#method.chunk_by) (&self, pred: F) -> [ChunkBy](https://doc.rust-lang.org/nightly/core/slice/iter/struct.ChunkBy.html "struct core::slice::iter::ChunkBy") <'\_, T, F> where F: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut") ([&T](https://doc.rust-lang.org/nightly/std/primitive.reference.html) , [&T](https://doc.rust-lang.org/nightly/std/primitive.reference.html) ) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) , Returns an iterator over the slice producing non-overlapping runs of elements using the predicate to separate them. The predicate is called for every pair of consecutive elements, meaning that it is called on `slice[0]` and `slice[1]`, followed by `slice[1]` and `slice[2]`, and so on. ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#examples-27) Examples let slice = &[1, 1, 1, 3, 3, 2, 2, 2]; let mut iter = slice.chunk_by(|a, b| a == b); assert_eq!(iter.next(), Some(&[1, 1, 1][..])); assert_eq!(iter.next(), Some(&[3, 3][..])); assert_eq!(iter.next(), Some(&[2, 2, 2][..])); assert_eq!(iter.next(), None); This method can be used to extract the sorted subslices: let slice = &[1, 1, 2, 3, 2, 3, 2, 3, 4]; let mut iter = slice.chunk_by(|a, b| a <= b); assert_eq!(iter.next(), Some(&[1, 1, 2, 3][..])); assert_eq!(iter.next(), Some(&[2, 3][..])); assert_eq!(iter.next(), Some(&[2, 3, 4][..])); assert_eq!(iter.next(), None); 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#1952) #### pub fn [split\_at](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#method.split_at) (&self, mid: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) ) -> (&[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html) , &[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html) ) Divides one slice into two at an index. The first will contain all indices from `[0, mid)` (excluding the index `mid` itself) and the second will contain all indices from `[mid, len)` (excluding the index `len` itself).\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#panics-12)\ Panics\ \ Panics if `mid > len`. For a non-panicking alternative see [`split_at_checked`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.split_at_checked "method slice::split_at_checked")\ .\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#examples-28)\ Examples\ \ let v = ['a', 'b', 'c'];\ \ {\ let (left, right) = v.split_at(0);\ assert_eq!(left, []);\ assert_eq!(right, ['a', 'b', 'c']);\ }\ \ {\ let (left, right) = v.split_at(2);\ assert_eq!(left, ['a', 'b']);\ assert_eq!(right, ['c']);\ }\ \ {\ let (left, right) = v.split_at(3);\ assert_eq!(left, ['a', 'b', 'c']);\ assert_eq!(right, []);\ }\ \ 1.79.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#2038)\ \ #### pub unsafe fn [split\_at\_unchecked](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#method.split_at_unchecked)\ (&self, mid: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html)\ ) -> (&[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ , &[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ )\ \ Divides one slice into two at an index, without doing bounds checking.\ \ The first will contain all indices from `[0, mid)` (excluding the index `mid` itself) and the second will contain all indices from `[mid, len)` (excluding the index `len` itself).\ \ For a safe alternative see [`split_at`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.split_at "method slice::split_at")\ .\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#safety-6)\ Safety\ \ Calling this method with an out-of-bounds index is _[undefined behavior](https://doc.rust-lang.org/reference/behavior-considered-undefined.html)\ _ even if the resulting reference is not used. The caller has to ensure that `0 <= mid <= self.len()`.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#examples-29)\ Examples\ \ let v = ['a', 'b', 'c'];\ \ unsafe {\ let (left, right) = v.split_at_unchecked(0);\ assert_eq!(left, []);\ assert_eq!(right, ['a', 'b', 'c']);\ }\ \ unsafe {\ let (left, right) = v.split_at_unchecked(2);\ assert_eq!(left, ['a', 'b']);\ assert_eq!(right, ['c']);\ }\ \ unsafe {\ let (left, right) = v.split_at_unchecked(3);\ assert_eq!(left, ['a', 'b', 'c']);\ assert_eq!(right, []);\ }\ \ 1.80.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#2153)\ \ #### pub fn [split\_at\_checked](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#method.split_at_checked)\ (&self, mid: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html)\ ) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option")\ <(&[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ , &[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ )>\ \ Divides one slice into two at an index, returning `None` if the slice is too short.\ \ If `mid ≤ len` returns a pair of slices where the first will contain all indices from `[0, mid)` (excluding the index `mid` itself) and the second will contain all indices from `[mid, len)` (excluding the index `len` itself).\ \ Otherwise, if `mid > len`, returns `None`.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#examples-30)\ Examples\ \ let v = [1, -2, 3, -4, 5, -6];\ \ {\ let (left, right) = v.split_at_checked(0).unwrap();\ assert_eq!(left, []);\ assert_eq!(right, [1, -2, 3, -4, 5, -6]);\ }\ \ {\ let (left, right) = v.split_at_checked(2).unwrap();\ assert_eq!(left, [1, -2]);\ assert_eq!(right, [3, -4, 5, -6]);\ }\ \ {\ let (left, right) = v.split_at_checked(6).unwrap();\ assert_eq!(left, [1, -2, 3, -4, 5, -6]);\ assert_eq!(right, []);\ }\ \ assert_eq!(None, v.split_at_checked(7));\ \ 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#2244-2246)\ \ #### pub fn [split](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#method.split)\ (&self, pred: F) -> [Split](https://doc.rust-lang.org/nightly/core/slice/iter/struct.Split.html "struct core::slice::iter::Split")\ <'\_, T, F>\ \ where F: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut")\ ([&T](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ ) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html)\ ,\ \ Returns an iterator over subslices separated by elements that match `pred`. The matched element is not contained in the subslices.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#examples-31)\ Examples\ \ let slice = [10, 40, 33, 20];\ let mut iter = slice.split(|num| num % 3 == 0);\ \ assert_eq!(iter.next().unwrap(), &[10, 40]);\ assert_eq!(iter.next().unwrap(), &[20]);\ assert!(iter.next().is_none());\ \ If the first element is matched, an empty slice will be the first item returned by the iterator. Similarly, if the last element in the slice is matched, an empty slice will be the last item returned by the iterator:\ \ let slice = [10, 40, 33];\ let mut iter = slice.split(|num| num % 3 == 0);\ \ assert_eq!(iter.next().unwrap(), &[10, 40]);\ assert_eq!(iter.next().unwrap(), &[]);\ assert!(iter.next().is_none());\ \ If two matched elements are directly adjacent, an empty slice will be present between them:\ \ let slice = [10, 6, 33, 20];\ let mut iter = slice.split(|num| num % 3 == 0);\ \ assert_eq!(iter.next().unwrap(), &[10]);\ assert_eq!(iter.next().unwrap(), &[]);\ assert_eq!(iter.next().unwrap(), &[20]);\ assert!(iter.next().is_none());\ \ 1.51.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#2302-2304)\ \ #### pub fn [split\_inclusive](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#method.split_inclusive)\ (&self, pred: F) -> [SplitInclusive](https://doc.rust-lang.org/nightly/core/slice/iter/struct.SplitInclusive.html "struct core::slice::iter::SplitInclusive")\ <'\_, T, F>\ \ where F: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut")\ ([&T](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ ) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html)\ ,\ \ Returns an iterator over subslices separated by elements that match `pred`. The matched element is contained in the end of the previous subslice as a terminator.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#examples-32)\ Examples\ \ let slice = [10, 40, 33, 20];\ let mut iter = slice.split_inclusive(|num| num % 3 == 0);\ \ assert_eq!(iter.next().unwrap(), &[10, 40, 33]);\ assert_eq!(iter.next().unwrap(), &[20]);\ assert!(iter.next().is_none());\ \ If the last element of the slice is matched, that element will be considered the terminator of the preceding slice. That slice will be the last item returned by the iterator.\ \ let slice = [3, 10, 40, 33];\ let mut iter = slice.split_inclusive(|num| num % 3 == 0);\ \ assert_eq!(iter.next().unwrap(), &[3]);\ assert_eq!(iter.next().unwrap(), &[10, 40, 33]);\ assert!(iter.next().is_none());\ \ 1.27.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#2362-2364)\ \ #### pub fn [rsplit](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#method.rsplit)\ (&self, pred: F) -> [RSplit](https://doc.rust-lang.org/nightly/core/slice/iter/struct.RSplit.html "struct core::slice::iter::RSplit")\ <'\_, T, F>\ \ where F: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut")\ ([&T](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ ) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html)\ ,\ \ Returns an iterator over subslices separated by elements that match `pred`, starting at the end of the slice and working backwards. The matched element is not contained in the subslices.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#examples-33)\ Examples\ \ let slice = [11, 22, 33, 0, 44, 55];\ let mut iter = slice.rsplit(|num| *num == 0);\ \ assert_eq!(iter.next().unwrap(), &[44, 55]);\ assert_eq!(iter.next().unwrap(), &[11, 22, 33]);\ assert_eq!(iter.next(), None);\ \ As with `split()`, if the first or last element is matched, an empty slice will be the first (or last) item returned by the iterator.\ \ let v = &[0, 1, 1, 2, 3, 5, 8];\ let mut it = v.rsplit(|n| *n % 2 == 0);\ assert_eq!(it.next().unwrap(), &[]);\ assert_eq!(it.next().unwrap(), &[3, 5]);\ assert_eq!(it.next().unwrap(), &[1, 1]);\ assert_eq!(it.next().unwrap(), &[]);\ assert_eq!(it.next(), None);\ \ 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#2416-2418)\ \ #### pub fn [splitn](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#method.splitn)\ (&self, n: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html)\ , pred: F) -> [SplitN](https://doc.rust-lang.org/nightly/core/slice/iter/struct.SplitN.html "struct core::slice::iter::SplitN")\ <'\_, T, F>\ \ where F: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut")\ ([&T](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ ) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html)\ ,\ \ Returns an iterator over subslices separated by elements that match `pred`, limited to returning at most `n` items. The matched element is not contained in the subslices.\ \ The last element returned, if any, will contain the remainder of the slice.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#examples-34)\ Examples\ \ Print the slice split once by numbers divisible by 3 (i.e., `[10, 40]`, `[20, 60, 50]`):\ \ let v = [10, 40, 30, 20, 60, 50];\ \ for group in v.splitn(2, |num| *num % 3 == 0) {\ println!("{group:?}");\ }\ \ 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#2471-2473)\ \ #### pub fn [rsplitn](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#method.rsplitn)\ (&self, n: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html)\ , pred: F) -> [RSplitN](https://doc.rust-lang.org/nightly/core/slice/iter/struct.RSplitN.html "struct core::slice::iter::RSplitN")\ <'\_, T, F>\ \ where F: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut")\ ([&T](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ ) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html)\ ,\ \ Returns an iterator over subslices separated by elements that match `pred` limited to returning at most `n` items. This starts at the end of the slice and works backwards. The matched element is not contained in the subslices.\ \ The last element returned, if any, will contain the remainder of the slice.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#examples-35)\ Examples\ \ Print the slice split once, starting from the end, by numbers divisible by 3 (i.e., `[50]`, `[10, 40, 30, 20]`):\ \ let v = [10, 40, 30, 20, 60, 50];\ \ for group in v.rsplitn(2, |num| *num % 3 == 0) {\ println!("{group:?}");\ }\ \ [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#2525-2527)\ \ #### pub fn [split\_once](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#method.split_once)\ (&self, pred: F) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option")\ <(&[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ , &[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ )>\ \ where F: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut")\ ([&T](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ ) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html)\ ,\ \ 🔬This is a nightly-only experimental API. (`slice_split_once`)\ \ Splits the slice on the first element that matches the specified predicate.\ \ If any matching elements are present in the slice, returns the prefix before the match and suffix after. The matching element itself is not included. If no elements match, returns `None`.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#examples-36)\ Examples\ \ #![feature(slice_split_once)]\ let s = [1, 2, 3, 2, 4];\ assert_eq!(s.split_once(|&x| x == 2), Some((\ &[1][..],\ &[3, 2, 4][..]\ )));\ assert_eq!(s.split_once(|&x| x == 0), None);\ \ [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#2553-2555)\ \ #### pub fn [rsplit\_once](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#method.rsplit_once)\ (&self, pred: F) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option")\ <(&[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ , &[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ )>\ \ where F: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut")\ ([&T](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ ) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html)\ ,\ \ 🔬This is a nightly-only experimental API. (`slice_split_once`)\ \ Splits the slice on the last element that matches the specified predicate.\ \ If any matching elements are present in the slice, returns the prefix before the match and suffix after. The matching element itself is not included. If no elements match, returns `None`.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#examples-37)\ Examples\ \ #![feature(slice_split_once)]\ let s = [1, 2, 3, 2, 4];\ assert_eq!(s.rsplit_once(|&x| x == 2), Some((\ &[1, 2, 3][..],\ &[4][..]\ )));\ assert_eq!(s.rsplit_once(|&x| x == 0), None);\ \ 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#2589-2591)\ \ #### pub fn [contains](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#method.contains)\ (&self, x: [&T](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ ) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html)\ \ where T: [PartialEq](https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html "trait core::cmp::PartialEq")\ ,\ \ Returns `true` if the slice contains an element with the given value.\ \ This operation is _O_(_n_).\ \ Note that if you have a sorted slice, [`binary_search`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.binary_search "method slice::binary_search")\ may be faster.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#examples-38)\ Examples\ \ let v = [10, 40, 30];\ assert!(v.contains(&30));\ assert!(!v.contains(&50));\ \ If you do not have a `&T`, but some other value that you can compare with one (for example, `String` implements `PartialEq`), you can use `iter().any`:\ \ let v = [String::from("hello"), String::from("world")]; // slice of `String`\ assert!(v.iter().any(|e| e == "hello")); // search with `&str`\ assert!(!v.iter().any(|e| e == "hi"));\ \ 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#2619-2621)\ \ #### pub fn [starts\_with](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#method.starts_with)\ (&self, needle: &[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ ) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html)\ \ where T: [PartialEq](https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html "trait core::cmp::PartialEq")\ ,\ \ Returns `true` if `needle` is a prefix of the slice or equal to the slice.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#examples-39)\ Examples\ \ let v = [10, 40, 30];\ assert!(v.starts_with(&[10]));\ assert!(v.starts_with(&[10, 40]));\ assert!(v.starts_with(&v));\ assert!(!v.starts_with(&[50]));\ assert!(!v.starts_with(&[10, 50]));\ \ Always returns `true` if `needle` is an empty slice:\ \ let v = &[10, 40, 30];\ assert!(v.starts_with(&[]));\ let v: &[u8] = &[];\ assert!(v.starts_with(&[]));\ \ 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#2650-2652)\ \ #### pub fn [ends\_with](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#method.ends_with)\ (&self, needle: &[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ ) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html)\ \ where T: [PartialEq](https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html "trait core::cmp::PartialEq")\ ,\ \ Returns `true` if `needle` is a suffix of the slice or equal to the slice.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#examples-40)\ Examples\ \ let v = [10, 40, 30];\ assert!(v.ends_with(&[30]));\ assert!(v.ends_with(&[40, 30]));\ assert!(v.ends_with(&v));\ assert!(!v.ends_with(&[50]));\ assert!(!v.ends_with(&[50, 30]));\ \ Always returns `true` if `needle` is an empty slice:\ \ let v = &[10, 40, 30];\ assert!(v.ends_with(&[]));\ let v: &[u8] = &[];\ assert!(v.ends_with(&[]));\ \ 1.51.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#2682-2684)\ \ #### pub fn [strip\_prefix](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#method.strip_prefix)\

(&self, prefix: [&P](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ ) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option")\ <&[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ \>\ \ where P: [SlicePattern](https://doc.rust-lang.org/nightly/core/slice/trait.SlicePattern.html "trait core::slice::SlicePattern")\ + ?[Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized")\ , T: [PartialEq](https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html "trait core::cmp::PartialEq")\ ,\ \ Returns a subslice with the prefix removed.\ \ If the slice starts with `prefix`, returns the subslice after the prefix, wrapped in `Some`. If `prefix` is empty, simply returns the original slice. If `prefix` is equal to the original slice, returns an empty slice.\ \ If the slice does not start with `prefix`, returns `None`.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#examples-41)\ Examples\ \ let v = &[10, 40, 30];\ assert_eq!(v.strip_prefix(&[10]), Some(&[40, 30][..]));\ assert_eq!(v.strip_prefix(&[10, 40]), Some(&[30][..]));\ assert_eq!(v.strip_prefix(&[10, 40, 30]), Some(&[][..]));\ assert_eq!(v.strip_prefix(&[50]), None);\ assert_eq!(v.strip_prefix(&[10, 50]), None);\ \ let prefix : &str = "he";\ assert_eq!(b"hello".strip_prefix(prefix.as_bytes()),\ Some(b"llo".as_ref()));\ \ 1.51.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#2718-2720)\ \ #### pub fn [strip\_suffix](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#method.strip_suffix)\

(&self, suffix: [&P](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ ) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option")\ <&[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ \>\ \ where P: [SlicePattern](https://doc.rust-lang.org/nightly/core/slice/trait.SlicePattern.html "trait core::slice::SlicePattern")\ + ?[Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized")\ , T: [PartialEq](https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html "trait core::cmp::PartialEq")\ ,\ \ Returns a subslice with the suffix removed.\ \ If the slice ends with `suffix`, returns the subslice before the suffix, wrapped in `Some`. If `suffix` is empty, simply returns the original slice. If `suffix` is equal to the original slice, returns an empty slice.\ \ If the slice does not end with `suffix`, returns `None`.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#examples-42)\ Examples\ \ let v = &[10, 40, 30];\ assert_eq!(v.strip_suffix(&[30]), Some(&[10, 40][..]));\ assert_eq!(v.strip_suffix(&[40, 30]), Some(&[10][..]));\ assert_eq!(v.strip_suffix(&[10, 40, 30]), Some(&[][..]));\ assert_eq!(v.strip_suffix(&[50]), None);\ assert_eq!(v.strip_suffix(&[50, 30]), None);\ \ [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#2757-2761)\ \ #### pub fn [strip\_circumfix](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#method.strip_circumfix)\ (&self, prefix: [&P](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ , suffix: [&S](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ ) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option")\ <&[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ \>\ \ where T: [PartialEq](https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html "trait core::cmp::PartialEq")\ , S: [SlicePattern](https://doc.rust-lang.org/nightly/core/slice/trait.SlicePattern.html "trait core::slice::SlicePattern")\ + ?[Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized")\ , P: [SlicePattern](https://doc.rust-lang.org/nightly/core/slice/trait.SlicePattern.html "trait core::slice::SlicePattern")\ + ?[Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized")\ ,\ \ 🔬This is a nightly-only experimental API. (`strip_circumfix`)\ \ Returns a subslice with the prefix and suffix removed.\ \ If the slice starts with `prefix` and ends with `suffix`, returns the subslice after the prefix and before the suffix, wrapped in `Some`.\ \ If the slice does not start with `prefix` or does not end with `suffix`, returns `None`.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#examples-43)\ Examples\ \ #![feature(strip_circumfix)]\ \ let v = &[10, 50, 40, 30];\ assert_eq!(v.strip_circumfix(&[10], &[30]), Some(&[50, 40][..]));\ assert_eq!(v.strip_circumfix(&[10], &[40, 30]), Some(&[50][..]));\ assert_eq!(v.strip_circumfix(&[10, 50], &[40, 30]), Some(&[][..]));\ assert_eq!(v.strip_circumfix(&[50], &[30]), None);\ assert_eq!(v.strip_circumfix(&[10], &[40]), None);\ assert_eq!(v.strip_circumfix(&[], &[40, 30]), Some(&[10, 50][..]));\ assert_eq!(v.strip_circumfix(&[10, 50], &[]), Some(&[40, 30][..]));\ \ [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#2793-2795)\ \ #### pub fn [trim\_prefix](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#method.trim_prefix)\

(&self, prefix: [&P](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ ) -> &[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ \ where P: [SlicePattern](https://doc.rust-lang.org/nightly/core/slice/trait.SlicePattern.html "trait core::slice::SlicePattern")\ + ?[Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized")\ , T: [PartialEq](https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html "trait core::cmp::PartialEq")\ ,\ \ 🔬This is a nightly-only experimental API. (`trim_prefix_suffix`)\ \ Returns a subslice with the optional prefix removed.\ \ If the slice starts with `prefix`, returns the subslice after the prefix. If `prefix` is empty or the slice does not start with `prefix`, simply returns the original slice. If `prefix` is equal to the original slice, returns an empty slice.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#examples-44)\ Examples\ \ #![feature(trim_prefix_suffix)]\ \ let v = &[10, 40, 30];\ \ // Prefix present - removes it\ assert_eq!(v.trim_prefix(&[10]), &[40, 30][..]);\ assert_eq!(v.trim_prefix(&[10, 40]), &[30][..]);\ assert_eq!(v.trim_prefix(&[10, 40, 30]), &[][..]);\ \ // Prefix absent - returns original slice\ assert_eq!(v.trim_prefix(&[50]), &[10, 40, 30][..]);\ assert_eq!(v.trim_prefix(&[10, 50]), &[10, 40, 30][..]);\ \ let prefix : &str = "he";\ assert_eq!(b"hello".trim_prefix(prefix.as_bytes()), b"llo".as_ref());\ \ [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#2833-2835)\ \ #### pub fn [trim\_suffix](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#method.trim_suffix)\

(&self, suffix: [&P](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ ) -> &[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ \ where P: [SlicePattern](https://doc.rust-lang.org/nightly/core/slice/trait.SlicePattern.html "trait core::slice::SlicePattern")\ + ?[Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized")\ , T: [PartialEq](https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html "trait core::cmp::PartialEq")\ ,\ \ 🔬This is a nightly-only experimental API. (`trim_prefix_suffix`)\ \ Returns a subslice with the optional suffix removed.\ \ If the slice ends with `suffix`, returns the subslice before the suffix. If `suffix` is empty or the slice does not end with `suffix`, simply returns the original slice. If `suffix` is equal to the original slice, returns an empty slice.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#examples-45)\ Examples\ \ #![feature(trim_prefix_suffix)]\ \ let v = &[10, 40, 30];\ \ // Suffix present - removes it\ assert_eq!(v.trim_suffix(&[30]), &[10, 40][..]);\ assert_eq!(v.trim_suffix(&[40, 30]), &[10][..]);\ assert_eq!(v.trim_suffix(&[10, 40, 30]), &[][..]);\ \ // Suffix absent - returns original slice\ assert_eq!(v.trim_suffix(&[50]), &[10, 40, 30][..]);\ assert_eq!(v.trim_suffix(&[50, 30]), &[10, 40, 30][..]);\ \ 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#2919-2921)\ \ #### pub fn [binary\_search](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#method.binary_search)\ (&self, x: [&T](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ ) -> [Result](https://doc.rust-lang.org/nightly/core/result/enum.Result.html "enum core::result::Result")\ <[usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html)\ , [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html)\ \>\ \ where T: [Ord](https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html "trait core::cmp::Ord")\ ,\ \ Binary searches this slice for a given element. If the slice is not sorted, the returned result is unspecified and meaningless.\ \ If the value is found then [`Result::Ok`](https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Ok "variant core::result::Result::Ok")\ is returned, containing the index of the matching element. If there are multiple matches, then any one of the matches could be returned. The index is chosen deterministically, but is subject to change in future versions of Rust. If the value is not found then [`Result::Err`](https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Err "variant core::result::Result::Err")\ is returned, containing the index where a matching element could be inserted while maintaining sorted order.\ \ See also [`binary_search_by`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.binary_search_by "method slice::binary_search_by")\ , [`binary_search_by_key`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.binary_search_by_key "method slice::binary_search_by_key")\ , and [`partition_point`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.partition_point "method slice::partition_point")\ .\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#examples-46)\ Examples\ \ Looks up a series of four elements. The first is found, with a uniquely determined position; the second and third are not found; the fourth could match any position in `[1, 4]`.\ \ let s = [0, 1, 1, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55];\ \ assert_eq!(s.binary_search(&13), Ok(9));\ assert_eq!(s.binary_search(&4), Err(7));\ assert_eq!(s.binary_search(&100), Err(13));\ let r = s.binary_search(&1);\ assert!(match r { Ok(1..=4) => true, _ => false, });\ \ If you want to find that whole _range_ of matching items, rather than an arbitrary matching one, that can be done using [`partition_point`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.partition_point "method slice::partition_point")\ :\ \ let s = [0, 1, 1, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55];\ \ let low = s.partition_point(|x| x < &1);\ assert_eq!(low, 1);\ let high = s.partition_point(|x| x <= &1);\ assert_eq!(high, 5);\ let r = s.binary_search(&1);\ assert!((low..high).contains(&r.unwrap()));\ \ assert!(s[..low].iter().all(|&x| x < 1));\ assert!(s[low..high].iter().all(|&x| x == 1));\ assert!(s[high..].iter().all(|&x| x > 1));\ \ // For something not found, the "range" of equal items is empty\ assert_eq!(s.partition_point(|x| x < &11), 9);\ assert_eq!(s.partition_point(|x| x <= &11), 9);\ assert_eq!(s.binary_search(&11), Err(9));\ \ If you want to insert an item to a sorted vector, while maintaining sort order, consider using [`partition_point`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.partition_point "method slice::partition_point")\ :\ \ let mut s = vec![0, 1, 1, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55];\ let num = 42;\ let idx = s.partition_point(|&x| x <= num);\ // If `num` is unique, `s.partition_point(|&x| x < num)` (with `<`) is equivalent to\ // `s.binary_search(&num).unwrap_or_else(|x| x)`, but using `<=` will allow `insert`\ // to shift less elements.\ s.insert(idx, num);\ assert_eq!(s, [0, 1, 1, 1, 1, 2, 3, 5, 8, 13, 21, 34, 42, 55]);\ \ 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#2970-2972)\ \ #### pub fn [binary\_search\_by](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#method.binary_search_by)\ <'a, F>(&'a self, f: F) -> [Result](https://doc.rust-lang.org/nightly/core/result/enum.Result.html "enum core::result::Result")\ <[usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html)\ , [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html)\ \>\ \ where F: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut")\ ([&'a T](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ ) -> [Ordering](https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html "enum core::cmp::Ordering")\ ,\ \ Binary searches this slice with a comparator function.\ \ The comparator function should return an order code that indicates whether its argument is `Less`, `Equal` or `Greater` the desired target. If the slice is not sorted or if the comparator function does not implement an order consistent with the sort order of the underlying slice, the returned result is unspecified and meaningless.\ \ If the value is found then [`Result::Ok`](https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Ok "variant core::result::Result::Ok")\ is returned, containing the index of the matching element. If there are multiple matches, then any one of the matches could be returned. The index is chosen deterministically, but is subject to change in future versions of Rust. If the value is not found then [`Result::Err`](https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Err "variant core::result::Result::Err")\ is returned, containing the index where a matching element could be inserted while maintaining sorted order.\ \ See also [`binary_search`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.binary_search "method slice::binary_search")\ , [`binary_search_by_key`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.binary_search_by_key "method slice::binary_search_by_key")\ , and [`partition_point`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.partition_point "method slice::partition_point")\ .\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#examples-47)\ Examples\ \ Looks up a series of four elements. The first is found, with a uniquely determined position; the second and third are not found; the fourth could match any position in `[1, 4]`.\ \ let s = [0, 1, 1, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55];\ \ let seek = 13;\ assert_eq!(s.binary_search_by(|probe| probe.cmp(&seek)), Ok(9));\ let seek = 4;\ assert_eq!(s.binary_search_by(|probe| probe.cmp(&seek)), Err(7));\ let seek = 100;\ assert_eq!(s.binary_search_by(|probe| probe.cmp(&seek)), Err(13));\ let seek = 1;\ let r = s.binary_search_by(|probe| probe.cmp(&seek));\ assert!(match r { Ok(1..=4) => true, _ => false, });\ \ 1.10.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#3071-3074)\ \ #### pub fn [binary\_search\_by\_key](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#method.binary_search_by_key)\ <'a, B, F>( &'a self, b: [&B](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ , f: F, ) -> [Result](https://doc.rust-lang.org/nightly/core/result/enum.Result.html "enum core::result::Result")\ <[usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html)\ , [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html)\ \>\ \ where F: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut")\ ([&'a T](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ ) -> B, B: [Ord](https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html "trait core::cmp::Ord")\ ,\ \ Binary searches this slice with a key extraction function.\ \ Assumes that the slice is sorted by the key, for instance with [`sort_by_key`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.sort_by_key "method slice::sort_by_key")\ using the same key extraction function. If the slice is not sorted by the key, the returned result is unspecified and meaningless.\ \ If the value is found then [`Result::Ok`](https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Ok "variant core::result::Result::Ok")\ is returned, containing the index of the matching element. If there are multiple matches, then any one of the matches could be returned. The index is chosen deterministically, but is subject to change in future versions of Rust. If the value is not found then [`Result::Err`](https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Err "variant core::result::Result::Err")\ is returned, containing the index where a matching element could be inserted while maintaining sorted order.\ \ See also [`binary_search`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.binary_search "method slice::binary_search")\ , [`binary_search_by`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.binary_search_by "method slice::binary_search_by")\ , and [`partition_point`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.partition_point "method slice::partition_point")\ .\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#examples-48)\ Examples\ \ Looks up a series of four elements in a slice of pairs sorted by their second elements. The first is found, with a uniquely determined position; the second and third are not found; the fourth could match any position in `[1, 4]`.\ \ let s = [(0, 0), (2, 1), (4, 1), (5, 1), (3, 1),\ (1, 2), (2, 3), (4, 5), (5, 8), (3, 13),\ (1, 21), (2, 34), (4, 55)];\ \ assert_eq!(s.binary_search_by_key(&13, |&(a, b)| b), Ok(9));\ assert_eq!(s.binary_search_by_key(&4, |&(a, b)| b), Err(7));\ assert_eq!(s.binary_search_by_key(&100, |&(a, b)| b), Err(13));\ let r = s.binary_search_by_key(&1, |&(a, b)| b);\ assert!(match r { Ok(1..=4) => true, _ => false, });\ \ 1.30.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#4499)\ \ #### pub unsafe fn [align\_to](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#method.align_to)\ (&self) -> (&[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ , &[\[U\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ , &[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ )\ \ Transmutes the slice to a slice of another type, ensuring alignment of the types is maintained.\ \ This method splits the slice into three distinct slices: prefix, correctly aligned middle slice of a new type, and the suffix slice. The middle part will be as big as possible under the given alignment constraint and element size.\ \ This method has no purpose when either input element `T` or output element `U` are zero-sized and will return the original slice without splitting anything.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#safety-7)\ Safety\ \ This method is essentially a `transmute` with respect to the elements in the returned middle slice, so all the usual caveats pertaining to `transmute::` also apply here.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#examples-49)\ Examples\ \ Basic usage:\ \ unsafe {\ let bytes: [u8; 7] = [1, 2, 3, 4, 5, 6, 7];\ let (prefix, shorts, suffix) = bytes.align_to::();\ // less_efficient_algorithm_for_bytes(prefix);\ // more_efficient_algorithm_for_aligned_shorts(shorts);\ // less_efficient_algorithm_for_bytes(suffix);\ }\ \ [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#4655-4658)\ \ #### pub fn [as\_simd](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#method.as_simd)\ (&self) -> (&[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ , &\[[Simd](https://doc.rust-lang.org/nightly/core/core_simd/vector/struct.Simd.html "struct core::core_simd::vector::Simd")\ \], &[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ )\ \ where [Simd](https://doc.rust-lang.org/nightly/core/core_simd/vector/struct.Simd.html "struct core::core_simd::vector::Simd")\ : [AsRef](https://doc.rust-lang.org/nightly/core/convert/trait.AsRef.html "trait core::convert::AsRef")\ <[\[T; LANES\]](https://doc.rust-lang.org/nightly/std/primitive.array.html)\ \>, T: [SimdElement](https://doc.rust-lang.org/nightly/core/core_simd/vector/trait.SimdElement.html "trait core::core_simd::vector::SimdElement")\ ,\ \ 🔬This is a nightly-only experimental API. (`portable_simd`)\ \ Splits a slice into a prefix, a middle of aligned SIMD types, and a suffix.\ \ This is a safe wrapper around [`slice::align_to`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.align_to "method slice::align_to")\ , so inherits the same guarantees as that method.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#panics-13)\ Panics\ \ This will panic if the size of the SIMD type is different from `LANES` times that of the scalar.\ \ At the time of writing, the trait restrictions on `Simd` keeps that from ever happening, as only power-of-two numbers of lanes are supported. It’s possible that, in the future, those restrictions might be lifted in a way that would make it possible to see panics from this method for something like `LANES == 3`.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#examples-50)\ Examples\ \ #![feature(portable_simd)]\ use core::simd::prelude::*;\ \ let short = &[1, 2, 3];\ let (prefix, middle, suffix) = short.as_simd::<4>();\ assert_eq!(middle, []); // Not enough elements for anything in the middle\ \ // They might be split in any possible way between prefix and suffix\ let it = prefix.iter().chain(suffix).copied();\ assert_eq!(it.collect::>(), vec![1, 2, 3]);\ \ fn basic_simd_sum(x: &[f32]) -> f32 {\ use std::ops::Add;\ let (prefix, middle, suffix) = x.as_simd();\ let sums = f32x4::from_array([\ prefix.iter().copied().sum(),\ 0.0,\ 0.0,\ suffix.iter().copied().sum(),\ ]);\ let sums = middle.iter().copied().fold(sums, f32x4::add);\ sums.reduce_sum()\ }\ \ let numbers: Vec = (1..101).map(|x| x as _).collect();\ assert_eq!(basic_simd_sum(&numbers[1..99]), 4949.0);\ \ 1.82.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#4728-4730)\ \ #### pub fn [is\_sorted](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#method.is_sorted)\ (&self) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html)\ \ where T: [PartialOrd](https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html "trait core::cmp::PartialOrd")\ ,\ \ Checks if the elements of this slice are sorted.\ \ That is, for each element `a` and its following element `b`, `a <= b` must hold. If the slice yields exactly zero or one element, `true` is returned.\ \ Note that if `Self::Item` is only `PartialOrd`, but not `Ord`, the above definition implies that this function returns `false` if any two consecutive items are not comparable.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#examples-51)\ Examples\ \ let empty: [i32; 0] = [];\ \ assert!([1, 2, 2, 9].is_sorted());\ assert!(![1, 3, 2, 4].is_sorted());\ assert!([0].is_sorted());\ assert!(empty.is_sorted());\ assert!(![0.0, 1.0, f32::NAN].is_sorted());\ \ 1.82.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#4771-4773)\ \ #### pub fn [is\_sorted\_by](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#method.is_sorted_by)\ <'a, F>(&'a self, compare: F) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html)\ \ where F: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut")\ ([&'a T](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ , [&'a T](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ ) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html)\ ,\ \ Checks if the elements of this slice are sorted using the given comparator function.\ \ Instead of using `PartialOrd::partial_cmp`, this function uses the given `compare` function to determine whether two elements are to be considered in sorted order.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#examples-52)\ Examples\ \ assert!([1, 2, 2, 9].is_sorted_by(|a, b| a <= b));\ assert!(![1, 2, 2, 9].is_sorted_by(|a, b| a < b));\ \ assert!([0].is_sorted_by(|a, b| true));\ assert!([0].is_sorted_by(|a, b| false));\ \ let empty: [i32; 0] = [];\ assert!(empty.is_sorted_by(|a, b| false));\ assert!(empty.is_sorted_by(|a, b| true));\ \ 1.82.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#4795-4798)\ \ #### pub fn [is\_sorted\_by\_key](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#method.is_sorted_by_key)\ <'a, F, K>(&'a self, f: F) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html)\ \ where F: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut")\ ([&'a T](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ ) -> K, K: [PartialOrd](https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html "trait core::cmp::PartialOrd")\ ,\ \ Checks if the elements of this slice are sorted using the given key extraction function.\ \ Instead of comparing the slice’s elements directly, this function compares the keys of the elements, as determined by `f`. Apart from that, it’s equivalent to [`is_sorted`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.is_sorted "method slice::is_sorted")\ ; see its documentation for more information.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#examples-53)\ Examples\ \ assert!(["c", "bb", "aaa"].is_sorted_by_key(|s| s.len()));\ assert!(![-2i32, -1, 0, 3].is_sorted_by_key(|n| n.abs()));\ \ 1.52.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#4854-4856)\ \ #### pub fn [partition\_point](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#method.partition_point)\

(&self, pred: P) -> [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html)\ \ where P: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut")\ ([&T](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ ) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html)\ ,\ \ Returns the index of the partition point according to the given predicate (the index of the first element of the second partition).\ \ The slice is assumed to be partitioned according to the given predicate. This means that all elements for which the predicate returns true are at the start of the slice and all elements for which the predicate returns false are at the end. For example, `[7, 15, 3, 5, 4, 12, 6]` is partitioned under the predicate `x % 2 != 0` (all odd numbers are at the start, all even at the end).\ \ If this slice is not partitioned, the returned result is unspecified and meaningless, as this method performs a kind of binary search.\ \ See also [`binary_search`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.binary_search "method slice::binary_search")\ , [`binary_search_by`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.binary_search_by "method slice::binary_search_by")\ , and [`binary_search_by_key`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.binary_search_by_key "method slice::binary_search_by_key")\ .\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#examples-54)\ Examples\ \ let v = [1, 2, 3, 3, 5, 6, 7];\ let i = v.partition_point(|&x| x < 5);\ \ assert_eq!(i, 4);\ assert!(v[..i].iter().all(|&x| x < 5));\ assert!(v[i..].iter().all(|&x| !(x < 5)));\ \ If all elements of the slice match the predicate, including if the slice is empty, then the length of the slice will be returned:\ \ let a = [2, 4, 8];\ assert_eq!(a.partition_point(|x| x < &100), a.len());\ let a: [i32; 0] = [];\ assert_eq!(a.partition_point(|x| x < &100), 0);\ \ If you want to insert an item to a sorted vector, while maintaining sort order:\ \ let mut s = vec![0, 1, 1, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55];\ let num = 42;\ let idx = s.partition_point(|&x| x <= num);\ s.insert(idx, num);\ assert_eq!(s, [0, 1, 1, 1, 1, 2, 3, 5, 8, 13, 21, 34, 42, 55]);\ \ 1.94.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#5260)\ \ #### pub fn [element\_offset](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#method.element_offset)\ (&self, element: [&T](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ ) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option")\ <[usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html)\ \>\ \ Returns the index that an element reference points to.\ \ Returns `None` if `element` does not point to the start of an element within the slice.\ \ This method is useful for extending slice iterators like [`slice::split`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.split "method slice::split")\ .\ \ Note that this uses pointer arithmetic and **does not compare elements**. To find the index of an element via comparison, use [`.iter().position()`](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.position "method core::iter::traits::iterator::Iterator::position")\ instead.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#panics-14)\ Panics\ \ Panics if `T` is zero-sized.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#examples-55)\ Examples\ \ Basic usage:\ \ let nums: &[u32] = &[1, 7, 1, 1];\ let num = &nums[2];\ \ assert_eq!(num, &1);\ assert_eq!(nums.element_offset(num), Some(2));\ \ Returning `None` with an unaligned element:\ \ let arr: &[[u32; 2]] = &[[0, 1], [2, 3]];\ let flat_arr: &[u32] = arr.as_flattened();\ \ let ok_elm: &[u32; 2] = flat_arr[0..2].try_into().unwrap();\ let weird_elm: &[u32; 2] = flat_arr[1..3].try_into().unwrap();\ \ assert_eq!(ok_elm, &[0, 1]);\ assert_eq!(weird_elm, &[1, 2]);\ \ assert_eq!(arr.element_offset(ok_elm), Some(0)); // Points to element 0\ assert_eq!(arr.element_offset(weird_elm), None); // Points between element 0 and 1\ \ [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#5314)\ \ #### pub fn [subslice\_range](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#method.subslice_range)\ (&self, subslice: &[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ ) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option")\ <[Range](https://doc.rust-lang.org/nightly/core/ops/range/struct.Range.html "struct core::ops::range::Range")\ <[usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html)\ \>>\ \ 🔬This is a nightly-only experimental API. (`substr_range`)\ \ Returns the range of indices that a subslice points to.\ \ Returns `None` if `subslice` does not point within the slice or if it is not aligned with the elements in the slice.\ \ This method **does not compare elements**. Instead, this method finds the location in the slice that `subslice` was obtained from. To find the index of a subslice via comparison, instead use [`.windows()`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.windows "method slice::windows")\ [`.position()`](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.position "method core::iter::traits::iterator::Iterator::position")\ .\ \ This method is useful for extending slice iterators like [`slice::split`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.split "method slice::split")\ .\ \ Note that this may return a false positive (either `Some(0..0)` or `Some(self.len()..self.len())`) if `subslice` has a length of zero and points to the beginning or end of another, separate, slice.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#panics-15)\ Panics\ \ Panics if `T` is zero-sized.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#examples-56)\ Examples\ \ Basic usage:\ \ #![feature(substr_range)]\ \ let nums = &[0, 5, 10, 0, 0, 5];\ \ let mut iter = nums\ .split(|t| *t == 0)\ .map(|n| nums.subslice_range(n).unwrap());\ \ assert_eq!(iter.next(), Some(0..0));\ assert_eq!(iter.next(), Some(1..3));\ assert_eq!(iter.next(), Some(4..4));\ assert_eq!(iter.next(), Some(5..6));\ \ [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#5341)\ \ #### pub fn [as\_slice](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#method.as_slice-1)\ (&self) -> &[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ \ 🔬This is a nightly-only experimental API. (`str_as_str`)\ \ Returns the same slice `&[T]`.\ \ This method is redundant when used directly on `&[T]`, but it helps dereferencing other “container” types to slices, for example `Box<[T]>` or `Arc<[T]>`.\ \ 1.79.0 · [Source](https://doc.rust-lang.org/nightly/src/core/str/lossy.rs.html#45)\ \ #### pub fn [utf8\_chunks](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#method.utf8_chunks)\ (&self) -> [Utf8Chunks](https://doc.rust-lang.org/nightly/core/str/lossy/struct.Utf8Chunks.html "struct core::str::lossy::Utf8Chunks")\ <'\_>\ \ Creates an iterator over the contiguous valid UTF-8 ranges of this slice, and the non-UTF-8 fragments in between.\ \ See the [`Utf8Chunk`](https://doc.rust-lang.org/nightly/core/str/lossy/struct.Utf8Chunk.html "struct core::str::lossy::Utf8Chunk")\ type for documentation of the items yielded by this iterator.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#examples-57)\ Examples\ \ This function formats arbitrary but mostly-UTF-8 bytes into Rust source code in the form of a C-string literal (`c"..."`).\ \ use std::fmt::Write as _;\ \ pub fn cstr_literal(bytes: &[u8]) -> String {\ let mut repr = String::new();\ repr.push_str("c\"");\ for chunk in bytes.utf8_chunks() {\ for ch in chunk.valid().chars() {\ // Escapes \0, \t, \r, \n, \\, \', \", and uses \u{...} for non-printable characters.\ write!(repr, "{}", ch.escape_debug()).unwrap();\ }\ for byte in chunk.invalid() {\ write!(repr, "\\x{:02X}", byte).unwrap();\ }\ }\ repr.push('"');\ repr\ }\ \ fn main() {\ let lit = cstr_literal(b"\xferris the \xf0\x9f\xa6\x80\x07");\ let expected = stringify!(c"\xFErris the 🦀\u{7}");\ assert_eq!(lit, expected);\ }\ \ 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/alloc/slice.rs.html#372-374)\ \ #### pub fn [to\_vec](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#method.to_vec)\ (&self) -> [Vec](https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html "struct alloc::vec::Vec")\ \ \ where T: [Clone](https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html "trait core::clone::Clone")\ ,\ \ Available on **non-`no_global_oom_handling`** only.\ \ Copies `self` into a new `Vec`.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#examples-58)\ Examples\ \ let s = [10, 40, 30];\ let x = s.to_vec();\ // Here, `s` and `x` can be modified independently.\ \ [Source](https://doc.rust-lang.org/nightly/src/alloc/slice.rs.html#396-398)\ \ #### pub fn [to\_vec\_in](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#method.to_vec_in)\ (&self, alloc: A) -> [Vec](https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html "struct alloc::vec::Vec")\ \ \ where A: [Allocator](https://doc.rust-lang.org/nightly/core/alloc/trait.Allocator.html "trait core::alloc::Allocator")\ , T: [Clone](https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html "trait core::clone::Clone")\ ,\ \ 🔬This is a nightly-only experimental API. (`allocator_api`)\ \ Available on **non-`no_global_oom_handling`** only.\ \ Copies `self` into a new `Vec` with an allocator.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#examples-59)\ Examples\ \ #![feature(allocator_api)]\ \ use std::alloc::System;\ \ let s = [10, 40, 30];\ let x = s.to_vec_in(System);\ // Here, `s` and `x` can be modified independently.\ \ 1.40.0 · [Source](https://doc.rust-lang.org/nightly/src/alloc/slice.rs.html#509-511)\ \ #### pub fn [repeat](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#method.repeat)\ (&self, n: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html)\ ) -> [Vec](https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html "struct alloc::vec::Vec")\ \ \ where T: [Copy](https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html "trait core::marker::Copy")\ ,\ \ Available on **non-`no_global_oom_handling`** only.\ \ Creates a vector by copying a slice `n` times.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#panics-16)\ Panics\ \ This function will panic if the capacity would overflow.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#examples-60)\ Examples\ \ assert_eq!([1, 2].repeat(3), vec![1, 2, 1, 2, 1, 2]);\ \ A panic upon overflow:\ \ [ⓘ](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html# "This example panics")\ \ // this will panic at runtime\ b"0123456789abcdef".repeat(usize::MAX);\ \ 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/alloc/slice.rs.html#577-579)\ \ #### pub fn [concat](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#method.concat)\ (&self) -> <[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ as [Concat](https://doc.rust-lang.org/nightly/alloc/slice/trait.Concat.html "trait alloc::slice::Concat")\ >::[Output](https://doc.rust-lang.org/nightly/alloc/slice/trait.Concat.html#associatedtype.Output "type alloc::slice::Concat::Output")\ [ⓘ](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#)\ \ where [\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ : [Concat](https://doc.rust-lang.org/nightly/alloc/slice/trait.Concat.html "trait alloc::slice::Concat")\ , Item: ?[Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized")\ ,\ \ Flattens a slice of `T` into a single value `Self::Output`.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#examples-61)\ Examples\ \ assert_eq!(["hello", "world"].concat(), "helloworld");\ assert_eq!([[1, 2], [3, 4]].concat(), [1, 2, 3, 4]);\ \ 1.3.0 · [Source](https://doc.rust-lang.org/nightly/src/alloc/slice.rs.html#596-598)\ \ #### pub fn [join](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#method.join)\ ( &self, sep: Separator, ) -> <[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ as [Join](https://doc.rust-lang.org/nightly/alloc/slice/trait.Join.html "trait alloc::slice::Join")\ >::[Output](https://doc.rust-lang.org/nightly/alloc/slice/trait.Join.html#associatedtype.Output "type alloc::slice::Join::Output")\ [ⓘ](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#)\ \ where [\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ : [Join](https://doc.rust-lang.org/nightly/alloc/slice/trait.Join.html "trait alloc::slice::Join")\ ,\ \ Flattens a slice of `T` into a single value `Self::Output`, placing a given separator between each.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#examples-62)\ Examples\ \ assert_eq!(["hello", "world"].join(" "), "hello world");\ assert_eq!([[1, 2], [3, 4]].join(&0), [1, 2, 0, 3, 4]);\ assert_eq!([[1, 2], [3, 4]].join(&[0, 0][..]), [1, 2, 0, 0, 3, 4]);\ \ 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/alloc/slice.rs.html#616-618)\ \ #### pub fn [connect](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#method.connect)\ ( &self, sep: Separator, ) -> <[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ as [Join](https://doc.rust-lang.org/nightly/alloc/slice/trait.Join.html "trait alloc::slice::Join")\ >::[Output](https://doc.rust-lang.org/nightly/alloc/slice/trait.Join.html#associatedtype.Output "type alloc::slice::Join::Output")\ [ⓘ](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#)\ \ where [\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ : [Join](https://doc.rust-lang.org/nightly/alloc/slice/trait.Join.html "trait alloc::slice::Join")\ ,\ \ 👎Deprecated since 1.3.0:\ \ renamed to join\ \ Flattens a slice of `T` into a single value `Self::Output`, placing a given separator between each.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#examples-63)\ Examples\ \ assert_eq!(["hello", "world"].connect(" "), "hello world");\ assert_eq!([[1, 2], [3, 4]].connect(&0), [1, 2, 0, 3, 4]);\ \ 1.23.0 · [Source](https://doc.rust-lang.org/nightly/src/alloc/slice.rs.html#640)\ \ #### pub fn [to\_ascii\_uppercase](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#method.to_ascii_uppercase)\ (&self) -> [Vec](https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html "struct alloc::vec::Vec")\ <[u8](https://doc.rust-lang.org/nightly/std/primitive.u8.html)\ \> [ⓘ](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#)\ \ Available on **non-`no_global_oom_handling`** only.\ \ Returns a vector containing a copy of this slice where each byte is mapped to its ASCII upper case equivalent.\ \ ASCII letters ‘a’ to ‘z’ are mapped to ‘A’ to ‘Z’, but non-ASCII letters are unchanged.\ \ To uppercase the value in-place, use [`make_ascii_uppercase`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.make_ascii_uppercase "method slice::make_ascii_uppercase")\ .\ \ 1.23.0 · [Source](https://doc.rust-lang.org/nightly/src/alloc/slice.rs.html#661)\ \ #### pub fn [to\_ascii\_lowercase](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#method.to_ascii_lowercase)\ (&self) -> [Vec](https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html "struct alloc::vec::Vec")\ <[u8](https://doc.rust-lang.org/nightly/std/primitive.u8.html)\ \> [ⓘ](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#)\ \ Available on **non-`no_global_oom_handling`** only.\ \ Returns a vector containing a copy of this slice where each byte is mapped to its ASCII lower case equivalent.\ \ ASCII letters ‘A’ to ‘Z’ are mapped to ‘a’ to ‘z’, but non-ASCII letters are unchanged.\ \ To lowercase the value in-place, use [`make_ascii_lowercase`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.make_ascii_lowercase "method slice::make_ascii_lowercase")\ .\ \ Trait Implementations[§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#trait-implementations)\ \ ---------------------------------------------------------------------------------------------------------------------------\ \ [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/immutable.rs.html#553-557)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#impl-AsRef%3C%5Bu8%5D%3E-for-%26Buffer)\ \ ### impl [AsRef](https://doc.rust-lang.org/nightly/core/convert/trait.AsRef.html "trait core::convert::AsRef")\ <\[[u8](https://doc.rust-lang.org/nightly/std/primitive.u8.html)\ \]> for &[Buffer](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html "struct arrow_buffer::buffer::Buffer")\ \ [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/immutable.rs.html#554-556)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#method.as_ref)\ \ #### fn [as\_ref](https://doc.rust-lang.org/nightly/core/convert/trait.AsRef.html#tymethod.as_ref)\ (&self) -> &\[[u8](https://doc.rust-lang.org/nightly/std/primitive.u8.html)\ \] [ⓘ](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#)\ \ Converts this type into a shared reference of the (usually inferred) input type.\ \ [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/immutable.rs.html#70)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#impl-Clone-for-Buffer)\ \ ### impl [Clone](https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html "trait core::clone::Clone")\ for [Buffer](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html "struct arrow_buffer::buffer::Buffer")\ \ [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/immutable.rs.html#70)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#method.clone)\ \ #### fn [clone](https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone)\ (&self) -> [Buffer](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html "struct arrow_buffer::buffer::Buffer")\ \ Returns a duplicate of the value. [Read more](https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone)\ \ 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/clone.rs.html#245-247)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#method.clone_from)\ \ #### fn [clone\_from](https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from)\ (&mut self, source: &Self)\ \ Performs copy-assignment from `source`. [Read more](https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from)\ \ [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/immutable.rs.html#70)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#impl-Debug-for-Buffer)\ \ ### impl [Debug](https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html "trait core::fmt::Debug")\ for [Buffer](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html "struct arrow_buffer::buffer::Buffer")\ \ [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/immutable.rs.html#70)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#method.fmt)\ \ #### fn [fmt](https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt)\ (&self, f: &mut [Formatter](https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html "struct core::fmt::Formatter")\ <'\_>) -> [Result](https://doc.rust-lang.org/nightly/core/fmt/type.Result.html "type core::fmt::Result")\ \ Formats the value using the given formatter. [Read more](https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt)\ \ [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/immutable.rs.html#87-92)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#impl-Default-for-Buffer)\ \ ### impl [Default](https://doc.rust-lang.org/nightly/core/default/trait.Default.html "trait core::default::Default")\ for [Buffer](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html "struct arrow_buffer::buffer::Buffer")\ \ [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/immutable.rs.html#89-91)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#method.default)\ \ #### fn [default](https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default)\ () -> Self\ \ Returns the “default value” for a type. [Read more](https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default)\ \ [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/immutable.rs.html#545-551)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#impl-Deref-for-Buffer)\ \ ### impl [Deref](https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html "trait core::ops::deref::Deref")\ for [Buffer](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html "struct arrow_buffer::buffer::Buffer")\ \ [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/immutable.rs.html#546)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#associatedtype.Target)\ \ #### type [Target](https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html#associatedtype.Target)\ = \[[u8](https://doc.rust-lang.org/nightly/std/primitive.u8.html)\ \]\ \ The resulting type after dereferencing.\ \ [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/immutable.rs.html#548-550)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#method.deref)\ \ #### fn [deref](https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html#tymethod.deref)\ (&self) -> &\[[u8](https://doc.rust-lang.org/nightly/std/primitive.u8.html)\ \] [ⓘ](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#)\ \ Dereferences the value.\ \ [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/immutable.rs.html#483-487)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#impl-From%3C%26%5Bu8%5D%3E-for-Buffer)\ \ ### impl [From](https://doc.rust-lang.org/nightly/core/convert/trait.From.html "trait core::convert::From")\ <&\[[u8](https://doc.rust-lang.org/nightly/std/primitive.u8.html)\ \]> for [Buffer](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html "struct arrow_buffer::buffer::Buffer")\ \ Note that here we deliberately do not implement `impl> From for Buffer` As it would accept `Buffer::from(vec![...])` that would cause an unexpected copy. Instead, we ask user to be explicit when copying is occurring, e.g., `Buffer::from(vec![...].to_byte_slice())`. For zero-copy conversion, user should use `Buffer::from_vec(vec![...])`.\ \ Since we removed impl for `AsRef`, we added the following three specific implementations to reduce API breakage. See [https://github.com/apache/arrow-rs/issues/6033](https://github.com/apache/arrow-rs/issues/6033)\ for more discussion on this.\ \ [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/immutable.rs.html#484-486)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#method.from)\ \ #### fn [from](https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from)\ (p: &\[[u8](https://doc.rust-lang.org/nightly/std/primitive.u8.html)\ \]) -> Self\ \ Converts to this type from the input type.\ \ [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/immutable.rs.html#495-499)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#impl-From%3C%26%5Bu8;+N%5D%3E-for-Buffer)\ \ ### impl [From](https://doc.rust-lang.org/nightly/core/convert/trait.From.html "trait core::convert::From")\ <&\[[u8](https://doc.rust-lang.org/nightly/std/primitive.u8.html)\ ; [N](https://doc.rust-lang.org/nightly/std/primitive.array.html)\ \]> for [Buffer](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html "struct arrow_buffer::buffer::Buffer")\ \ [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/immutable.rs.html#496-498)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#method.from-2)\ \ #### fn [from](https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from)\ (p: &\[[u8](https://doc.rust-lang.org/nightly/std/primitive.u8.html)\ ; [N](https://doc.rust-lang.org/nightly/std/primitive.array.html)\ \]) -> Self\ \ Converts to this type from the input type.\ \ [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/immutable.rs.html#489-493)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#impl-From%3C%5Bu8;+N%5D%3E-for-Buffer)\ \ ### impl [From](https://doc.rust-lang.org/nightly/core/convert/trait.From.html "trait core::convert::From")\ <\[[u8](https://doc.rust-lang.org/nightly/std/primitive.u8.html)\ ; [N](https://doc.rust-lang.org/nightly/std/primitive.array.html)\ \]> for [Buffer](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html "struct arrow_buffer::buffer::Buffer")\ \ [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/immutable.rs.html#490-492)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#method.from-1)\ \ #### fn [from](https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from)\ (p: \[[u8](https://doc.rust-lang.org/nightly/std/primitive.u8.html)\ ; [N](https://doc.rust-lang.org/nightly/std/primitive.array.html)\ \]) -> Self\ \ Converts to this type from the input type.\ \ [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/builder/boolean.rs.html#305-310)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#impl-From%3CBooleanBufferBuilder%3E-for-Buffer)\ \ ### impl [From](https://doc.rust-lang.org/nightly/core/convert/trait.From.html "trait core::convert::From")\ <[BooleanBufferBuilder](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/builder/struct.BooleanBufferBuilder.html "struct arrow_buffer::builder::BooleanBufferBuilder")\ \> for [Buffer](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html "struct arrow_buffer::buffer::Buffer")\ \ [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/builder/boolean.rs.html#307-309)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#method.from-9)\ \ #### fn [from](https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from)\ (builder: [BooleanBufferBuilder](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/builder/struct.BooleanBufferBuilder.html "struct arrow_buffer::builder::BooleanBufferBuilder")\ ) -> Self\ \ Converts to this type from the input type.\ \ [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/scalar.rs.html#184-205)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#impl-From%3CBuffer%3E-for-ScalarBuffer%3CT%3E)\ \ ### impl [From](https://doc.rust-lang.org/nightly/core/convert/trait.From.html "trait core::convert::From")\ <[Buffer](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html "struct arrow_buffer::buffer::Buffer")\ \> for [ScalarBuffer](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.ScalarBuffer.html "struct arrow_buffer::buffer::ScalarBuffer")\ \ \ [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/scalar.rs.html#185-204)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#method.from-8)\ \ #### fn [from](https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from)\ (buffer: [Buffer](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html "struct arrow_buffer::buffer::Buffer")\ ) -> Self\ \ Converts to this type from the input type.\ \ [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/immutable.rs.html#566-570)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#impl-From%3CBufferBuilder%3CT%3E%3E-for-Buffer)\ \ ### impl [From](https://doc.rust-lang.org/nightly/core/convert/trait.From.html "trait core::convert::From")\ <[BufferBuilder](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/builder/struct.BufferBuilder.html "struct arrow_buffer::builder::BufferBuilder")\ > for [Buffer](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html "struct arrow_buffer::buffer::Buffer")\ \ [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/immutable.rs.html#567-569)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#method.from-7)\ \ #### fn [from](https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from)\ (value: [BufferBuilder](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/builder/struct.BufferBuilder.html "struct arrow_buffer::builder::BufferBuilder")\ ) -> Self\ \ Converts to this type from the input type.\ \ [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/immutable.rs.html#528-533)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#impl-From%3CBytes%3E-for-Buffer)\ \ ### impl [From](https://doc.rust-lang.org/nightly/core/convert/trait.From.html "trait core::convert::From")\ <[Bytes](https://docs.rs/bytes/1.11.1/x86_64-unknown-linux-gnu/bytes/bytes/struct.Bytes.html "struct bytes::bytes::Bytes")\ \> for [Buffer](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html "struct arrow_buffer::buffer::Buffer")\ \ Convert from [`bytes::Bytes`](https://docs.rs/bytes/1.11.1/x86_64-unknown-linux-gnu/bytes/bytes/struct.Bytes.html "struct bytes::bytes::Bytes")\ , not internal `Bytes` to `Buffer`\ \ [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/immutable.rs.html#529-532)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#method.from-5)\ \ #### fn [from](https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from)\ (bytes: [Bytes](https://docs.rs/bytes/1.11.1/x86_64-unknown-linux-gnu/bytes/bytes/struct.Bytes.html "struct bytes::bytes::Bytes")\ ) -> Self\ \ Converts to this type from the input type.\ \ [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/immutable.rs.html#559-564)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#impl-From%3CMutableBuffer%3E-for-Buffer)\ \ ### impl [From](https://doc.rust-lang.org/nightly/core/convert/trait.From.html "trait core::convert::From")\ <[MutableBuffer](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html "struct arrow_buffer::buffer::MutableBuffer")\ \> for [Buffer](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html "struct arrow_buffer::buffer::Buffer")\ \ [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/immutable.rs.html#561-563)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#method.from-6)\ \ #### fn [from](https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from)\ (buffer: [MutableBuffer](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html "struct arrow_buffer::buffer::MutableBuffer")\ ) -> Self\ \ Converts to this type from the input type.\ \ [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/immutable.rs.html#507-511)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#impl-From%3CScalarBuffer%3CT%3E%3E-for-Buffer)\ \ ### impl [From](https://doc.rust-lang.org/nightly/core/convert/trait.From.html "trait core::convert::From")\ <[ScalarBuffer](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.ScalarBuffer.html "struct arrow_buffer::buffer::ScalarBuffer")\ > for [Buffer](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html "struct arrow_buffer::buffer::Buffer")\ \ [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/immutable.rs.html#508-510)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#method.from-4)\ \ #### fn [from](https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from)\ (value: [ScalarBuffer](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.ScalarBuffer.html "struct arrow_buffer::buffer::ScalarBuffer")\ ) -> Self\ \ Converts to this type from the input type.\ \ [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/immutable.rs.html#501-505)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#impl-From%3CVec%3CT%3E%3E-for-Buffer)\ \ ### impl [From](https://doc.rust-lang.org/nightly/core/convert/trait.From.html "trait core::convert::From")\ <[Vec](https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html "struct alloc::vec::Vec")\ > for [Buffer](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html "struct arrow_buffer::buffer::Buffer")\ \ [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/immutable.rs.html#502-504)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#method.from-3)\ \ #### fn [from](https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from)\ (value: [Vec](https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html "struct alloc::vec::Vec")\ ) -> Self\ \ Converts to this type from the input type.\ \ [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/immutable.rs.html#617-622)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#impl-FromIterator%3CT%3E-for-Buffer)\ \ ### impl [FromIterator](https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.FromIterator.html "trait core::iter::traits::collect::FromIterator")\ for [Buffer](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html "struct arrow_buffer::buffer::Buffer")\ \ [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/immutable.rs.html#618-621)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#method.from_iter-1)\ \ #### fn [from\_iter](https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.FromIterator.html#tymethod.from_iter)\ >(iter: I) -> Self\ \ Creates a value from an iterator. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.FromIterator.html#tymethod.from_iter)\ \ [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/immutable.rs.html#536-543)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#impl-FromIterator%3Cbool%3E-for-Buffer)\ \ ### impl [FromIterator](https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.FromIterator.html "trait core::iter::traits::collect::FromIterator")\ <[bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html)\ \> for [Buffer](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html "struct arrow_buffer::buffer::Buffer")\ \ Create a `Buffer` instance by storing the boolean values into the buffer\ \ [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/immutable.rs.html#537-542)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#method.from_iter)\ \ #### fn [from\_iter](https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.FromIterator.html#tymethod.from_iter)\ (iter: I) -> Self\ \ where I: [IntoIterator](https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html "trait core::iter::traits::collect::IntoIterator")\ ,\ \ Creates a value from an iterator. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.FromIterator.html#tymethod.from_iter)\ \ [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/immutable.rs.html#94-98)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#impl-PartialEq-for-Buffer)\ \ ### impl [PartialEq](https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html "trait core::cmp::PartialEq")\ for [Buffer](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html "struct arrow_buffer::buffer::Buffer")\ \ [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/immutable.rs.html#95-97)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#method.eq)\ \ #### fn [eq](https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq)\ (&self, other: &Self) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html)\ \ Tests for `self` and `other` values to be equal, and is used by `==`.\ \ 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#264)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#method.ne)\ \ #### fn [ne](https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne)\ (&self, other: [&Rhs](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ ) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html)\ \ Tests for `!=`. The default implementation is almost always sufficient, and should not be overridden without very good reason.\ \ [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/immutable.rs.html#100)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#impl-Eq-for-Buffer)\ \ ### impl [Eq](https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html "trait core::cmp::Eq")\ for [Buffer](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html "struct arrow_buffer::buffer::Buffer")\ \ [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/immutable.rs.html#102)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#impl-Send-for-Buffer)\ \ ### impl [Send](https://doc.rust-lang.org/nightly/core/marker/trait.Send.html "trait core::marker::Send")\ for [Buffer](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html "struct arrow_buffer::buffer::Buffer")\ \ where Bytes: [Send](https://doc.rust-lang.org/nightly/core/marker/trait.Send.html "trait core::marker::Send")\ ,\ \ [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/immutable.rs.html#103)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#impl-Sync-for-Buffer)\ \ ### impl [Sync](https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html "trait core::marker::Sync")\ for [Buffer](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html "struct arrow_buffer::buffer::Buffer")\ \ where Bytes: [Sync](https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html "trait core::marker::Sync")\ ,\ \ Auto Trait Implementations[§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#synthetic-implementations)\ \ ------------------------------------------------------------------------------------------------------------------------------------\ \ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#impl-Freeze-for-Buffer)\ \ ### impl [Freeze](https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html "trait core::marker::Freeze")\ for [Buffer](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html "struct arrow_buffer::buffer::Buffer")\ \ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#impl-RefUnwindSafe-for-Buffer)\ \ ### impl [RefUnwindSafe](https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html "trait core::panic::unwind_safe::RefUnwindSafe")\ for [Buffer](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html "struct arrow_buffer::buffer::Buffer")\ \ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#impl-Unpin-for-Buffer)\ \ ### impl [Unpin](https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html "trait core::marker::Unpin")\ for [Buffer](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html "struct arrow_buffer::buffer::Buffer")\ \ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#impl-UnsafeUnpin-for-Buffer)\ \ ### impl [UnsafeUnpin](https://doc.rust-lang.org/nightly/core/marker/trait.UnsafeUnpin.html "trait core::marker::UnsafeUnpin")\ for [Buffer](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html "struct arrow_buffer::buffer::Buffer")\ \ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#impl-UnwindSafe-for-Buffer)\ \ ### impl [UnwindSafe](https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html "trait core::panic::unwind_safe::UnwindSafe")\ for [Buffer](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html "struct arrow_buffer::buffer::Buffer")\ \ Blanket Implementations[§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#blanket-implementations)\ \ -------------------------------------------------------------------------------------------------------------------------------\ \ [Source](https://doc.rust-lang.org/nightly/src/core/any.rs.html#141)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#impl-Any-for-T)\ \ ### impl [Any](https://doc.rust-lang.org/nightly/core/any/trait.Any.html "trait core::any::Any")\ for T\ \ where T: 'static + ?[Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized")\ ,\ \ [Source](https://doc.rust-lang.org/nightly/src/core/any.rs.html#142)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#method.type_id)\ \ #### fn [type\_id](https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id)\ (&self) -> [TypeId](https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html "struct core::any::TypeId")\ \ Gets the `TypeId` of `self`. [Read more](https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id)\ \ [Source](https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#212)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#impl-Borrow%3CT%3E-for-T)\ \ ### impl [Borrow](https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html "trait core::borrow::Borrow")\ for T\ \ where T: ?[Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized")\ ,\ \ [Source](https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#214)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#method.borrow)\ \ #### fn [borrow](https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow)\ (&self) -> [&T](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ \ Immutably borrows from an owned value. [Read more](https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow)\ \ [Source](https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#221)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#impl-BorrowMut%3CT%3E-for-T)\ \ ### impl [BorrowMut](https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html "trait core::borrow::BorrowMut")\ for T\ \ where T: ?[Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized")\ ,\ \ [Source](https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#222)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#method.borrow_mut)\ \ #### fn [borrow\_mut](https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut)\ (&mut self) -> [&mut T](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ \ Mutably borrows from an owned value. [Read more](https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut)\ \ [Source](https://doc.rust-lang.org/nightly/src/core/clone.rs.html#547)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#impl-CloneToUninit-for-T)\ \ ### impl [CloneToUninit](https://doc.rust-lang.org/nightly/core/clone/trait.CloneToUninit.html "trait core::clone::CloneToUninit")\ for T\ \ where T: [Clone](https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html "trait core::clone::Clone")\ ,\ \ [Source](https://doc.rust-lang.org/nightly/src/core/clone.rs.html#549)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#method.clone_to_uninit)\ \ #### unsafe fn [clone\_to\_uninit](https://doc.rust-lang.org/nightly/core/clone/trait.CloneToUninit.html#tymethod.clone_to_uninit)\ (&self, dest: [\*mut](https://doc.rust-lang.org/nightly/std/primitive.pointer.html)\ [u8](https://doc.rust-lang.org/nightly/std/primitive.u8.html)\ )\ \ 🔬This is a nightly-only experimental API. (`clone_to_uninit`)\ \ Performs copy-assignment from `self` to `dest`. [Read more](https://doc.rust-lang.org/nightly/core/clone/trait.CloneToUninit.html#tymethod.clone_to_uninit)\ \ [Source](https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#785)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#impl-From%3CT%3E-for-T)\ \ ### impl [From](https://doc.rust-lang.org/nightly/core/convert/trait.From.html "trait core::convert::From")\ for T\ \ [Source](https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#788)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#method.from-10)\ \ #### fn [from](https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from)\ (t: T) -> T\ \ Returns the argument unchanged.\ \ [Source](https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#767-769)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#impl-Into%3CU%3E-for-T)\ \ ### impl [Into](https://doc.rust-lang.org/nightly/core/convert/trait.Into.html "trait core::convert::Into")\ for T\ \ where U: [From](https://doc.rust-lang.org/nightly/core/convert/trait.From.html "trait core::convert::From")\ ,\ \ [Source](https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#777)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#method.into)\ \ #### fn [into](https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into)\ (self) -> U\ \ Calls `U::from(self)`.\ \ That is, this conversion is whatever the implementation of `[From](https://doc.rust-lang.org/nightly/core/convert/trait.From.html "trait core::convert::From") for U` chooses to do.\ \ [Source](https://doc.rust-lang.org/nightly/src/core/ops/deref.rs.html#378-380)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#impl-Receiver-for-P)\ \ ### impl [Receiver](https://doc.rust-lang.org/nightly/core/ops/deref/trait.Receiver.html "trait core::ops::deref::Receiver")\ for P\ \ where P: [Deref](https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html "trait core::ops::deref::Deref")\ + ?[Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized")\ , T: ?[Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized")\ ,\ \ [Source](https://doc.rust-lang.org/nightly/src/core/ops/deref.rs.html#382)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#associatedtype.Target-1)\ \ #### type [Target](https://doc.rust-lang.org/nightly/core/ops/deref/trait.Receiver.html#associatedtype.Target)\ = T\ \ 🔬This is a nightly-only experimental API. (`arbitrary_self_types`)\ \ The target type on which the method may be called.\ \ [Source](https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#72-74)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#impl-ToOwned-for-T)\ \ ### impl [ToOwned](https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html "trait alloc::borrow::ToOwned")\ for T\ \ where T: [Clone](https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html "trait core::clone::Clone")\ ,\ \ [Source](https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#76)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#associatedtype.Owned)\ \ #### type [Owned](https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned)\ = T\ \ The resulting type after obtaining ownership.\ \ [Source](https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#77)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#method.to_owned)\ \ #### fn [to\_owned](https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned)\ (&self) -> T\ \ Creates owned data from borrowed data, usually by cloning. [Read more](https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned)\ \ [Source](https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#81)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#method.clone_into)\ \ #### fn [clone\_into](https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into)\ (&self, target: [&mut T](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ )\ \ Uses borrowed data to replace owned data, usually by cloning. [Read more](https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into)\ \ [Source](https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#827-829)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#impl-TryFrom%3CU%3E-for-T)\ \ ### impl [TryFrom](https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html "trait core::convert::TryFrom")\ for T\ \ where U: [Into](https://doc.rust-lang.org/nightly/core/convert/trait.Into.html "trait core::convert::Into")\ ,\ \ [Source](https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#831)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#associatedtype.Error-1)\ \ #### type [Error](https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error)\ = [Infallible](https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html "enum core::convert::Infallible")\ \ The type returned in the event of a conversion error.\ \ [Source](https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#834)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#method.try_from)\ \ #### fn [try\_from](https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from)\ (value: U) -> [Result](https://doc.rust-lang.org/nightly/core/result/enum.Result.html "enum core::result::Result")\ >::[Error](https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error "type core::convert::TryFrom::Error")\ \>\ \ Performs the conversion.\ \ [Source](https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#811-813)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#impl-TryInto%3CU%3E-for-T)\ \ ### impl [TryInto](https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html "trait core::convert::TryInto")\ for T\ \ where U: [TryFrom](https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html "trait core::convert::TryFrom")\ ,\ \ [Source](https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#815)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#associatedtype.Error)\ \ #### type [Error](https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error)\ = >::[Error](https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error "type core::convert::TryFrom::Error")\ \ The type returned in the event of a conversion error.\ \ [Source](https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#818)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#method.try_into)\ \ #### fn [try\_into](https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into)\ (self) -> [Result](https://doc.rust-lang.org/nightly/core/result/enum.Result.html "enum core::result::Result")\ >::[Error](https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error "type core::convert::TryFrom::Error")\ \>\ \ Performs the conversion.\ \ [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/alloc/mod.rs.html#33)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html#impl-Allocation-for-T)\ \ ### impl [Allocation](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/alloc/trait.Allocation.html "trait arrow_buffer::alloc::Allocation")\ for T\ \ where T: [RefUnwindSafe](https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html "trait core::panic::unwind_safe::RefUnwindSafe")\ + [Send](https://doc.rust-lang.org/nightly/core/marker/trait.Send.html "trait core::marker::Send")\ + [Sync](https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html "trait core::marker::Sync")\ , --- # MutableBuffer in arrow_buffer::buffer - Rust [Docs.rs](https://docs.rs/) * [arrow-buffer-58.1.0](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html# "Buffer abstractions for Apache Arrow") * arrow-buffer 58.1.0 * [Docs.rs crate page](https://docs.rs/crate/arrow-buffer/58.1.0 "See arrow-buffer in docs.rs") * [Apache-2.0](https://spdx.org/licenses/Apache-2.0) * Links * [Homepage](https://github.com/apache/arrow-rs) * [Repository](https://github.com/apache/arrow-rs) * [crates.io](https://crates.io/crates/arrow-buffer "See arrow-buffer in crates.io") * [Source](https://docs.rs/crate/arrow-buffer/58.1.0/source/ "Browse source of arrow-buffer-58.1.0") * Owners * [andygrove](https://crates.io/users/andygrove) * [kou](https://crates.io/users/kou) * [kszucs](https://crates.io/users/kszucs) * [xhochy](https://crates.io/users/xhochy) * [nevi-me](https://crates.io/users/nevi-me) * [alamb](https://crates.io/users/alamb) * [tustvold](https://crates.io/users/tustvold) * Dependencies * * [bytes ^1.4 _normal_](https://docs.rs/bytes/^1.4/) * [half ^2.1 _normal_](https://docs.rs/half/^2.1/) * [num-bigint ^0.4.6 _normal_](https://docs.rs/num-bigint/^0.4.6/) * [num-traits ^0.2.19 _normal_](https://docs.rs/num-traits/^0.2.19/) * [criterion ^0.8.0 _dev_](https://docs.rs/criterion/^0.8.0/) * [rand ^0.9 _dev_](https://docs.rs/rand/^0.9/) * Versions * [**100%** of the crate is documented](https://docs.rs/crate/arrow-buffer/58.1.0) * [Platform](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#) * [aarch64-apple-darwin](https://docs.rs/crate/arrow-buffer/58.1.0/target-redirect/aarch64-apple-darwin/arrow_buffer/buffer/struct.MutableBuffer.html) * [aarch64-unknown-linux-gnu](https://docs.rs/crate/arrow-buffer/58.1.0/target-redirect/aarch64-unknown-linux-gnu/arrow_buffer/buffer/struct.MutableBuffer.html) * [i686-pc-windows-msvc](https://docs.rs/crate/arrow-buffer/58.1.0/target-redirect/i686-pc-windows-msvc/arrow_buffer/buffer/struct.MutableBuffer.html) * [x86\_64-pc-windows-msvc](https://docs.rs/crate/arrow-buffer/58.1.0/target-redirect/x86_64-pc-windows-msvc/arrow_buffer/buffer/struct.MutableBuffer.html) * [x86\_64-unknown-linux-gnu](https://docs.rs/crate/arrow-buffer/58.1.0/target-redirect/arrow_buffer/buffer/struct.MutableBuffer.html) * [Feature flags](https://docs.rs/crate/arrow-buffer/58.1.0/features "Browse available feature flags of arrow-buffer-58.1.0") * [docs.rs](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#) * [About docs.rs](https://docs.rs/about) * [Badges](https://docs.rs/about/badges) * [Builds](https://docs.rs/about/builds) * [Metadata](https://docs.rs/about/metadata) * [Shorthand URLs](https://docs.rs/about/redirections) * [Download](https://docs.rs/about/download) * [Rustdoc JSON](https://docs.rs/about/rustdoc-json) * [Build queue](https://docs.rs/releases/queue) * [Privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#docs.rs) * [Rust](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#) * [Rust website](https://www.rust-lang.org/) * [The Book](https://doc.rust-lang.org/book/) * [Standard Library API Reference](https://doc.rust-lang.org/std/) * [Rust by Example](https://doc.rust-lang.org/rust-by-example/) * [The Cargo Guide](https://doc.rust-lang.org/cargo/guide/) * [Clippy Documentation](https://doc.rust-lang.org/nightly/clippy) [Skip to main content](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#main-content) [MutableBuffer](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#) ---------------------------------------------------------------------------------------------------- [arrow\_buffer](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/index.html) ::[buffer](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/index.html) Struct MutableBuffer Copy item path =================================== [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/mutable.rs.html#99-109) pub struct MutableBuffer { /* private fields */ } Expand description A [`MutableBuffer`](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html "struct arrow_buffer::buffer::MutableBuffer") is a wrapper over memory regions, used to build [`Buffer`](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html "struct arrow_buffer::buffer::Buffer") s out of items or slices of items. [`Buffer`](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html "struct arrow_buffer::buffer::Buffer") s created from [`MutableBuffer`](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html "struct arrow_buffer::buffer::MutableBuffer") (via `into`) are guaranteed to be aligned along cache lines and in multiples of 64 bytes. Use [MutableBuffer::push](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.push "method arrow_buffer::buffer::MutableBuffer::push") to insert an item, [MutableBuffer::extend\_from\_slice](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.extend_from_slice "method arrow_buffer::buffer::MutableBuffer::extend_from_slice") to insert many items, and `into` to convert it to [`Buffer`](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html "struct arrow_buffer::buffer::Buffer") . For typed data, it is often more efficient to use [`Vec`](https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html "struct alloc::vec::Vec") and convert it to [`Buffer`](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html "struct arrow_buffer::buffer::Buffer") rather than using [`MutableBuffer`](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html "struct arrow_buffer::buffer::MutableBuffer") (see examples below). [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#see-also) See Also -------------------------------------------------------------------------------------------------------- * For a safe, strongly typed API consider using [`Vec`](https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html "struct alloc::vec::Vec") and [`ScalarBuffer`](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.ScalarBuffer.html "struct arrow_buffer::buffer::ScalarBuffer") * To apply bitwise operations, see [`apply_bitwise_binary_op`](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/bit_util/fn.apply_bitwise_binary_op.html "fn arrow_buffer::bit_util::apply_bitwise_binary_op") and [`apply_bitwise_unary_op`](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/bit_util/fn.apply_bitwise_unary_op.html "fn arrow_buffer::bit_util::apply_bitwise_unary_op") [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#example-creating-a-buffer-from-a-mutablebuffer) Example: Creating a [`Buffer`](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html "struct arrow_buffer::buffer::Buffer") from a [`MutableBuffer`](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html "struct arrow_buffer::buffer::MutableBuffer") ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- let mut buffer = MutableBuffer::new(0); buffer.push(256u32); buffer.extend_from_slice(&[1u32]); let buffer = Buffer::from(buffer); assert_eq!(buffer.as_slice(), &[0u8, 1, 0, 0, 1, 0, 0, 0]) The same can be achieved more efficiently by using a `Vec` let mut vec = Vec::new(); vec.push(256u32); vec.extend_from_slice(&[1u32]); let buffer = Buffer::from(vec); assert_eq!(buffer.as_slice(), &[0u8, 1, 0, 0, 1, 0, 0, 0]); [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#example-creating-a-mutablebuffer-from-a-vect) Example: Creating a [`MutableBuffer`](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html "struct arrow_buffer::buffer::MutableBuffer") from a `Vec` -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- let vec = vec![1u32, 2, 3]; let mutable_buffer = MutableBuffer::from(vec); // reuses the allocation from vec assert_eq!(mutable_buffer.len(), 12); // 3 * 4 bytes [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#example-creating-a-mutablebuffer-from-a-buffer) Example: Creating a [`MutableBuffer`](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html "struct arrow_buffer::buffer::MutableBuffer") from a [`Buffer`](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html "struct arrow_buffer::buffer::Buffer") ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- let buffer: Buffer = Buffer::from(&[1u8, 2, 3, 4][..]); // Only possible to convert a Buffer into a MutableBuffer if uniquely owned // (i.e., there are no other references to it). let mut mutable_buffer = match buffer.into_mutable() { Ok(mutable) => mutable, Err(orig_buffer) => { panic!("buffer was not uniquely owned"); } }; mutable_buffer.push(5u8); let buffer = Buffer::from(mutable_buffer); assert_eq!(buffer.as_slice(), &[1u8, 2, 3, 4, 5]) Implementations[§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#implementations) ---------------------------------------------------------------------------------------------------------------------- [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/mutable.rs.html#111-764) [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#impl-MutableBuffer) ### impl [MutableBuffer](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html "struct arrow_buffer::buffer::MutableBuffer") [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/mutable.rs.html#116-118) #### pub fn [new](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.new) (capacity: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) ) -> Self Allocate a new [MutableBuffer](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html "struct arrow_buffer::buffer::MutableBuffer") with initial capacity to be at least `capacity`. See [`MutableBuffer::with_capacity`](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.with_capacity "associated function arrow_buffer::buffer::MutableBuffer::with_capacity") . [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/mutable.rs.html#127-146) #### pub fn [with\_capacity](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.with_capacity) (capacity: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) ) -> Self Allocate a new [MutableBuffer](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html "struct arrow_buffer::buffer::MutableBuffer") with initial capacity to be at least `capacity`. ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#panics) Panics If `capacity`, when rounded up to the nearest multiple of [`ALIGNMENT`](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/alloc/constant.ALIGNMENT.html "constant arrow_buffer::alloc::ALIGNMENT") , is greater then `isize::MAX`, then this function will panic. [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/mutable.rs.html#159-176) #### pub fn [from\_len\_zeroed](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.from_len_zeroed) (len: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) ) -> Self Allocates a new [MutableBuffer](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html "struct arrow_buffer::buffer::MutableBuffer") with `len` and capacity to be at least `len` where all bytes are guaranteed to be `0u8`. ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#example) Example let mut buffer = MutableBuffer::from_len_zeroed(127); assert_eq!(buffer.len(), 127); assert!(buffer.capacity() >= 127); let data = buffer.as_slice_mut(); assert_eq!(data[126], 0u8); [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/mutable.rs.html#202-205) #### pub fn [new\_null](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.new_null) (len: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) ) -> Self creates a new [MutableBuffer](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html "struct arrow_buffer::buffer::MutableBuffer") with capacity and length capable of holding `len` bits. This is useful to create a buffer for packed bitmaps. [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/mutable.rs.html#213-221) #### pub fn [with\_bitset](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.with_bitset) (self, end: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) , val: [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) ) -> Self Set the bits in the range of `[0, end)` to 0 (if `val` is false), or 1 (if `val` is true). Also extend the length of this buffer to be `end`.\ \ This is useful when one wants to clear (or set) the bits and then manipulate the buffer directly (e.g., modifying the buffer by holding a mutable reference from `data_mut()`).\ \ [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/mutable.rs.html#228-240)\ \ #### pub fn [set\_null\_bits](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.set_null_bits)\ (&mut self, start: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html)\ , count: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html)\ )\ \ Ensure that `count` bytes from `start` contain zero bits\ \ This is used to initialize the bits in a buffer, however, it has no impact on the `len` of the buffer and so can be used to initialize the memory region from `len` to `capacity`.\ \ [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/mutable.rs.html#256-263)\ \ #### pub fn [reserve](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.reserve)\ (&mut self, additional: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html)\ )\ \ Ensures that this buffer has at least `self.len + additional` bytes. This re-allocates iff `self.len + additional > capacity`.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#example-1)\ Example\ \ let mut buffer = MutableBuffer::new(0);\ buffer.reserve(253); // allocates for the first time\ (0..253u8).for_each(|i| buffer.push(i)); // no reallocation\ let buffer: Buffer = buffer.into();\ assert_eq!(buffer.len(), 253);\ \ [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/mutable.rs.html#277-332)\ \ #### pub fn [repeat\_slice\_n\_times](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.repeat_slice_n_times)\ ( &mut self, slice\_to\_repeat: &[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ , repeat\_count: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html)\ , )\ \ Adding to this mutable buffer `slice_to_repeat` repeated `repeat_count` times.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#example-2)\ Example\ \ ###### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#repeat-the-same-string-bytes-multiple-times)\ Repeat the same string bytes multiple times\ \ let mut buffer = MutableBuffer::new(0);\ let bytes_to_repeat = b"ab";\ buffer.repeat_slice_n_times(bytes_to_repeat, 3);\ assert_eq!(buffer.as_slice(), b"ababab");\ \ [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/mutable.rs.html#366-377)\ \ #### pub fn [truncate](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.truncate)\ (&mut self, len: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html)\ )\ \ Truncates this buffer to `len` bytes\ \ If `len` is greater than the buffer’s current length, this has no effect\ \ [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/mutable.rs.html#391-406)\ \ #### pub fn [resize](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.resize)\ (&mut self, new\_len: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html)\ , value: [u8](https://doc.rust-lang.org/nightly/std/primitive.u8.html)\ )\ \ Resizes the buffer, either truncating its contents (with no change in capacity), or growing it (potentially reallocating it) and writing `value` in the newly available bytes.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#example-3)\ Example\ \ let mut buffer = MutableBuffer::new(0);\ buffer.resize(253, 2); // allocates for the first time\ assert_eq!(buffer.as_slice()[252], 2u8);\ \ [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/mutable.rs.html#423-428)\ \ #### pub fn [shrink\_to\_fit](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.shrink_to_fit)\ (&mut self)\ \ Shrinks the capacity of the buffer as much as possible. The new capacity will aligned to the nearest 64 bit alignment.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#example-4)\ Example\ \ // 2 cache lines\ let mut buffer = MutableBuffer::new(128);\ assert_eq!(buffer.capacity(), 128);\ buffer.push(1);\ buffer.push(2);\ \ buffer.shrink_to_fit();\ assert!(buffer.capacity() >= 64 && buffer.capacity() < 128);\ \ [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/mutable.rs.html#432-434)\ \ #### pub const fn [is\_empty](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.is_empty)\ (&self) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html)\ \ Returns whether this buffer is empty or not.\ \ [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/mutable.rs.html#439-441)\ \ #### pub const fn [len](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.len)\ (&self) -> [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html)\ \ Returns the length (the number of bytes written) in this buffer. The invariant `buffer.len() <= buffer.capacity()` is always upheld.\ \ [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/mutable.rs.html#447-449)\ \ #### pub const fn [capacity](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.capacity)\ (&self) -> [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html)\ \ Returns the total capacity in this buffer, in bytes.\ \ The invariant `buffer.len() <= buffer.capacity()` is always upheld.\ \ [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/mutable.rs.html#452-454)\ \ #### pub fn [clear](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.clear)\ (&mut self)\ \ Clear all existing data from this buffer.\ \ [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/mutable.rs.html#457-459)\ \ #### pub fn [as\_slice](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.as_slice)\ (&self) -> &\[[u8](https://doc.rust-lang.org/nightly/std/primitive.u8.html)\ \] [ⓘ](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#)\ \ Returns the data stored in this buffer as a slice.\ \ [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/mutable.rs.html#462-464)\ \ #### pub fn [as\_slice\_mut](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.as_slice_mut)\ (&mut self) -> &mut \[[u8](https://doc.rust-lang.org/nightly/std/primitive.u8.html)\ \] [ⓘ](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#)\ \ Returns the data stored in this buffer as a mutable slice.\ \ [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/mutable.rs.html#469-471)\ \ #### pub const fn [as\_ptr](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.as_ptr)\ (&self) -> [\*const](https://doc.rust-lang.org/nightly/std/primitive.pointer.html)\ [u8](https://doc.rust-lang.org/nightly/std/primitive.u8.html)\ \ Returns a raw pointer to this buffer’s internal memory This pointer is guaranteed to be aligned along cache-lines.\ \ [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/mutable.rs.html#476-478)\ \ #### pub fn [as\_mut\_ptr](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.as_mut_ptr)\ (&mut self) -> [\*mut](https://doc.rust-lang.org/nightly/std/primitive.pointer.html)\ [u8](https://doc.rust-lang.org/nightly/std/primitive.u8.html)\ \ Returns a mutable raw pointer to this buffer’s internal memory This pointer is guaranteed to be aligned along cache-lines.\ \ [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/mutable.rs.html#498-505)\ \ #### pub fn [typed\_data\_mut](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.typed_data_mut)\ (&mut self) -> &mut [\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ \ View this buffer as a mutable slice of a specific type.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#panics-1)\ Panics\ \ This function panics if the underlying buffer is not aligned correctly for type `T`.\ \ [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/mutable.rs.html#513-520)\ \ #### pub fn [typed\_data](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.typed_data)\ (&self) -> &[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ \ View buffer as a immutable slice of a specific type.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#panics-2)\ Panics\ \ This function panics if the underlying buffer is not aligned correctly for type `T`.\ \ [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/mutable.rs.html#531-543)\ \ #### pub fn [extend\_from\_slice](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.extend_from_slice)\ (&mut self, items: &[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ )\ \ Extends this buffer from a slice of items that can be represented in bytes, increasing its capacity if needed.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#example-5)\ Example\ \ let mut buffer = MutableBuffer::new(0);\ buffer.extend_from_slice(&[2u32, 0]);\ assert_eq!(buffer.len(), 8) // u32 has 4 bytes\ \ [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/mutable.rs.html#554-563)\ \ #### pub fn [push](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.push)\ (&mut self, item: T)\ \ Extends the buffer with a new item, increasing its capacity if needed.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#example-6)\ Example\ \ let mut buffer = MutableBuffer::new(0);\ buffer.push(256u32);\ assert_eq!(buffer.len(), 4) // u32 has 4 bytes\ \ [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/mutable.rs.html#569-575)\ \ #### pub unsafe fn [push\_unchecked](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.push_unchecked)\ (&mut self, item: T)\ \ Extends the buffer with a new item, without checking for sufficient capacity\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#safety)\ Safety\ \ Caller must ensure that the capacity()-len()>=`size_of`()\ \ [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/mutable.rs.html#579-581)\ \ #### pub fn [extend\_zeros](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.extend_zeros)\ (&mut self, additional: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html)\ )\ \ Extends the buffer by `additional` bytes equal to `0u8`, incrementing its capacity if needed.\ \ [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/mutable.rs.html#586-589)\ \ #### pub unsafe fn [set\_len](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.set_len)\ (&mut self, len: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html)\ )\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#safety-1)\ Safety\ \ The caller must ensure that the buffer was properly initialized up to `len`.\ \ [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/mutable.rs.html#596-624)\ \ #### pub fn [collect\_bool](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.collect_bool)\ [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html)\ \>(len: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html)\ , f: F) -> Self\ \ Invokes `f` with values `0..len` collecting the boolean results into a new `MutableBuffer`\ \ This is similar to `from_trusted_len_iter_bool`, however, can be significantly faster as it eliminates the conditional `Iterator::next`\ \ [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/mutable.rs.html#635-752)\ \ #### pub unsafe fn [extend\_bool\_trusted\_len](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.extend_bool_trusted_len)\ >( &mut self, iter: I, offset: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html)\ , )\ \ Extends this buffer with boolean values.\ \ This requires `iter` to report an exact size via `size_hint`. `offset` indicates the starting offset in bits in this buffer to begin writing to and must be less than or equal to the current length of this buffer. All bits not written to (but readable due to byte alignment) will be zeroed out.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#safety-2)\ Safety\ \ Callers must ensure that `iter` reports an exact size via `size_hint`.\ \ [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/mutable.rs.html#761-763)\ \ #### pub fn [claim](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.claim)\ (&self, pool: &dyn [MemoryPool](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/trait.MemoryPool.html "trait arrow_buffer::MemoryPool")\ )\ \ Available on **crate feature `pool`** only.\ \ Register this [`MutableBuffer`](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html "struct arrow_buffer::buffer::MutableBuffer")\ with the provided [`MemoryPool`](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/trait.MemoryPool.html "trait arrow_buffer::MemoryPool")\ \ This claims the memory used by this buffer in the pool, allowing for accurate accounting of memory usage. Any prior reservation will be released so this works well when the buffer is being shared among multiple arrays.\ \ [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/mutable.rs.html#814-960)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#impl-MutableBuffer-1)\ \ ### impl [MutableBuffer](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html "struct arrow_buffer::buffer::MutableBuffer")\ \ [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/mutable.rs.html#865-889)\ \ #### pub unsafe fn [from\_trusted\_len\_iter](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.from_trusted_len_iter)\ >( iterator: I, ) -> Self\ \ Creates a [`MutableBuffer`](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html "struct arrow_buffer::buffer::MutableBuffer")\ from an [`Iterator`](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html "trait core::iter::traits::iterator::Iterator")\ with a trusted (upper) length. Prefer this to `collect` whenever possible, as it is faster ~60% faster.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#example-7)\ Example\ \ let v = vec![1u32];\ let iter = v.iter().map(|x| x * 2);\ let buffer = unsafe { MutableBuffer::from_trusted_len_iter(iter) };\ assert_eq!(buffer.len(), 4) // u32 has 4 bytes\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#safety-3)\ Safety\ \ This method assumes that the iterator’s size is correct and is undefined behavior to use it on an iterator that reports an incorrect length.\ \ [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/mutable.rs.html#909-914)\ \ #### pub unsafe fn [from\_trusted\_len\_iter\_bool](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.from_trusted_len_iter_bool)\ >( iterator: I, ) -> Self\ \ Creates a [`MutableBuffer`](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html "struct arrow_buffer::buffer::MutableBuffer")\ from a boolean [`Iterator`](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html "trait core::iter::traits::iterator::Iterator")\ with a trusted (upper) length.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#use-arrow_bufferbuffermutablebuffer)\ use arrow\_buffer::buffer::MutableBuffer;\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#example-8)\ Example\ \ let v = vec![false, true, false];\ let iter = v.iter().map(|x| *x || true);\ let buffer = unsafe { MutableBuffer::from_trusted_len_iter_bool(iter) };\ assert_eq!(buffer.len(), 1) // 3 booleans have 1 byte\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#safety-4)\ Safety\ \ This method assumes that the iterator’s size is correct and is undefined behavior to use it on an iterator that reports an incorrect length.\ \ [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/mutable.rs.html#923-959)\ \ #### pub unsafe fn [try\_from\_trusted\_len\_iter](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.try_from_trusted_len_iter)\ >>( iterator: I, ) -> [Result](https://doc.rust-lang.org/nightly/core/result/enum.Result.html "enum core::result::Result")\ \ \ Creates a [`MutableBuffer`](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html "struct arrow_buffer::buffer::MutableBuffer")\ from an [`Iterator`](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html "trait core::iter::traits::iterator::Iterator")\ with a trusted (upper) length or errors if any of the items of the iterator is an error. Prefer this to `collect` whenever possible, as it is faster ~60% faster.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#safety-5)\ Safety\ \ This method assumes that the iterator’s size is correct and is undefined behavior to use it on an iterator that reports an incorrect length.\ \ Methods from [Deref](https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html "trait core::ops::deref::Deref")\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#deref-methods-%5Bu8%5D)\ \ -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------\ \ 1.23.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/ascii.rs.html#18)\ \ #### pub fn [is\_ascii](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.is_ascii)\ (&self) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html)\ \ Checks if all bytes in this slice are within the ASCII range.\ \ An empty slice returns `true`.\ \ [Source](https://doc.rust-lang.org/nightly/src/core/slice/ascii.rs.html#27)\ \ #### pub fn [as\_ascii](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.as_ascii)\ (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option")\ <&\[[AsciiChar](https://doc.rust-lang.org/nightly/core/ascii/ascii_char/enum.AsciiChar.html "enum core::ascii::ascii_char::AsciiChar")\ \]>\ \ 🔬This is a nightly-only experimental API. (`ascii_char`)\ \ If this slice [`is_ascii`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.is_ascii "method slice::is_ascii")\ , returns it as a slice of [ASCII characters](https://doc.rust-lang.org/nightly/core/ascii/ascii_char/enum.AsciiChar.html "enum core::ascii::ascii_char::AsciiChar")\ , otherwise returns `None`.\ \ [Source](https://doc.rust-lang.org/nightly/src/core/slice/ascii.rs.html#45)\ \ #### pub unsafe fn [as\_ascii\_unchecked](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.as_ascii_unchecked)\ (&self) -> &\[[AsciiChar](https://doc.rust-lang.org/nightly/core/ascii/ascii_char/enum.AsciiChar.html "enum core::ascii::ascii_char::AsciiChar")\ \]\ \ 🔬This is a nightly-only experimental API. (`ascii_char`)\ \ Converts this slice of bytes into a slice of ASCII characters, without checking whether they’re valid.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#safety-6)\ Safety\ \ Every byte in the slice must be in `0..=127`, or else this is UB.\ \ 1.23.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/ascii.rs.html#60)\ \ #### pub fn [eq\_ignore\_ascii\_case](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.eq_ignore_ascii_case)\ (&self, other: &\[[u8](https://doc.rust-lang.org/nightly/std/primitive.u8.html)\ \]) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html)\ \ Checks that two slices are an ASCII case-insensitive match.\ \ Same as `to_ascii_lowercase(a) == to_ascii_lowercase(b)`, but without allocating and copying temporaries.\ \ 1.23.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/ascii.rs.html#173)\ \ #### pub fn [make\_ascii\_uppercase](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.make_ascii_uppercase)\ (&mut self)\ \ Converts this slice to its ASCII upper case equivalent in-place.\ \ ASCII letters ‘a’ to ‘z’ are mapped to ‘A’ to ‘Z’, but non-ASCII letters are unchanged.\ \ To return a new uppercased value without modifying the existing one, use [`to_ascii_uppercase`](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.to_ascii_uppercase)\ .\ \ 1.23.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/ascii.rs.html#195)\ \ #### pub fn [make\_ascii\_lowercase](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.make_ascii_lowercase)\ (&mut self)\ \ Converts this slice to its ASCII lower case equivalent in-place.\ \ ASCII letters ‘A’ to ‘Z’ are mapped to ‘a’ to ‘z’, but non-ASCII letters are unchanged.\ \ To return a new lowercased value without modifying the existing one, use [`to_ascii_lowercase`](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.to_ascii_lowercase)\ .\ \ 1.60.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/ascii.rs.html#218)\ \ #### pub fn [escape\_ascii](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.escape_ascii)\ (&self) -> [EscapeAscii](https://doc.rust-lang.org/nightly/core/slice/ascii/struct.EscapeAscii.html "struct core::slice::ascii::EscapeAscii")\ <'\_>\ \ Returns an iterator that produces an escaped version of this slice, treating it as an ASCII string.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#examples)\ Examples\ \ let s = b"0\t\r\n'\"\\\x9d";\ let escaped = s.escape_ascii().to_string();\ assert_eq!(escaped, "0\\t\\r\\n\\'\\\"\\\\\\x9d");\ \ 1.80.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/ascii.rs.html#237)\ \ #### pub fn [trim\_ascii\_start](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.trim_ascii_start)\ (&self) -> &\[[u8](https://doc.rust-lang.org/nightly/std/primitive.u8.html)\ \] [ⓘ](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#)\ \ Returns a byte slice with leading ASCII whitespace bytes removed.\ \ ‘Whitespace’ refers to the definition used by [`u8::is_ascii_whitespace`](https://doc.rust-lang.org/nightly/std/primitive.u8.html#method.is_ascii_whitespace "method u8::is_ascii_whitespace")\ .\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#examples-1)\ Examples\ \ assert_eq!(b" \t hello world\n".trim_ascii_start(), b"hello world\n");\ assert_eq!(b" ".trim_ascii_start(), b"");\ assert_eq!(b"".trim_ascii_start(), b"");\ \ 1.80.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/ascii.rs.html#266)\ \ #### pub fn [trim\_ascii\_end](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.trim_ascii_end)\ (&self) -> &\[[u8](https://doc.rust-lang.org/nightly/std/primitive.u8.html)\ \] [ⓘ](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#)\ \ Returns a byte slice with trailing ASCII whitespace bytes removed.\ \ ‘Whitespace’ refers to the definition used by [`u8::is_ascii_whitespace`](https://doc.rust-lang.org/nightly/std/primitive.u8.html#method.is_ascii_whitespace "method u8::is_ascii_whitespace")\ .\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#examples-2)\ Examples\ \ assert_eq!(b"\r hello world\n ".trim_ascii_end(), b"\r hello world");\ assert_eq!(b" ".trim_ascii_end(), b"");\ assert_eq!(b"".trim_ascii_end(), b"");\ \ 1.80.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/ascii.rs.html#296)\ \ #### pub fn [trim\_ascii](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.trim_ascii)\ (&self) -> &\[[u8](https://doc.rust-lang.org/nightly/std/primitive.u8.html)\ \] [ⓘ](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#)\ \ Returns a byte slice with leading and trailing ASCII whitespace bytes removed.\ \ ‘Whitespace’ refers to the definition used by [`u8::is_ascii_whitespace`](https://doc.rust-lang.org/nightly/std/primitive.u8.html#method.is_ascii_whitespace "method u8::is_ascii_whitespace")\ .\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#examples-3)\ Examples\ \ assert_eq!(b"\r hello world\n ".trim_ascii(), b"hello world");\ assert_eq!(b" ".trim_ascii(), b"");\ assert_eq!(b"".trim_ascii(), b"");\ \ 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#116)\ \ #### pub fn [len](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.len-1)\ (&self) -> [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html)\ \ Returns the number of elements in the slice.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#examples-4)\ Examples\ \ let a = [1, 2, 3];\ assert_eq!(a.len(), 3);\ \ 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#136)\ \ #### pub fn [is\_empty](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.is_empty-1)\ (&self) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html)\ \ Returns `true` if the slice has a length of 0.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#examples-5)\ Examples\ \ let a = [1, 2, 3];\ assert!(!a.is_empty());\ \ let b: &[i32] = &[];\ assert!(b.is_empty());\ \ 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#155)\ \ #### pub fn [first](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.first)\ (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option")\ <[&T](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ \>\ \ Returns the first element of the slice, or `None` if it is empty.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#examples-6)\ Examples\ \ let v = [10, 40, 30];\ assert_eq!(Some(&10), v.first());\ \ let w: &[i32] = &[];\ assert_eq!(None, w.first());\ \ 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#178)\ \ #### pub fn [first\_mut](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.first_mut)\ (&mut self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option")\ <[&mut T](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ \>\ \ Returns a mutable reference to the first element of the slice, or `None` if it is empty.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#examples-7)\ Examples\ \ let x = &mut [0, 1, 2];\ \ if let Some(first) = x.first_mut() {\ *first = 5;\ }\ assert_eq!(x, &[5, 1, 2]);\ \ let y: &mut [i32] = &mut [];\ assert_eq!(None, y.first_mut());\ \ 1.5.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#198)\ \ #### pub fn [split\_first](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.split_first)\ (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option")\ <([&T](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ , &[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ )>\ \ Returns the first and all the rest of the elements of the slice, or `None` if it is empty.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#examples-8)\ Examples\ \ let x = &[0, 1, 2];\ \ if let Some((first, elements)) = x.split_first() {\ assert_eq!(first, &0);\ assert_eq!(elements, &[1, 2]);\ }\ \ 1.5.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#220)\ \ #### pub fn [split\_first\_mut](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.split_first_mut)\ (&mut self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option")\ <([&mut T](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ , &mut [\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ )>\ \ Returns the first and all the rest of the elements of the slice, or `None` if it is empty.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#examples-9)\ Examples\ \ let x = &mut [0, 1, 2];\ \ if let Some((first, elements)) = x.split_first_mut() {\ *first = 3;\ elements[0] = 4;\ elements[1] = 5;\ }\ assert_eq!(x, &[3, 4, 5]);\ \ 1.5.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#240)\ \ #### pub fn [split\_last](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.split_last)\ (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option")\ <([&T](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ , &[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ )>\ \ Returns the last and all the rest of the elements of the slice, or `None` if it is empty.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#examples-10)\ Examples\ \ let x = &[0, 1, 2];\ \ if let Some((last, elements)) = x.split_last() {\ assert_eq!(last, &2);\ assert_eq!(elements, &[0, 1]);\ }\ \ 1.5.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#262)\ \ #### pub fn [split\_last\_mut](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.split_last_mut)\ (&mut self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option")\ <([&mut T](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ , &mut [\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ )>\ \ Returns the last and all the rest of the elements of the slice, or `None` if it is empty.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#examples-11)\ Examples\ \ let x = &mut [0, 1, 2];\ \ if let Some((last, elements)) = x.split_last_mut() {\ *last = 3;\ elements[0] = 4;\ elements[1] = 5;\ }\ assert_eq!(x, &[4, 5, 3]);\ \ 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#281)\ \ #### pub fn [last](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.last)\ (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option")\ <[&T](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ \>\ \ Returns the last element of the slice, or `None` if it is empty.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#examples-12)\ Examples\ \ let v = [10, 40, 30];\ assert_eq!(Some(&30), v.last());\ \ let w: &[i32] = &[];\ assert_eq!(None, w.last());\ \ 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#304)\ \ #### pub fn [last\_mut](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.last_mut)\ (&mut self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option")\ <[&mut T](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ \>\ \ Returns a mutable reference to the last item in the slice, or `None` if it is empty.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#examples-13)\ Examples\ \ let x = &mut [0, 1, 2];\ \ if let Some(last) = x.last_mut() {\ *last = 10;\ }\ assert_eq!(x, &[0, 1, 10]);\ \ let y: &mut [i32] = &mut [];\ assert_eq!(None, y.last_mut());\ \ 1.77.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#327)\ \ #### pub fn [first\_chunk](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.first_chunk)\ (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option")\ <&[\[T; N\]](https://doc.rust-lang.org/nightly/std/primitive.array.html)\ \>\ \ Returns an array reference to the first `N` items in the slice.\ \ If the slice is not at least `N` in length, this will return `None`.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#examples-14)\ Examples\ \ let u = [10, 40, 30];\ assert_eq!(Some(&[10, 40]), u.first_chunk::<2>());\ \ let v: &[i32] = &[10];\ assert_eq!(None, v.first_chunk::<2>());\ \ let w: &[i32] = &[];\ assert_eq!(Some(&[]), w.first_chunk::<0>());\ \ 1.77.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#357)\ \ #### pub fn [first\_chunk\_mut](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.first_chunk_mut)\ (&mut self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option")\ <&mut [\[T; N\]](https://doc.rust-lang.org/nightly/std/primitive.array.html)\ \>\ \ Returns a mutable array reference to the first `N` items in the slice.\ \ If the slice is not at least `N` in length, this will return `None`.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#examples-15)\ Examples\ \ let x = &mut [0, 1, 2];\ \ if let Some(first) = x.first_chunk_mut::<2>() {\ first[0] = 5;\ first[1] = 4;\ }\ assert_eq!(x, &[5, 4, 2]);\ \ assert_eq!(None, x.first_chunk_mut::<4>());\ \ 1.77.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#387)\ \ #### pub fn [split\_first\_chunk](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.split_first_chunk)\ (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option")\ <(&[\[T; N\]](https://doc.rust-lang.org/nightly/std/primitive.array.html)\ , &[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ )>\ \ Returns an array reference to the first `N` items in the slice and the remaining slice.\ \ If the slice is not at least `N` in length, this will return `None`.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#examples-16)\ Examples\ \ let x = &[0, 1, 2];\ \ if let Some((first, elements)) = x.split_first_chunk::<2>() {\ assert_eq!(first, &[0, 1]);\ assert_eq!(elements, &[2]);\ }\ \ assert_eq!(None, x.split_first_chunk::<4>());\ \ 1.77.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#417-419)\ \ #### pub fn [split\_first\_chunk\_mut](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.split_first_chunk_mut)\ ( &mut self, ) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option")\ <(&mut [\[T; N\]](https://doc.rust-lang.org/nightly/std/primitive.array.html)\ , &mut [\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ )>\ \ Returns a mutable array reference to the first `N` items in the slice and the remaining slice.\ \ If the slice is not at least `N` in length, this will return `None`.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#examples-17)\ Examples\ \ let x = &mut [0, 1, 2];\ \ if let Some((first, elements)) = x.split_first_chunk_mut::<2>() {\ first[0] = 3;\ first[1] = 4;\ elements[0] = 5;\ }\ assert_eq!(x, &[3, 4, 5]);\ \ assert_eq!(None, x.split_first_chunk_mut::<4>());\ \ 1.77.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#447)\ \ #### pub fn [split\_last\_chunk](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.split_last_chunk)\ (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option")\ <(&[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ , &[\[T; N\]](https://doc.rust-lang.org/nightly/std/primitive.array.html)\ )>\ \ Returns an array reference to the last `N` items in the slice and the remaining slice.\ \ If the slice is not at least `N` in length, this will return `None`.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#examples-18)\ Examples\ \ let x = &[0, 1, 2];\ \ if let Some((elements, last)) = x.split_last_chunk::<2>() {\ assert_eq!(elements, &[0]);\ assert_eq!(last, &[1, 2]);\ }\ \ assert_eq!(None, x.split_last_chunk::<4>());\ \ 1.77.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#478-480)\ \ #### pub fn [split\_last\_chunk\_mut](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.split_last_chunk_mut)\ ( &mut self, ) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option")\ <(&mut [\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ , &mut [\[T; N\]](https://doc.rust-lang.org/nightly/std/primitive.array.html)\ )>\ \ Returns a mutable array reference to the last `N` items in the slice and the remaining slice.\ \ If the slice is not at least `N` in length, this will return `None`.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#examples-19)\ Examples\ \ let x = &mut [0, 1, 2];\ \ if let Some((elements, last)) = x.split_last_chunk_mut::<2>() {\ last[0] = 3;\ last[1] = 4;\ elements[0] = 5;\ }\ assert_eq!(x, &[5, 3, 4]);\ \ assert_eq!(None, x.split_last_chunk_mut::<4>());\ \ 1.77.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#509)\ \ #### pub fn [last\_chunk](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.last_chunk)\ (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option")\ <&[\[T; N\]](https://doc.rust-lang.org/nightly/std/primitive.array.html)\ \>\ \ Returns an array reference to the last `N` items in the slice.\ \ If the slice is not at least `N` in length, this will return `None`.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#examples-20)\ Examples\ \ let u = [10, 40, 30];\ assert_eq!(Some(&[40, 30]), u.last_chunk::<2>());\ \ let v: &[i32] = &[10];\ assert_eq!(None, v.last_chunk::<2>());\ \ let w: &[i32] = &[];\ assert_eq!(Some(&[]), w.last_chunk::<0>());\ \ 1.77.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#539)\ \ #### pub fn [last\_chunk\_mut](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.last_chunk_mut)\ (&mut self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option")\ <&mut [\[T; N\]](https://doc.rust-lang.org/nightly/std/primitive.array.html)\ \>\ \ Returns a mutable array reference to the last `N` items in the slice.\ \ If the slice is not at least `N` in length, this will return `None`.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#examples-21)\ Examples\ \ let x = &mut [0, 1, 2];\ \ if let Some(last) = x.last_chunk_mut::<2>() {\ last[0] = 10;\ last[1] = 20;\ }\ assert_eq!(x, &[0, 10, 20]);\ \ assert_eq!(None, x.last_chunk_mut::<4>());\ \ 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#572-574)\ \ #### pub fn [get](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.get)\ (&self, index: I) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option")\ <&>::[Output](https://doc.rust-lang.org/nightly/core/slice/index/trait.SliceIndex.html#associatedtype.Output "type core::slice::index::SliceIndex::Output")\ \>\ \ where I: [SliceIndex](https://doc.rust-lang.org/nightly/core/slice/index/trait.SliceIndex.html "trait core::slice::index::SliceIndex")\ <[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ \>,\ \ Returns a reference to an element or subslice depending on the type of index.\ \ * If given a position, returns a reference to the element at that position or `None` if out of bounds.\ * If given a range, returns the subslice corresponding to that range, or `None` if out of bounds.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#examples-22)\ Examples\ \ let v = [10, 40, 30];\ assert_eq!(Some(&40), v.get(1));\ assert_eq!(Some(&[10, 40][..]), v.get(0..2));\ assert_eq!(None, v.get(3));\ assert_eq!(None, v.get(0..4));\ \ 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#599-601)\ \ #### pub fn [get\_mut](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.get_mut)\ ( &mut self, index: I, ) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option")\ <&mut >::[Output](https://doc.rust-lang.org/nightly/core/slice/index/trait.SliceIndex.html#associatedtype.Output "type core::slice::index::SliceIndex::Output")\ \>\ \ where I: [SliceIndex](https://doc.rust-lang.org/nightly/core/slice/index/trait.SliceIndex.html "trait core::slice::index::SliceIndex")\ <[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ \>,\ \ Returns a mutable reference to an element or subslice depending on the type of index (see [`get`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.get "method slice::get")\ ) or `None` if the index is out of bounds.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#examples-23)\ Examples\ \ let x = &mut [0, 1, 2];\ \ if let Some(elem) = x.get_mut(1) {\ *elem = 42;\ }\ assert_eq!(x, &[0, 42, 2]);\ \ 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#639-641)\ \ #### pub unsafe fn [get\_unchecked](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.get_unchecked)\ ( &self, index: I, ) -> &>::[Output](https://doc.rust-lang.org/nightly/core/slice/index/trait.SliceIndex.html#associatedtype.Output "type core::slice::index::SliceIndex::Output")\ \ where I: [SliceIndex](https://doc.rust-lang.org/nightly/core/slice/index/trait.SliceIndex.html "trait core::slice::index::SliceIndex")\ <[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ \>,\ \ Returns a reference to an element or subslice, without doing bounds checking.\ \ For a safe alternative see [`get`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.get "method slice::get")\ .\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#safety-7)\ Safety\ \ Calling this method with an out-of-bounds index is _[undefined behavior](https://doc.rust-lang.org/reference/behavior-considered-undefined.html)\ _ even if the resulting reference is not used.\ \ You can think of this like `.get(index).unwrap_unchecked()`. It’s UB to call `.get_unchecked(len)`, even if you immediately convert to a pointer. And it’s UB to call `.get_unchecked(..len + 1)`, `.get_unchecked(..=len)`, or similar.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#examples-24)\ Examples\ \ let x = &[1, 2, 4];\ \ unsafe {\ assert_eq!(x.get_unchecked(1), &2);\ }\ \ 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#684-686)\ \ #### pub unsafe fn [get\_unchecked\_mut](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.get_unchecked_mut)\ ( &mut self, index: I, ) -> &mut >::[Output](https://doc.rust-lang.org/nightly/core/slice/index/trait.SliceIndex.html#associatedtype.Output "type core::slice::index::SliceIndex::Output")\ \ where I: [SliceIndex](https://doc.rust-lang.org/nightly/core/slice/index/trait.SliceIndex.html "trait core::slice::index::SliceIndex")\ <[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ \>,\ \ Returns a mutable reference to an element or subslice, without doing bounds checking.\ \ For a safe alternative see [`get_mut`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.get_mut "method slice::get_mut")\ .\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#safety-8)\ Safety\ \ Calling this method with an out-of-bounds index is _[undefined behavior](https://doc.rust-lang.org/reference/behavior-considered-undefined.html)\ _ even if the resulting reference is not used.\ \ You can think of this like `.get_mut(index).unwrap_unchecked()`. It’s UB to call `.get_unchecked_mut(len)`, even if you immediately convert to a pointer. And it’s UB to call `.get_unchecked_mut(..len + 1)`, `.get_unchecked_mut(..=len)`, or similar.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#examples-25)\ Examples\ \ let x = &mut [1, 2, 4];\ \ unsafe {\ let elem = x.get_unchecked_mut(1);\ *elem = 13;\ }\ assert_eq!(x, &[1, 13, 4]);\ \ 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#726)\ \ #### pub fn [as\_ptr](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.as_ptr-1)\ (&self) -> [\*const T](https://doc.rust-lang.org/nightly/std/primitive.pointer.html)\ \ Returns a raw pointer to the slice’s buffer.\ \ The caller must ensure that the slice outlives the pointer this function returns, or else it will end up dangling.\ \ The caller must also ensure that the memory the pointer (non-transitively) points to is never written to (except inside an `UnsafeCell`) using this pointer or any pointer derived from it. If you need to mutate the contents of the slice, use [`as_mut_ptr`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.as_mut_ptr "method slice::as_mut_ptr")\ .\ \ Modifying the container referenced by this slice may cause its buffer to be reallocated, which would also make any pointers to it invalid.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#examples-26)\ Examples\ \ let x = &[1, 2, 4];\ let x_ptr = x.as_ptr();\ \ unsafe {\ for i in 0..x.len() {\ assert_eq!(x.get_unchecked(i), &*x_ptr.add(i));\ }\ }\ \ 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#757)\ \ #### pub fn [as\_mut\_ptr](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.as_mut_ptr-1)\ (&mut self) -> [\*mut T](https://doc.rust-lang.org/nightly/std/primitive.pointer.html)\ \ Returns an unsafe mutable pointer to the slice’s buffer.\ \ The caller must ensure that the slice outlives the pointer this function returns, or else it will end up dangling.\ \ Modifying the container referenced by this slice may cause its buffer to be reallocated, which would also make any pointers to it invalid.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#examples-27)\ Examples\ \ let x = &mut [1, 2, 4];\ let x_ptr = x.as_mut_ptr();\ \ unsafe {\ for i in 0..x.len() {\ *x_ptr.add(i) += 2;\ }\ }\ assert_eq!(x, &[3, 4, 6]);\ \ 1.48.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#793)\ \ #### pub fn [as\_ptr\_range](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.as_ptr_range)\ (&self) -> [Range](https://doc.rust-lang.org/nightly/core/ops/range/struct.Range.html "struct core::ops::range::Range")\ <[\*const T](https://doc.rust-lang.org/nightly/std/primitive.pointer.html)\ \>\ \ Returns the two raw pointers spanning the slice.\ \ The returned range is half-open, which means that the end pointer points _one past_ the last element of the slice. This way, an empty slice is represented by two equal pointers, and the difference between the two pointers represents the size of the slice.\ \ See [`as_ptr`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.as_ptr "method slice::as_ptr")\ for warnings on using these pointers. The end pointer requires extra caution, as it does not point to a valid element in the slice.\ \ This function is useful for interacting with foreign interfaces which use two pointers to refer to a range of elements in memory, as is common in C++.\ \ It can also be useful to check if a pointer to an element refers to an element of this slice:\ \ let a = [1, 2, 3];\ let x = &a[1] as *const _;\ let y = &5 as *const _;\ \ assert!(a.as_ptr_range().contains(&x));\ assert!(!a.as_ptr_range().contains(&y));\ \ 1.48.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#836)\ \ #### pub fn [as\_mut\_ptr\_range](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.as_mut_ptr_range)\ (&mut self) -> [Range](https://doc.rust-lang.org/nightly/core/ops/range/struct.Range.html "struct core::ops::range::Range")\ <[\*mut T](https://doc.rust-lang.org/nightly/std/primitive.pointer.html)\ \>\ \ Returns the two unsafe mutable pointers spanning the slice.\ \ The returned range is half-open, which means that the end pointer points _one past_ the last element of the slice. This way, an empty slice is represented by two equal pointers, and the difference between the two pointers represents the size of the slice.\ \ See [`as_mut_ptr`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.as_mut_ptr "method slice::as_mut_ptr")\ for warnings on using these pointers. The end pointer requires extra caution, as it does not point to a valid element in the slice.\ \ This function is useful for interacting with foreign interfaces which use two pointers to refer to a range of elements in memory, as is common in C++.\ \ 1.93.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#850)\ \ #### pub fn [as\_array](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.as_array)\ (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option")\ <&[\[T; N\]](https://doc.rust-lang.org/nightly/std/primitive.array.html)\ \>\ \ Gets a reference to the underlying array.\ \ If `N` is not exactly equal to the length of `self`, then this method returns `None`.\ \ 1.93.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#869)\ \ #### pub fn [as\_mut\_array](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.as_mut_array)\ (&mut self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option")\ <&mut [\[T; N\]](https://doc.rust-lang.org/nightly/std/primitive.array.html)\ \>\ \ Gets a mutable reference to the slice’s underlying array.\ \ If `N` is not exactly equal to the length of `self`, then this method returns `None`.\ \ 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#905)\ \ #### pub fn [swap](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.swap)\ (&mut self, a: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html)\ , b: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html)\ )\ \ Swaps two elements in the slice.\ \ If `a` equals to `b`, it’s guaranteed that elements won’t change value.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#arguments)\ Arguments\ \ * a - The index of the first element\ * b - The index of the second element\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#panics-3)\ Panics\ \ Panics if `a` or `b` are out of bounds.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#examples-28)\ Examples\ \ let mut v = ["a", "b", "c", "d", "e"];\ v.swap(2, 4);\ assert!(v == ["a", "b", "e", "d", "c"]);\ \ [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#948)\ \ #### pub unsafe fn [swap\_unchecked](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.swap_unchecked)\ (&mut self, a: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html)\ , b: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html)\ )\ \ 🔬This is a nightly-only experimental API. (`slice_swap_unchecked`)\ \ Swaps two elements in the slice, without doing bounds checking.\ \ For a safe alternative see [`swap`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.swap "method slice::swap")\ .\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#arguments-1)\ Arguments\ \ * a - The index of the first element\ * b - The index of the second element\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#safety-9)\ Safety\ \ Calling this method with an out-of-bounds index is _[undefined behavior](https://doc.rust-lang.org/reference/behavior-considered-undefined.html)\ _. The caller has to ensure that `a < self.len()` and `b < self.len()`.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#examples-29)\ Examples\ \ #![feature(slice_swap_unchecked)]\ \ let mut v = ["a", "b", "c", "d"];\ // SAFETY: we know that 1 and 3 are both indices of the slice\ unsafe { v.swap_unchecked(1, 3) };\ assert!(v == ["a", "d", "c", "b"]);\ \ 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#978)\ \ #### pub fn [reverse](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.reverse)\ (&mut self)\ \ Reverses the order of elements in the slice, in place.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#examples-30)\ Examples\ \ let mut v = [1, 2, 3];\ v.reverse();\ assert!(v == [3, 2, 1]);\ \ 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#1040)\ \ #### pub fn [iter](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.iter)\ (&self) -> [Iter](https://doc.rust-lang.org/nightly/core/slice/iter/struct.Iter.html "struct core::slice::iter::Iter")\ <'\_, T>\ \ Returns an iterator over the slice.\ \ The iterator yields all items from start to end.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#examples-31)\ Examples\ \ let x = &[1, 2, 4];\ let mut iterator = x.iter();\ \ assert_eq!(iterator.next(), Some(&1));\ assert_eq!(iterator.next(), Some(&2));\ assert_eq!(iterator.next(), Some(&4));\ assert_eq!(iterator.next(), None);\ \ 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#1060)\ \ #### pub fn [iter\_mut](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.iter_mut)\ (&mut self) -> [IterMut](https://doc.rust-lang.org/nightly/core/slice/iter/struct.IterMut.html "struct core::slice::iter::IterMut")\ <'\_, T>\ \ Returns an iterator that allows modifying each value.\ \ The iterator yields all items from start to end.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#examples-32)\ Examples\ \ let x = &mut [1, 2, 4];\ for elem in x.iter_mut() {\ *elem += 2;\ }\ assert_eq!(x, &[3, 4, 6]);\ \ 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#1115)\ \ #### pub fn [windows](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.windows)\ (&self, size: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html)\ ) -> [Windows](https://doc.rust-lang.org/nightly/core/slice/iter/struct.Windows.html "struct core::slice::iter::Windows")\ <'\_, T>\ \ Returns an iterator over all contiguous windows of length `size`. The windows overlap. If the slice is shorter than `size`, the iterator returns no values.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#panics-4)\ Panics\ \ Panics if `size` is zero.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#examples-33)\ Examples\ \ let slice = ['l', 'o', 'r', 'e', 'm'];\ let mut iter = slice.windows(3);\ assert_eq!(iter.next().unwrap(), &['l', 'o', 'r']);\ assert_eq!(iter.next().unwrap(), &['o', 'r', 'e']);\ assert_eq!(iter.next().unwrap(), &['r', 'e', 'm']);\ assert!(iter.next().is_none());\ \ If the slice is shorter than `size`:\ \ let slice = ['f', 'o', 'o'];\ let mut iter = slice.windows(4);\ assert!(iter.next().is_none());\ \ Because the [Iterator](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html "trait core::iter::traits::iterator::Iterator")\ trait cannot represent the required lifetimes, there is no `windows_mut` analog to `windows`; `[0,1,2].windows_mut(2).collect()` would violate [the rules of references](https://doc.rust-lang.org/book/ch04-02-references-and-borrowing.html#the-rules-of-references)\ (though a [LendingIterator](https://blog.rust-lang.org/2022/10/28/gats-stabilization.html)\ analog is possible). You can sometimes use [`Cell::as_slice_of_cells`](https://doc.rust-lang.org/nightly/core/cell/struct.Cell.html#method.as_slice_of_cells "method core::cell::Cell::as_slice_of_cells")\ in conjunction with `windows` instead:\ \ use std::cell::Cell;\ \ let mut array = ['R', 'u', 's', 't', ' ', '2', '0', '1', '5'];\ let slice = &mut array[..];\ let slice_of_cells: &[Cell] = Cell::from_mut(slice).as_slice_of_cells();\ for w in slice_of_cells.windows(3) {\ Cell::swap(&w[0], &w[2]);\ }\ assert_eq!(array, ['s', 't', ' ', '2', '0', '1', '5', 'u', 'R']);\ \ 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#1155)\ \ #### pub fn [chunks](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.chunks)\ (&self, chunk\_size: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html)\ ) -> [Chunks](https://doc.rust-lang.org/nightly/core/slice/iter/struct.Chunks.html "struct core::slice::iter::Chunks")\ <'\_, T>\ \ Returns an iterator over `chunk_size` elements of the slice at a time, starting at the beginning of the slice.\ \ The chunks are slices and do not overlap. If `chunk_size` does not divide the length of the slice, then the last chunk will not have length `chunk_size`.\ \ See [`chunks_exact`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.chunks_exact "method slice::chunks_exact")\ for a variant of this iterator that returns chunks of always exactly `chunk_size` elements, and [`rchunks`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.rchunks "method slice::rchunks")\ for the same iterator but starting at the end of the slice.\ \ If your `chunk_size` is a constant, consider using [`as_chunks`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.as_chunks "method slice::as_chunks")\ instead, which will give references to arrays of exactly that length, rather than slices.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#panics-5)\ Panics\ \ Panics if `chunk_size` is zero.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#examples-34)\ Examples\ \ let slice = ['l', 'o', 'r', 'e', 'm'];\ let mut iter = slice.chunks(2);\ assert_eq!(iter.next().unwrap(), &['l', 'o']);\ assert_eq!(iter.next().unwrap(), &['r', 'e']);\ assert_eq!(iter.next().unwrap(), &['m']);\ assert!(iter.next().is_none());\ \ 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#1199)\ \ #### pub fn [chunks\_mut](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.chunks_mut)\ (&mut self, chunk\_size: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html)\ ) -> [ChunksMut](https://doc.rust-lang.org/nightly/core/slice/iter/struct.ChunksMut.html "struct core::slice::iter::ChunksMut")\ <'\_, T>\ \ Returns an iterator over `chunk_size` elements of the slice at a time, starting at the beginning of the slice.\ \ The chunks are mutable slices, and do not overlap. If `chunk_size` does not divide the length of the slice, then the last chunk will not have length `chunk_size`.\ \ See [`chunks_exact_mut`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.chunks_exact_mut "method slice::chunks_exact_mut")\ for a variant of this iterator that returns chunks of always exactly `chunk_size` elements, and [`rchunks_mut`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.rchunks_mut "method slice::rchunks_mut")\ for the same iterator but starting at the end of the slice.\ \ If your `chunk_size` is a constant, consider using [`as_chunks_mut`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.as_chunks_mut "method slice::as_chunks_mut")\ instead, which will give references to arrays of exactly that length, rather than slices.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#panics-6)\ Panics\ \ Panics if `chunk_size` is zero.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#examples-35)\ Examples\ \ let v = &mut [0, 0, 0, 0, 0];\ let mut count = 1;\ \ for chunk in v.chunks_mut(2) {\ for elem in chunk.iter_mut() {\ *elem += count;\ }\ count += 1;\ }\ assert_eq!(v, &[1, 1, 2, 2, 3]);\ \ 1.31.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#1242)\ \ #### pub fn [chunks\_exact](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.chunks_exact)\ (&self, chunk\_size: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html)\ ) -> [ChunksExact](https://doc.rust-lang.org/nightly/core/slice/iter/struct.ChunksExact.html "struct core::slice::iter::ChunksExact")\ <'\_, T>\ \ Returns an iterator over `chunk_size` elements of the slice at a time, starting at the beginning of the slice.\ \ The chunks are slices and do not overlap. If `chunk_size` does not divide the length of the slice, then the last up to `chunk_size-1` elements will be omitted and can be retrieved from the `remainder` function of the iterator.\ \ Due to each chunk having exactly `chunk_size` elements, the compiler can often optimize the resulting code better than in the case of [`chunks`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.chunks "method slice::chunks")\ .\ \ See [`chunks`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.chunks "method slice::chunks")\ for a variant of this iterator that also returns the remainder as a smaller chunk, and [`rchunks_exact`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.rchunks_exact "method slice::rchunks_exact")\ for the same iterator but starting at the end of the slice.\ \ If your `chunk_size` is a constant, consider using [`as_chunks`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.as_chunks "method slice::as_chunks")\ instead, which will give references to arrays of exactly that length, rather than slices.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#panics-7)\ Panics\ \ Panics if `chunk_size` is zero.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#examples-36)\ Examples\ \ let slice = ['l', 'o', 'r', 'e', 'm'];\ let mut iter = slice.chunks_exact(2);\ assert_eq!(iter.next().unwrap(), &['l', 'o']);\ assert_eq!(iter.next().unwrap(), &['r', 'e']);\ assert!(iter.next().is_none());\ assert_eq!(iter.remainder(), &['m']);\ \ 1.31.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#1290)\ \ #### pub fn [chunks\_exact\_mut](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.chunks_exact_mut)\ (&mut self, chunk\_size: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html)\ ) -> [ChunksExactMut](https://doc.rust-lang.org/nightly/core/slice/iter/struct.ChunksExactMut.html "struct core::slice::iter::ChunksExactMut")\ <'\_, T>\ \ Returns an iterator over `chunk_size` elements of the slice at a time, starting at the beginning of the slice.\ \ The chunks are mutable slices, and do not overlap. If `chunk_size` does not divide the length of the slice, then the last up to `chunk_size-1` elements will be omitted and can be retrieved from the `into_remainder` function of the iterator.\ \ Due to each chunk having exactly `chunk_size` elements, the compiler can often optimize the resulting code better than in the case of [`chunks_mut`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.chunks_mut "method slice::chunks_mut")\ .\ \ See [`chunks_mut`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.chunks_mut "method slice::chunks_mut")\ for a variant of this iterator that also returns the remainder as a smaller chunk, and [`rchunks_exact_mut`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.rchunks_exact_mut "method slice::rchunks_exact_mut")\ for the same iterator but starting at the end of the slice.\ \ If your `chunk_size` is a constant, consider using [`as_chunks_mut`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.as_chunks_mut "method slice::as_chunks_mut")\ instead, which will give references to arrays of exactly that length, rather than slices.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#panics-8)\ Panics\ \ Panics if `chunk_size` is zero.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#examples-37)\ Examples\ \ let v = &mut [0, 0, 0, 0, 0];\ let mut count = 1;\ \ for chunk in v.chunks_exact_mut(2) {\ for elem in chunk.iter_mut() {\ *elem += count;\ }\ count += 1;\ }\ assert_eq!(v, &[1, 1, 2, 2, 0]);\ \ 1.88.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#1338)\ \ #### pub unsafe fn [as\_chunks\_unchecked](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.as_chunks_unchecked)\ (&self) -> &\[[\[T; N\]](https://doc.rust-lang.org/nightly/std/primitive.array.html)\ \]\ \ Splits the slice into a slice of `N`\-element arrays, assuming that there’s no remainder.\ \ This is the inverse operation to [`as_flattened`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.as_flattened "method slice::as_flattened")\ .\ \ As this is `unsafe`, consider whether you could use [`as_chunks`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.as_chunks "method slice::as_chunks")\ or [`as_rchunks`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.as_rchunks "method slice::as_rchunks")\ instead, perhaps via something like `if let (chunks, []) = slice.as_chunks()` or `let (chunks, []) = slice.as_chunks() else { unreachable!() };`.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#safety-10)\ Safety\ \ This may only be called when\ \ * The slice splits exactly into `N`\-element chunks (aka `self.len() % N == 0`).\ * `N != 0`.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#examples-38)\ Examples\ \ let slice: &[char] = &['l', 'o', 'r', 'e', 'm', '!'];\ let chunks: &[[char; 1]] =\ // SAFETY: 1-element chunks never have remainder\ unsafe { slice.as_chunks_unchecked() };\ assert_eq!(chunks, &[['l'], ['o'], ['r'], ['e'], ['m'], ['!']]);\ let chunks: &[[char; 3]] =\ // SAFETY: The slice length (6) is a multiple of 3\ unsafe { slice.as_chunks_unchecked() };\ assert_eq!(chunks, &[['l', 'o', 'r'], ['e', 'm', '!']]);\ \ // These would be unsound:\ // let chunks: &[[_; 5]] = slice.as_chunks_unchecked() // The slice length is not a multiple of 5\ // let chunks: &[[_; 0]] = slice.as_chunks_unchecked() // Zero-length chunks are never allowed\ \ 1.88.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#1396)\ \ #### pub fn [as\_chunks](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.as_chunks)\ (&self) -> (&\[[\[T; N\]](https://doc.rust-lang.org/nightly/std/primitive.array.html)\ \], &[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ )\ \ Splits the slice into a slice of `N`\-element arrays, starting at the beginning of the slice, and a remainder slice with length strictly less than `N`.\ \ The remainder is meaningful in the division sense. Given `let (chunks, remainder) = slice.as_chunks()`, then:\ \ * `chunks.len()` equals `slice.len() / N`,\ * `remainder.len()` equals `slice.len() % N`, and\ * `slice.len()` equals `chunks.len() * N + remainder.len()`.\ \ You can flatten the chunks back into a slice-of-`T` with [`as_flattened`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.as_flattened "method slice::as_flattened")\ .\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#panics-9)\ Panics\ \ Panics if `N` is zero.\ \ Note that this check is against a const generic parameter, not a runtime value, and thus a particular monomorphization will either always panic or it will never panic.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#examples-39)\ Examples\ \ let slice = ['l', 'o', 'r', 'e', 'm'];\ let (chunks, remainder) = slice.as_chunks();\ assert_eq!(chunks, &[['l', 'o'], ['r', 'e']]);\ assert_eq!(remainder, &['m']);\ \ If you expect the slice to be an exact multiple, you can combine `let`\-`else` with an empty slice pattern:\ \ let slice = ['R', 'u', 's', 't'];\ let (chunks, []) = slice.as_chunks::<2>() else {\ panic!("slice didn't have even length")\ };\ assert_eq!(chunks, &[['R', 'u'], ['s', 't']]);\ \ 1.88.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#1443)\ \ #### pub fn [as\_rchunks](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.as_rchunks)\ (&self) -> (&[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ , &\[[\[T; N\]](https://doc.rust-lang.org/nightly/std/primitive.array.html)\ \])\ \ Splits the slice into a slice of `N`\-element arrays, starting at the end of the slice, and a remainder slice with length strictly less than `N`.\ \ The remainder is meaningful in the division sense. Given `let (remainder, chunks) = slice.as_rchunks()`, then:\ \ * `remainder.len()` equals `slice.len() % N`,\ * `chunks.len()` equals `slice.len() / N`, and\ * `slice.len()` equals `chunks.len() * N + remainder.len()`.\ \ You can flatten the chunks back into a slice-of-`T` with [`as_flattened`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.as_flattened "method slice::as_flattened")\ .\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#panics-10)\ Panics\ \ Panics if `N` is zero.\ \ Note that this check is against a const generic parameter, not a runtime value, and thus a particular monomorphization will either always panic or it will never panic.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#examples-40)\ Examples\ \ let slice = ['l', 'o', 'r', 'e', 'm'];\ let (remainder, chunks) = slice.as_rchunks();\ assert_eq!(remainder, &['l']);\ assert_eq!(chunks, &[['o', 'r'], ['e', 'm']]);\ \ 1.88.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#1498)\ \ #### pub unsafe fn [as\_chunks\_unchecked\_mut](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.as_chunks_unchecked_mut)\ ( &mut self, ) -> &mut \[[\[T; N\]](https://doc.rust-lang.org/nightly/std/primitive.array.html)\ \]\ \ Splits the slice into a slice of `N`\-element arrays, assuming that there’s no remainder.\ \ This is the inverse operation to [`as_flattened_mut`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.as_flattened_mut "method slice::as_flattened_mut")\ .\ \ As this is `unsafe`, consider whether you could use [`as_chunks_mut`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.as_chunks_mut "method slice::as_chunks_mut")\ or [`as_rchunks_mut`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.as_rchunks_mut "method slice::as_rchunks_mut")\ instead, perhaps via something like `if let (chunks, []) = slice.as_chunks_mut()` or `let (chunks, []) = slice.as_chunks_mut() else { unreachable!() };`.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#safety-11)\ Safety\ \ This may only be called when\ \ * The slice splits exactly into `N`\-element chunks (aka `self.len() % N == 0`).\ * `N != 0`.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#examples-41)\ Examples\ \ let slice: &mut [char] = &mut ['l', 'o', 'r', 'e', 'm', '!'];\ let chunks: &mut [[char; 1]] =\ // SAFETY: 1-element chunks never have remainder\ unsafe { slice.as_chunks_unchecked_mut() };\ chunks[0] = ['L'];\ assert_eq!(chunks, &[['L'], ['o'], ['r'], ['e'], ['m'], ['!']]);\ let chunks: &mut [[char; 3]] =\ // SAFETY: The slice length (6) is a multiple of 3\ unsafe { slice.as_chunks_unchecked_mut() };\ chunks[1] = ['a', 'x', '?'];\ assert_eq!(slice, &['L', 'o', 'r', 'a', 'x', '?']);\ \ // These would be unsound:\ // let chunks: &[[_; 5]] = slice.as_chunks_unchecked_mut() // The slice length is not a multiple of 5\ // let chunks: &[[_; 0]] = slice.as_chunks_unchecked_mut() // Zero-length chunks are never allowed\ \ 1.88.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#1552)\ \ #### pub fn [as\_chunks\_mut](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.as_chunks_mut)\ (&mut self) -> (&mut \[[\[T; N\]](https://doc.rust-lang.org/nightly/std/primitive.array.html)\ \], &mut [\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ )\ \ Splits the slice into a slice of `N`\-element arrays, starting at the beginning of the slice, and a remainder slice with length strictly less than `N`.\ \ The remainder is meaningful in the division sense. Given `let (chunks, remainder) = slice.as_chunks_mut()`, then:\ \ * `chunks.len()` equals `slice.len() / N`,\ * `remainder.len()` equals `slice.len() % N`, and\ * `slice.len()` equals `chunks.len() * N + remainder.len()`.\ \ You can flatten the chunks back into a slice-of-`T` with [`as_flattened_mut`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.as_flattened_mut "method slice::as_flattened_mut")\ .\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#panics-11)\ Panics\ \ Panics if `N` is zero.\ \ Note that this check is against a const generic parameter, not a runtime value, and thus a particular monomorphization will either always panic or it will never panic.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#examples-42)\ Examples\ \ let v = &mut [0, 0, 0, 0, 0];\ let mut count = 1;\ \ let (chunks, remainder) = v.as_chunks_mut();\ remainder[0] = 9;\ for chunk in chunks {\ *chunk = [count; 2];\ count += 1;\ }\ assert_eq!(v, &[1, 1, 2, 2, 9]);\ \ 1.88.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#1605)\ \ #### pub fn [as\_rchunks\_mut](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.as_rchunks_mut)\ (&mut self) -> (&mut [\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ , &mut \[[\[T; N\]](https://doc.rust-lang.org/nightly/std/primitive.array.html)\ \])\ \ Splits the slice into a slice of `N`\-element arrays, starting at the end of the slice, and a remainder slice with length strictly less than `N`.\ \ The remainder is meaningful in the division sense. Given `let (remainder, chunks) = slice.as_rchunks_mut()`, then:\ \ * `remainder.len()` equals `slice.len() % N`,\ * `chunks.len()` equals `slice.len() / N`, and\ * `slice.len()` equals `chunks.len() * N + remainder.len()`.\ \ You can flatten the chunks back into a slice-of-`T` with [`as_flattened_mut`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.as_flattened_mut "method slice::as_flattened_mut")\ .\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#panics-12)\ Panics\ \ Panics if `N` is zero.\ \ Note that this check is against a const generic parameter, not a runtime value, and thus a particular monomorphization will either always panic or it will never panic.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#examples-43)\ Examples\ \ let v = &mut [0, 0, 0, 0, 0];\ let mut count = 1;\ \ let (remainder, chunks) = v.as_rchunks_mut();\ remainder[0] = 9;\ for chunk in chunks {\ *chunk = [count; 2];\ count += 1;\ }\ assert_eq!(v, &[9, 1, 1, 2, 2]);\ \ 1.94.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#1646)\ \ #### pub fn [array\_windows](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.array_windows)\ (&self) -> [ArrayWindows](https://doc.rust-lang.org/nightly/core/slice/iter/struct.ArrayWindows.html "struct core::slice::iter::ArrayWindows")\ <'\_, T, N>\ \ Returns an iterator over overlapping windows of `N` elements of a slice, starting at the beginning of the slice.\ \ This is the const generic equivalent of [`windows`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.windows "method slice::windows")\ .\ \ If `N` is greater than the size of the slice, it will return no windows.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#panics-13)\ Panics\ \ Panics if `N` is zero.\ \ Note that this check is against a const generic parameter, not a runtime value, and thus a particular monomorphization will either always panic or it will never panic.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#examples-44)\ Examples\ \ let slice = [0, 1, 2, 3];\ let mut iter = slice.array_windows();\ assert_eq!(iter.next().unwrap(), &[0, 1]);\ assert_eq!(iter.next().unwrap(), &[1, 2]);\ assert_eq!(iter.next().unwrap(), &[2, 3]);\ assert!(iter.next().is_none());\ \ 1.31.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#1686)\ \ #### pub fn [rchunks](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.rchunks)\ (&self, chunk\_size: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html)\ ) -> [RChunks](https://doc.rust-lang.org/nightly/core/slice/iter/struct.RChunks.html "struct core::slice::iter::RChunks")\ <'\_, T>\ \ Returns an iterator over `chunk_size` elements of the slice at a time, starting at the end of the slice.\ \ The chunks are slices and do not overlap. If `chunk_size` does not divide the length of the slice, then the last chunk will not have length `chunk_size`.\ \ See [`rchunks_exact`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.rchunks_exact "method slice::rchunks_exact")\ for a variant of this iterator that returns chunks of always exactly `chunk_size` elements, and [`chunks`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.chunks "method slice::chunks")\ for the same iterator but starting at the beginning of the slice.\ \ If your `chunk_size` is a constant, consider using [`as_rchunks`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.as_rchunks "method slice::as_rchunks")\ instead, which will give references to arrays of exactly that length, rather than slices.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#panics-14)\ Panics\ \ Panics if `chunk_size` is zero.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#examples-45)\ Examples\ \ let slice = ['l', 'o', 'r', 'e', 'm'];\ let mut iter = slice.rchunks(2);\ assert_eq!(iter.next().unwrap(), &['e', 'm']);\ assert_eq!(iter.next().unwrap(), &['o', 'r']);\ assert_eq!(iter.next().unwrap(), &['l']);\ assert!(iter.next().is_none());\ \ 1.31.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#1730)\ \ #### pub fn [rchunks\_mut](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.rchunks_mut)\ (&mut self, chunk\_size: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html)\ ) -> [RChunksMut](https://doc.rust-lang.org/nightly/core/slice/iter/struct.RChunksMut.html "struct core::slice::iter::RChunksMut")\ <'\_, T>\ \ Returns an iterator over `chunk_size` elements of the slice at a time, starting at the end of the slice.\ \ The chunks are mutable slices, and do not overlap. If `chunk_size` does not divide the length of the slice, then the last chunk will not have length `chunk_size`.\ \ See [`rchunks_exact_mut`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.rchunks_exact_mut "method slice::rchunks_exact_mut")\ for a variant of this iterator that returns chunks of always exactly `chunk_size` elements, and [`chunks_mut`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.chunks_mut "method slice::chunks_mut")\ for the same iterator but starting at the beginning of the slice.\ \ If your `chunk_size` is a constant, consider using [`as_rchunks_mut`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.as_rchunks_mut "method slice::as_rchunks_mut")\ instead, which will give references to arrays of exactly that length, rather than slices.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#panics-15)\ Panics\ \ Panics if `chunk_size` is zero.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#examples-46)\ Examples\ \ let v = &mut [0, 0, 0, 0, 0];\ let mut count = 1;\ \ for chunk in v.rchunks_mut(2) {\ for elem in chunk.iter_mut() {\ *elem += count;\ }\ count += 1;\ }\ assert_eq!(v, &[3, 2, 2, 1, 1]);\ \ 1.31.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#1775)\ \ #### pub fn [rchunks\_exact](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.rchunks_exact)\ (&self, chunk\_size: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html)\ ) -> [RChunksExact](https://doc.rust-lang.org/nightly/core/slice/iter/struct.RChunksExact.html "struct core::slice::iter::RChunksExact")\ <'\_, T>\ \ Returns an iterator over `chunk_size` elements of the slice at a time, starting at the end of the slice.\ \ The chunks are slices and do not overlap. If `chunk_size` does not divide the length of the slice, then the last up to `chunk_size-1` elements will be omitted and can be retrieved from the `remainder` function of the iterator.\ \ Due to each chunk having exactly `chunk_size` elements, the compiler can often optimize the resulting code better than in the case of [`rchunks`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.rchunks "method slice::rchunks")\ .\ \ See [`rchunks`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.rchunks "method slice::rchunks")\ for a variant of this iterator that also returns the remainder as a smaller chunk, and [`chunks_exact`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.chunks_exact "method slice::chunks_exact")\ for the same iterator but starting at the beginning of the slice.\ \ If your `chunk_size` is a constant, consider using [`as_rchunks`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.as_rchunks "method slice::as_rchunks")\ instead, which will give references to arrays of exactly that length, rather than slices.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#panics-16)\ Panics\ \ Panics if `chunk_size` is zero.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#examples-47)\ Examples\ \ let slice = ['l', 'o', 'r', 'e', 'm'];\ let mut iter = slice.rchunks_exact(2);\ assert_eq!(iter.next().unwrap(), &['e', 'm']);\ assert_eq!(iter.next().unwrap(), &['o', 'r']);\ assert!(iter.next().is_none());\ assert_eq!(iter.remainder(), &['l']);\ \ 1.31.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#1824)\ \ #### pub fn [rchunks\_exact\_mut](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.rchunks_exact_mut)\ (&mut self, chunk\_size: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html)\ ) -> [RChunksExactMut](https://doc.rust-lang.org/nightly/core/slice/iter/struct.RChunksExactMut.html "struct core::slice::iter::RChunksExactMut")\ <'\_, T>\ \ Returns an iterator over `chunk_size` elements of the slice at a time, starting at the end of the slice.\ \ The chunks are mutable slices, and do not overlap. If `chunk_size` does not divide the length of the slice, then the last up to `chunk_size-1` elements will be omitted and can be retrieved from the `into_remainder` function of the iterator.\ \ Due to each chunk having exactly `chunk_size` elements, the compiler can often optimize the resulting code better than in the case of [`chunks_mut`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.chunks_mut "method slice::chunks_mut")\ .\ \ See [`rchunks_mut`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.rchunks_mut "method slice::rchunks_mut")\ for a variant of this iterator that also returns the remainder as a smaller chunk, and [`chunks_exact_mut`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.chunks_exact_mut "method slice::chunks_exact_mut")\ for the same iterator but starting at the beginning of the slice.\ \ If your `chunk_size` is a constant, consider using [`as_rchunks_mut`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.as_rchunks_mut "method slice::as_rchunks_mut")\ instead, which will give references to arrays of exactly that length, rather than slices.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#panics-17)\ Panics\ \ Panics if `chunk_size` is zero.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#examples-48)\ Examples\ \ let v = &mut [0, 0, 0, 0, 0];\ let mut count = 1;\ \ for chunk in v.rchunks_exact_mut(2) {\ for elem in chunk.iter_mut() {\ *elem += count;\ }\ count += 1;\ }\ assert_eq!(v, &[0, 2, 2, 1, 1]);\ \ 1.77.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#1864-1866)\ \ #### pub fn [chunk\_by](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.chunk_by)\ (&self, pred: F) -> [ChunkBy](https://doc.rust-lang.org/nightly/core/slice/iter/struct.ChunkBy.html "struct core::slice::iter::ChunkBy")\ <'\_, T, F>\ \ where F: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut")\ ([&T](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ , [&T](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ ) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html)\ ,\ \ Returns an iterator over the slice producing non-overlapping runs of elements using the predicate to separate them.\ \ The predicate is called for every pair of consecutive elements, meaning that it is called on `slice[0]` and `slice[1]`, followed by `slice[1]` and `slice[2]`, and so on.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#examples-49)\ Examples\ \ let slice = &[1, 1, 1, 3, 3, 2, 2, 2];\ \ let mut iter = slice.chunk_by(|a, b| a == b);\ \ assert_eq!(iter.next(), Some(&[1, 1, 1][..]));\ assert_eq!(iter.next(), Some(&[3, 3][..]));\ assert_eq!(iter.next(), Some(&[2, 2, 2][..]));\ assert_eq!(iter.next(), None);\ \ This method can be used to extract the sorted subslices:\ \ let slice = &[1, 1, 2, 3, 2, 3, 2, 3, 4];\ \ let mut iter = slice.chunk_by(|a, b| a <= b);\ \ assert_eq!(iter.next(), Some(&[1, 1, 2, 3][..]));\ assert_eq!(iter.next(), Some(&[2, 3][..]));\ assert_eq!(iter.next(), Some(&[2, 3, 4][..]));\ assert_eq!(iter.next(), None);\ \ 1.77.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#1906-1908)\ \ #### pub fn [chunk\_by\_mut](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.chunk_by_mut)\ (&mut self, pred: F) -> [ChunkByMut](https://doc.rust-lang.org/nightly/core/slice/iter/struct.ChunkByMut.html "struct core::slice::iter::ChunkByMut")\ <'\_, T, F>\ \ where F: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut")\ ([&T](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ , [&T](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ ) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html)\ ,\ \ Returns an iterator over the slice producing non-overlapping mutable runs of elements using the predicate to separate them.\ \ The predicate is called for every pair of consecutive elements, meaning that it is called on `slice[0]` and `slice[1]`, followed by `slice[1]` and `slice[2]`, and so on.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#examples-50)\ Examples\ \ let slice = &mut [1, 1, 1, 3, 3, 2, 2, 2];\ \ let mut iter = slice.chunk_by_mut(|a, b| a == b);\ \ assert_eq!(iter.next(), Some(&mut [1, 1, 1][..]));\ assert_eq!(iter.next(), Some(&mut [3, 3][..]));\ assert_eq!(iter.next(), Some(&mut [2, 2, 2][..]));\ assert_eq!(iter.next(), None);\ \ This method can be used to extract the sorted subslices:\ \ let slice = &mut [1, 1, 2, 3, 2, 3, 2, 3, 4];\ \ let mut iter = slice.chunk_by_mut(|a, b| a <= b);\ \ assert_eq!(iter.next(), Some(&mut [1, 1, 2, 3][..]));\ assert_eq!(iter.next(), Some(&mut [2, 3][..]));\ assert_eq!(iter.next(), Some(&mut [2, 3, 4][..]));\ assert_eq!(iter.next(), None);\ \ 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#1952)\ \ #### pub fn [split\_at](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.split_at)\ (&self, mid: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html)\ ) -> (&[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ , &[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ )\ \ Divides one slice into two at an index.\ \ The first will contain all indices from `[0, mid)` (excluding the index `mid` itself) and the second will contain all indices from `[mid, len)` (excluding the index `len` itself).\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#panics-18)\ Panics\ \ Panics if `mid > len`. For a non-panicking alternative see [`split_at_checked`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.split_at_checked "method slice::split_at_checked")\ .\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#examples-51)\ Examples\ \ let v = ['a', 'b', 'c'];\ \ {\ let (left, right) = v.split_at(0);\ assert_eq!(left, []);\ assert_eq!(right, ['a', 'b', 'c']);\ }\ \ {\ let (left, right) = v.split_at(2);\ assert_eq!(left, ['a', 'b']);\ assert_eq!(right, ['c']);\ }\ \ {\ let (left, right) = v.split_at(3);\ assert_eq!(left, ['a', 'b', 'c']);\ assert_eq!(right, []);\ }\ \ 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#1986)\ \ #### pub fn [split\_at\_mut](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.split_at_mut)\ (&mut self, mid: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html)\ ) -> (&mut [\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ , &mut [\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ )\ \ Divides one mutable slice into two at an index.\ \ The first will contain all indices from `[0, mid)` (excluding the index `mid` itself) and the second will contain all indices from `[mid, len)` (excluding the index `len` itself).\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#panics-19)\ Panics\ \ Panics if `mid > len`. For a non-panicking alternative see [`split_at_mut_checked`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.split_at_mut_checked "method slice::split_at_mut_checked")\ .\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#examples-52)\ Examples\ \ let mut v = [1, 0, 3, 0, 5, 6];\ let (left, right) = v.split_at_mut(2);\ assert_eq!(left, [1, 0]);\ assert_eq!(right, [3, 0, 5, 6]);\ left[1] = 2;\ right[1] = 4;\ assert_eq!(v, [1, 2, 3, 4, 5, 6]);\ \ 1.79.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#2038)\ \ #### pub unsafe fn [split\_at\_unchecked](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.split_at_unchecked)\ (&self, mid: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html)\ ) -> (&[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ , &[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ )\ \ Divides one slice into two at an index, without doing bounds checking.\ \ The first will contain all indices from `[0, mid)` (excluding the index `mid` itself) and the second will contain all indices from `[mid, len)` (excluding the index `len` itself).\ \ For a safe alternative see [`split_at`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.split_at "method slice::split_at")\ .\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#safety-12)\ Safety\ \ Calling this method with an out-of-bounds index is _[undefined behavior](https://doc.rust-lang.org/reference/behavior-considered-undefined.html)\ _ even if the resulting reference is not used. The caller has to ensure that `0 <= mid <= self.len()`.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#examples-53)\ Examples\ \ let v = ['a', 'b', 'c'];\ \ unsafe {\ let (left, right) = v.split_at_unchecked(0);\ assert_eq!(left, []);\ assert_eq!(right, ['a', 'b', 'c']);\ }\ \ unsafe {\ let (left, right) = v.split_at_unchecked(2);\ assert_eq!(left, ['a', 'b']);\ assert_eq!(right, ['c']);\ }\ \ unsafe {\ let (left, right) = v.split_at_unchecked(3);\ assert_eq!(left, ['a', 'b', 'c']);\ assert_eq!(right, []);\ }\ \ 1.79.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#2092)\ \ #### pub unsafe fn [split\_at\_mut\_unchecked](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.split_at_mut_unchecked)\ ( &mut self, mid: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html)\ , ) -> (&mut [\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ , &mut [\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ )\ \ Divides one mutable slice into two at an index, without doing bounds checking.\ \ The first will contain all indices from `[0, mid)` (excluding the index `mid` itself) and the second will contain all indices from `[mid, len)` (excluding the index `len` itself).\ \ For a safe alternative see [`split_at_mut`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.split_at_mut "method slice::split_at_mut")\ .\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#safety-13)\ Safety\ \ Calling this method with an out-of-bounds index is _[undefined behavior](https://doc.rust-lang.org/reference/behavior-considered-undefined.html)\ _ even if the resulting reference is not used. The caller has to ensure that `0 <= mid <= self.len()`.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#examples-54)\ Examples\ \ let mut v = [1, 0, 3, 0, 5, 6];\ // scoped to restrict the lifetime of the borrows\ unsafe {\ let (left, right) = v.split_at_mut_unchecked(2);\ assert_eq!(left, [1, 0]);\ assert_eq!(right, [3, 0, 5, 6]);\ left[1] = 2;\ right[1] = 4;\ }\ assert_eq!(v, [1, 2, 3, 4, 5, 6]);\ \ 1.80.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#2153)\ \ #### pub fn [split\_at\_checked](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.split_at_checked)\ (&self, mid: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html)\ ) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option")\ <(&[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ , &[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ )>\ \ Divides one slice into two at an index, returning `None` if the slice is too short.\ \ If `mid ≤ len` returns a pair of slices where the first will contain all indices from `[0, mid)` (excluding the index `mid` itself) and the second will contain all indices from `[mid, len)` (excluding the index `len` itself).\ \ Otherwise, if `mid > len`, returns `None`.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#examples-55)\ Examples\ \ let v = [1, -2, 3, -4, 5, -6];\ \ {\ let (left, right) = v.split_at_checked(0).unwrap();\ assert_eq!(left, []);\ assert_eq!(right, [1, -2, 3, -4, 5, -6]);\ }\ \ {\ let (left, right) = v.split_at_checked(2).unwrap();\ assert_eq!(left, [1, -2]);\ assert_eq!(right, [3, -4, 5, -6]);\ }\ \ {\ let (left, right) = v.split_at_checked(6).unwrap();\ assert_eq!(left, [1, -2, 3, -4, 5, -6]);\ assert_eq!(right, []);\ }\ \ assert_eq!(None, v.split_at_checked(7));\ \ 1.80.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#2192)\ \ #### pub fn [split\_at\_mut\_checked](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.split_at_mut_checked)\ ( &mut self, mid: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html)\ , ) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option")\ <(&mut [\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ , &mut [\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ )>\ \ Divides one mutable slice into two at an index, returning `None` if the slice is too short.\ \ If `mid ≤ len` returns a pair of slices where the first will contain all indices from `[0, mid)` (excluding the index `mid` itself) and the second will contain all indices from `[mid, len)` (excluding the index `len` itself).\ \ Otherwise, if `mid > len`, returns `None`.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#examples-56)\ Examples\ \ let mut v = [1, 0, 3, 0, 5, 6];\ \ if let Some((left, right)) = v.split_at_mut_checked(2) {\ assert_eq!(left, [1, 0]);\ assert_eq!(right, [3, 0, 5, 6]);\ left[1] = 2;\ right[1] = 4;\ }\ assert_eq!(v, [1, 2, 3, 4, 5, 6]);\ \ assert_eq!(None, v.split_at_mut_checked(7));\ \ 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#2244-2246)\ \ #### pub fn [split](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.split)\ (&self, pred: F) -> [Split](https://doc.rust-lang.org/nightly/core/slice/iter/struct.Split.html "struct core::slice::iter::Split")\ <'\_, T, F>\ \ where F: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut")\ ([&T](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ ) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html)\ ,\ \ Returns an iterator over subslices separated by elements that match `pred`. The matched element is not contained in the subslices.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#examples-57)\ Examples\ \ let slice = [10, 40, 33, 20];\ let mut iter = slice.split(|num| num % 3 == 0);\ \ assert_eq!(iter.next().unwrap(), &[10, 40]);\ assert_eq!(iter.next().unwrap(), &[20]);\ assert!(iter.next().is_none());\ \ If the first element is matched, an empty slice will be the first item returned by the iterator. Similarly, if the last element in the slice is matched, an empty slice will be the last item returned by the iterator:\ \ let slice = [10, 40, 33];\ let mut iter = slice.split(|num| num % 3 == 0);\ \ assert_eq!(iter.next().unwrap(), &[10, 40]);\ assert_eq!(iter.next().unwrap(), &[]);\ assert!(iter.next().is_none());\ \ If two matched elements are directly adjacent, an empty slice will be present between them:\ \ let slice = [10, 6, 33, 20];\ let mut iter = slice.split(|num| num % 3 == 0);\ \ assert_eq!(iter.next().unwrap(), &[10]);\ assert_eq!(iter.next().unwrap(), &[]);\ assert_eq!(iter.next().unwrap(), &[20]);\ assert!(iter.next().is_none());\ \ 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#2266-2268)\ \ #### pub fn [split\_mut](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.split_mut)\ (&mut self, pred: F) -> [SplitMut](https://doc.rust-lang.org/nightly/core/slice/iter/struct.SplitMut.html "struct core::slice::iter::SplitMut")\ <'\_, T, F>\ \ where F: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut")\ ([&T](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ ) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html)\ ,\ \ Returns an iterator over mutable subslices separated by elements that match `pred`. The matched element is not contained in the subslices.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#examples-58)\ Examples\ \ let mut v = [10, 40, 30, 20, 60, 50];\ \ for group in v.split_mut(|num| *num % 3 == 0) {\ group[0] = 1;\ }\ assert_eq!(v, [1, 40, 30, 1, 60, 1]);\ \ 1.51.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#2302-2304)\ \ #### pub fn [split\_inclusive](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.split_inclusive)\ (&self, pred: F) -> [SplitInclusive](https://doc.rust-lang.org/nightly/core/slice/iter/struct.SplitInclusive.html "struct core::slice::iter::SplitInclusive")\ <'\_, T, F>\ \ where F: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut")\ ([&T](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ ) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html)\ ,\ \ Returns an iterator over subslices separated by elements that match `pred`. The matched element is contained in the end of the previous subslice as a terminator.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#examples-59)\ Examples\ \ let slice = [10, 40, 33, 20];\ let mut iter = slice.split_inclusive(|num| num % 3 == 0);\ \ assert_eq!(iter.next().unwrap(), &[10, 40, 33]);\ assert_eq!(iter.next().unwrap(), &[20]);\ assert!(iter.next().is_none());\ \ If the last element of the slice is matched, that element will be considered the terminator of the preceding slice. That slice will be the last item returned by the iterator.\ \ let slice = [3, 10, 40, 33];\ let mut iter = slice.split_inclusive(|num| num % 3 == 0);\ \ assert_eq!(iter.next().unwrap(), &[3]);\ assert_eq!(iter.next().unwrap(), &[10, 40, 33]);\ assert!(iter.next().is_none());\ \ 1.51.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#2326-2328)\ \ #### pub fn [split\_inclusive\_mut](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.split_inclusive_mut)\ (&mut self, pred: F) -> [SplitInclusiveMut](https://doc.rust-lang.org/nightly/core/slice/iter/struct.SplitInclusiveMut.html "struct core::slice::iter::SplitInclusiveMut")\ <'\_, T, F>\ \ where F: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut")\ ([&T](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ ) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html)\ ,\ \ Returns an iterator over mutable subslices separated by elements that match `pred`. The matched element is contained in the previous subslice as a terminator.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#examples-60)\ Examples\ \ let mut v = [10, 40, 30, 20, 60, 50];\ \ for group in v.split_inclusive_mut(|num| *num % 3 == 0) {\ let terminator_idx = group.len()-1;\ group[terminator_idx] = 1;\ }\ assert_eq!(v, [10, 40, 1, 20, 1, 1]);\ \ 1.27.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#2362-2364)\ \ #### pub fn [rsplit](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.rsplit)\ (&self, pred: F) -> [RSplit](https://doc.rust-lang.org/nightly/core/slice/iter/struct.RSplit.html "struct core::slice::iter::RSplit")\ <'\_, T, F>\ \ where F: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut")\ ([&T](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ ) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html)\ ,\ \ Returns an iterator over subslices separated by elements that match `pred`, starting at the end of the slice and working backwards. The matched element is not contained in the subslices.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#examples-61)\ Examples\ \ let slice = [11, 22, 33, 0, 44, 55];\ let mut iter = slice.rsplit(|num| *num == 0);\ \ assert_eq!(iter.next().unwrap(), &[44, 55]);\ assert_eq!(iter.next().unwrap(), &[11, 22, 33]);\ assert_eq!(iter.next(), None);\ \ As with `split()`, if the first or last element is matched, an empty slice will be the first (or last) item returned by the iterator.\ \ let v = &[0, 1, 1, 2, 3, 5, 8];\ let mut it = v.rsplit(|n| *n % 2 == 0);\ assert_eq!(it.next().unwrap(), &[]);\ assert_eq!(it.next().unwrap(), &[3, 5]);\ assert_eq!(it.next().unwrap(), &[1, 1]);\ assert_eq!(it.next().unwrap(), &[]);\ assert_eq!(it.next(), None);\ \ 1.27.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#2388-2390)\ \ #### pub fn [rsplit\_mut](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.rsplit_mut)\ (&mut self, pred: F) -> [RSplitMut](https://doc.rust-lang.org/nightly/core/slice/iter/struct.RSplitMut.html "struct core::slice::iter::RSplitMut")\ <'\_, T, F>\ \ where F: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut")\ ([&T](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ ) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html)\ ,\ \ Returns an iterator over mutable subslices separated by elements that match `pred`, starting at the end of the slice and working backwards. The matched element is not contained in the subslices.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#examples-62)\ Examples\ \ let mut v = [100, 400, 300, 200, 600, 500];\ \ let mut count = 0;\ for group in v.rsplit_mut(|num| *num % 3 == 0) {\ count += 1;\ group[0] = count;\ }\ assert_eq!(v, [3, 400, 300, 2, 600, 1]);\ \ 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#2416-2418)\ \ #### pub fn [splitn](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.splitn)\ (&self, n: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html)\ , pred: F) -> [SplitN](https://doc.rust-lang.org/nightly/core/slice/iter/struct.SplitN.html "struct core::slice::iter::SplitN")\ <'\_, T, F>\ \ where F: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut")\ ([&T](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ ) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html)\ ,\ \ Returns an iterator over subslices separated by elements that match `pred`, limited to returning at most `n` items. The matched element is not contained in the subslices.\ \ The last element returned, if any, will contain the remainder of the slice.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#examples-63)\ Examples\ \ Print the slice split once by numbers divisible by 3 (i.e., `[10, 40]`, `[20, 60, 50]`):\ \ let v = [10, 40, 30, 20, 60, 50];\ \ for group in v.splitn(2, |num| *num % 3 == 0) {\ println!("{group:?}");\ }\ \ 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#2442-2444)\ \ #### pub fn [splitn\_mut](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.splitn_mut)\ (&mut self, n: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html)\ , pred: F) -> [SplitNMut](https://doc.rust-lang.org/nightly/core/slice/iter/struct.SplitNMut.html "struct core::slice::iter::SplitNMut")\ <'\_, T, F>\ \ where F: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut")\ ([&T](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ ) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html)\ ,\ \ Returns an iterator over mutable subslices separated by elements that match `pred`, limited to returning at most `n` items. The matched element is not contained in the subslices.\ \ The last element returned, if any, will contain the remainder of the slice.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#examples-64)\ Examples\ \ let mut v = [10, 40, 30, 20, 60, 50];\ \ for group in v.splitn_mut(2, |num| *num % 3 == 0) {\ group[0] = 1;\ }\ assert_eq!(v, [1, 40, 30, 1, 60, 50]);\ \ 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#2471-2473)\ \ #### pub fn [rsplitn](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.rsplitn)\ (&self, n: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html)\ , pred: F) -> [RSplitN](https://doc.rust-lang.org/nightly/core/slice/iter/struct.RSplitN.html "struct core::slice::iter::RSplitN")\ <'\_, T, F>\ \ where F: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut")\ ([&T](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ ) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html)\ ,\ \ Returns an iterator over subslices separated by elements that match `pred` limited to returning at most `n` items. This starts at the end of the slice and works backwards. The matched element is not contained in the subslices.\ \ The last element returned, if any, will contain the remainder of the slice.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#examples-65)\ Examples\ \ Print the slice split once, starting from the end, by numbers divisible by 3 (i.e., `[50]`, `[10, 40, 30, 20]`):\ \ let v = [10, 40, 30, 20, 60, 50];\ \ for group in v.rsplitn(2, |num| *num % 3 == 0) {\ println!("{group:?}");\ }\ \ 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#2498-2500)\ \ #### pub fn [rsplitn\_mut](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.rsplitn_mut)\ (&mut self, n: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html)\ , pred: F) -> [RSplitNMut](https://doc.rust-lang.org/nightly/core/slice/iter/struct.RSplitNMut.html "struct core::slice::iter::RSplitNMut")\ <'\_, T, F>\ \ where F: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut")\ ([&T](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ ) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html)\ ,\ \ Returns an iterator over subslices separated by elements that match `pred` limited to returning at most `n` items. This starts at the end of the slice and works backwards. The matched element is not contained in the subslices.\ \ The last element returned, if any, will contain the remainder of the slice.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#examples-66)\ Examples\ \ let mut s = [10, 40, 30, 20, 60, 50];\ \ for group in s.rsplitn_mut(2, |num| *num % 3 == 0) {\ group[0] = 1;\ }\ assert_eq!(s, [1, 40, 30, 20, 60, 1]);\ \ [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#2525-2527)\ \ #### pub fn [split\_once](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.split_once)\ (&self, pred: F) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option")\ <(&[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ , &[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ )>\ \ where F: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut")\ ([&T](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ ) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html)\ ,\ \ 🔬This is a nightly-only experimental API. (`slice_split_once`)\ \ Splits the slice on the first element that matches the specified predicate.\ \ If any matching elements are present in the slice, returns the prefix before the match and suffix after. The matching element itself is not included. If no elements match, returns `None`.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#examples-67)\ Examples\ \ #![feature(slice_split_once)]\ let s = [1, 2, 3, 2, 4];\ assert_eq!(s.split_once(|&x| x == 2), Some((\ &[1][..],\ &[3, 2, 4][..]\ )));\ assert_eq!(s.split_once(|&x| x == 0), None);\ \ [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#2553-2555)\ \ #### pub fn [rsplit\_once](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.rsplit_once)\ (&self, pred: F) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option")\ <(&[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ , &[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ )>\ \ where F: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut")\ ([&T](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ ) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html)\ ,\ \ 🔬This is a nightly-only experimental API. (`slice_split_once`)\ \ Splits the slice on the last element that matches the specified predicate.\ \ If any matching elements are present in the slice, returns the prefix before the match and suffix after. The matching element itself is not included. If no elements match, returns `None`.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#examples-68)\ Examples\ \ #![feature(slice_split_once)]\ let s = [1, 2, 3, 2, 4];\ assert_eq!(s.rsplit_once(|&x| x == 2), Some((\ &[1, 2, 3][..],\ &[4][..]\ )));\ assert_eq!(s.rsplit_once(|&x| x == 0), None);\ \ 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#2589-2591)\ \ #### pub fn [contains](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.contains)\ (&self, x: [&T](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ ) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html)\ \ where T: [PartialEq](https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html "trait core::cmp::PartialEq")\ ,\ \ Returns `true` if the slice contains an element with the given value.\ \ This operation is _O_(_n_).\ \ Note that if you have a sorted slice, [`binary_search`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.binary_search "method slice::binary_search")\ may be faster.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#examples-69)\ Examples\ \ let v = [10, 40, 30];\ assert!(v.contains(&30));\ assert!(!v.contains(&50));\ \ If you do not have a `&T`, but some other value that you can compare with one (for example, `String` implements `PartialEq`), you can use `iter().any`:\ \ let v = [String::from("hello"), String::from("world")]; // slice of `String`\ assert!(v.iter().any(|e| e == "hello")); // search with `&str`\ assert!(!v.iter().any(|e| e == "hi"));\ \ 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#2619-2621)\ \ #### pub fn [starts\_with](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.starts_with)\ (&self, needle: &[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ ) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html)\ \ where T: [PartialEq](https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html "trait core::cmp::PartialEq")\ ,\ \ Returns `true` if `needle` is a prefix of the slice or equal to the slice.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#examples-70)\ Examples\ \ let v = [10, 40, 30];\ assert!(v.starts_with(&[10]));\ assert!(v.starts_with(&[10, 40]));\ assert!(v.starts_with(&v));\ assert!(!v.starts_with(&[50]));\ assert!(!v.starts_with(&[10, 50]));\ \ Always returns `true` if `needle` is an empty slice:\ \ let v = &[10, 40, 30];\ assert!(v.starts_with(&[]));\ let v: &[u8] = &[];\ assert!(v.starts_with(&[]));\ \ 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#2650-2652)\ \ #### pub fn [ends\_with](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.ends_with)\ (&self, needle: &[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ ) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html)\ \ where T: [PartialEq](https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html "trait core::cmp::PartialEq")\ ,\ \ Returns `true` if `needle` is a suffix of the slice or equal to the slice.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#examples-71)\ Examples\ \ let v = [10, 40, 30];\ assert!(v.ends_with(&[30]));\ assert!(v.ends_with(&[40, 30]));\ assert!(v.ends_with(&v));\ assert!(!v.ends_with(&[50]));\ assert!(!v.ends_with(&[50, 30]));\ \ Always returns `true` if `needle` is an empty slice:\ \ let v = &[10, 40, 30];\ assert!(v.ends_with(&[]));\ let v: &[u8] = &[];\ assert!(v.ends_with(&[]));\ \ 1.51.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#2682-2684)\ \ #### pub fn [strip\_prefix](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.strip_prefix)\

(&self, prefix: [&P](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ ) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option")\ <&[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ \>\ \ where P: [SlicePattern](https://doc.rust-lang.org/nightly/core/slice/trait.SlicePattern.html "trait core::slice::SlicePattern")\ + ?[Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized")\ , T: [PartialEq](https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html "trait core::cmp::PartialEq")\ ,\ \ Returns a subslice with the prefix removed.\ \ If the slice starts with `prefix`, returns the subslice after the prefix, wrapped in `Some`. If `prefix` is empty, simply returns the original slice. If `prefix` is equal to the original slice, returns an empty slice.\ \ If the slice does not start with `prefix`, returns `None`.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#examples-72)\ Examples\ \ let v = &[10, 40, 30];\ assert_eq!(v.strip_prefix(&[10]), Some(&[40, 30][..]));\ assert_eq!(v.strip_prefix(&[10, 40]), Some(&[30][..]));\ assert_eq!(v.strip_prefix(&[10, 40, 30]), Some(&[][..]));\ assert_eq!(v.strip_prefix(&[50]), None);\ assert_eq!(v.strip_prefix(&[10, 50]), None);\ \ let prefix : &str = "he";\ assert_eq!(b"hello".strip_prefix(prefix.as_bytes()),\ Some(b"llo".as_ref()));\ \ 1.51.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#2718-2720)\ \ #### pub fn [strip\_suffix](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.strip_suffix)\

(&self, suffix: [&P](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ ) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option")\ <&[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ \>\ \ where P: [SlicePattern](https://doc.rust-lang.org/nightly/core/slice/trait.SlicePattern.html "trait core::slice::SlicePattern")\ + ?[Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized")\ , T: [PartialEq](https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html "trait core::cmp::PartialEq")\ ,\ \ Returns a subslice with the suffix removed.\ \ If the slice ends with `suffix`, returns the subslice before the suffix, wrapped in `Some`. If `suffix` is empty, simply returns the original slice. If `suffix` is equal to the original slice, returns an empty slice.\ \ If the slice does not end with `suffix`, returns `None`.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#examples-73)\ Examples\ \ let v = &[10, 40, 30];\ assert_eq!(v.strip_suffix(&[30]), Some(&[10, 40][..]));\ assert_eq!(v.strip_suffix(&[40, 30]), Some(&[10][..]));\ assert_eq!(v.strip_suffix(&[10, 40, 30]), Some(&[][..]));\ assert_eq!(v.strip_suffix(&[50]), None);\ assert_eq!(v.strip_suffix(&[50, 30]), None);\ \ [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#2757-2761)\ \ #### pub fn [strip\_circumfix](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.strip_circumfix)\ (&self, prefix: [&P](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ , suffix: [&S](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ ) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option")\ <&[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ \>\ \ where T: [PartialEq](https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html "trait core::cmp::PartialEq")\ , S: [SlicePattern](https://doc.rust-lang.org/nightly/core/slice/trait.SlicePattern.html "trait core::slice::SlicePattern")\ + ?[Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized")\ , P: [SlicePattern](https://doc.rust-lang.org/nightly/core/slice/trait.SlicePattern.html "trait core::slice::SlicePattern")\ + ?[Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized")\ ,\ \ 🔬This is a nightly-only experimental API. (`strip_circumfix`)\ \ Returns a subslice with the prefix and suffix removed.\ \ If the slice starts with `prefix` and ends with `suffix`, returns the subslice after the prefix and before the suffix, wrapped in `Some`.\ \ If the slice does not start with `prefix` or does not end with `suffix`, returns `None`.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#examples-74)\ Examples\ \ #![feature(strip_circumfix)]\ \ let v = &[10, 50, 40, 30];\ assert_eq!(v.strip_circumfix(&[10], &[30]), Some(&[50, 40][..]));\ assert_eq!(v.strip_circumfix(&[10], &[40, 30]), Some(&[50][..]));\ assert_eq!(v.strip_circumfix(&[10, 50], &[40, 30]), Some(&[][..]));\ assert_eq!(v.strip_circumfix(&[50], &[30]), None);\ assert_eq!(v.strip_circumfix(&[10], &[40]), None);\ assert_eq!(v.strip_circumfix(&[], &[40, 30]), Some(&[10, 50][..]));\ assert_eq!(v.strip_circumfix(&[10, 50], &[]), Some(&[40, 30][..]));\ \ [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#2793-2795)\ \ #### pub fn [trim\_prefix](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.trim_prefix)\

(&self, prefix: [&P](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ ) -> &[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ \ where P: [SlicePattern](https://doc.rust-lang.org/nightly/core/slice/trait.SlicePattern.html "trait core::slice::SlicePattern")\ + ?[Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized")\ , T: [PartialEq](https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html "trait core::cmp::PartialEq")\ ,\ \ 🔬This is a nightly-only experimental API. (`trim_prefix_suffix`)\ \ Returns a subslice with the optional prefix removed.\ \ If the slice starts with `prefix`, returns the subslice after the prefix. If `prefix` is empty or the slice does not start with `prefix`, simply returns the original slice. If `prefix` is equal to the original slice, returns an empty slice.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#examples-75)\ Examples\ \ #![feature(trim_prefix_suffix)]\ \ let v = &[10, 40, 30];\ \ // Prefix present - removes it\ assert_eq!(v.trim_prefix(&[10]), &[40, 30][..]);\ assert_eq!(v.trim_prefix(&[10, 40]), &[30][..]);\ assert_eq!(v.trim_prefix(&[10, 40, 30]), &[][..]);\ \ // Prefix absent - returns original slice\ assert_eq!(v.trim_prefix(&[50]), &[10, 40, 30][..]);\ assert_eq!(v.trim_prefix(&[10, 50]), &[10, 40, 30][..]);\ \ let prefix : &str = "he";\ assert_eq!(b"hello".trim_prefix(prefix.as_bytes()), b"llo".as_ref());\ \ [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#2833-2835)\ \ #### pub fn [trim\_suffix](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.trim_suffix)\

(&self, suffix: [&P](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ ) -> &[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ \ where P: [SlicePattern](https://doc.rust-lang.org/nightly/core/slice/trait.SlicePattern.html "trait core::slice::SlicePattern")\ + ?[Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized")\ , T: [PartialEq](https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html "trait core::cmp::PartialEq")\ ,\ \ 🔬This is a nightly-only experimental API. (`trim_prefix_suffix`)\ \ Returns a subslice with the optional suffix removed.\ \ If the slice ends with `suffix`, returns the subslice before the suffix. If `suffix` is empty or the slice does not end with `suffix`, simply returns the original slice. If `suffix` is equal to the original slice, returns an empty slice.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#examples-76)\ Examples\ \ #![feature(trim_prefix_suffix)]\ \ let v = &[10, 40, 30];\ \ // Suffix present - removes it\ assert_eq!(v.trim_suffix(&[30]), &[10, 40][..]);\ assert_eq!(v.trim_suffix(&[40, 30]), &[10][..]);\ assert_eq!(v.trim_suffix(&[10, 40, 30]), &[][..]);\ \ // Suffix absent - returns original slice\ assert_eq!(v.trim_suffix(&[50]), &[10, 40, 30][..]);\ assert_eq!(v.trim_suffix(&[50, 30]), &[10, 40, 30][..]);\ \ 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#2919-2921)\ \ #### pub fn [binary\_search](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.binary_search)\ (&self, x: [&T](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ ) -> [Result](https://doc.rust-lang.org/nightly/core/result/enum.Result.html "enum core::result::Result")\ <[usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html)\ , [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html)\ \>\ \ where T: [Ord](https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html "trait core::cmp::Ord")\ ,\ \ Binary searches this slice for a given element. If the slice is not sorted, the returned result is unspecified and meaningless.\ \ If the value is found then [`Result::Ok`](https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Ok "variant core::result::Result::Ok")\ is returned, containing the index of the matching element. If there are multiple matches, then any one of the matches could be returned. The index is chosen deterministically, but is subject to change in future versions of Rust. If the value is not found then [`Result::Err`](https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Err "variant core::result::Result::Err")\ is returned, containing the index where a matching element could be inserted while maintaining sorted order.\ \ See also [`binary_search_by`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.binary_search_by "method slice::binary_search_by")\ , [`binary_search_by_key`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.binary_search_by_key "method slice::binary_search_by_key")\ , and [`partition_point`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.partition_point "method slice::partition_point")\ .\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#examples-77)\ Examples\ \ Looks up a series of four elements. The first is found, with a uniquely determined position; the second and third are not found; the fourth could match any position in `[1, 4]`.\ \ let s = [0, 1, 1, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55];\ \ assert_eq!(s.binary_search(&13), Ok(9));\ assert_eq!(s.binary_search(&4), Err(7));\ assert_eq!(s.binary_search(&100), Err(13));\ let r = s.binary_search(&1);\ assert!(match r { Ok(1..=4) => true, _ => false, });\ \ If you want to find that whole _range_ of matching items, rather than an arbitrary matching one, that can be done using [`partition_point`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.partition_point "method slice::partition_point")\ :\ \ let s = [0, 1, 1, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55];\ \ let low = s.partition_point(|x| x < &1);\ assert_eq!(low, 1);\ let high = s.partition_point(|x| x <= &1);\ assert_eq!(high, 5);\ let r = s.binary_search(&1);\ assert!((low..high).contains(&r.unwrap()));\ \ assert!(s[..low].iter().all(|&x| x < 1));\ assert!(s[low..high].iter().all(|&x| x == 1));\ assert!(s[high..].iter().all(|&x| x > 1));\ \ // For something not found, the "range" of equal items is empty\ assert_eq!(s.partition_point(|x| x < &11), 9);\ assert_eq!(s.partition_point(|x| x <= &11), 9);\ assert_eq!(s.binary_search(&11), Err(9));\ \ If you want to insert an item to a sorted vector, while maintaining sort order, consider using [`partition_point`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.partition_point "method slice::partition_point")\ :\ \ let mut s = vec![0, 1, 1, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55];\ let num = 42;\ let idx = s.partition_point(|&x| x <= num);\ // If `num` is unique, `s.partition_point(|&x| x < num)` (with `<`) is equivalent to\ // `s.binary_search(&num).unwrap_or_else(|x| x)`, but using `<=` will allow `insert`\ // to shift less elements.\ s.insert(idx, num);\ assert_eq!(s, [0, 1, 1, 1, 1, 2, 3, 5, 8, 13, 21, 34, 42, 55]);\ \ 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#2970-2972)\ \ #### pub fn [binary\_search\_by](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.binary_search_by)\ <'a, F>(&'a self, f: F) -> [Result](https://doc.rust-lang.org/nightly/core/result/enum.Result.html "enum core::result::Result")\ <[usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html)\ , [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html)\ \>\ \ where F: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut")\ ([&'a T](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ ) -> [Ordering](https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html "enum core::cmp::Ordering")\ ,\ \ Binary searches this slice with a comparator function.\ \ The comparator function should return an order code that indicates whether its argument is `Less`, `Equal` or `Greater` the desired target. If the slice is not sorted or if the comparator function does not implement an order consistent with the sort order of the underlying slice, the returned result is unspecified and meaningless.\ \ If the value is found then [`Result::Ok`](https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Ok "variant core::result::Result::Ok")\ is returned, containing the index of the matching element. If there are multiple matches, then any one of the matches could be returned. The index is chosen deterministically, but is subject to change in future versions of Rust. If the value is not found then [`Result::Err`](https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Err "variant core::result::Result::Err")\ is returned, containing the index where a matching element could be inserted while maintaining sorted order.\ \ See also [`binary_search`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.binary_search "method slice::binary_search")\ , [`binary_search_by_key`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.binary_search_by_key "method slice::binary_search_by_key")\ , and [`partition_point`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.partition_point "method slice::partition_point")\ .\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#examples-78)\ Examples\ \ Looks up a series of four elements. The first is found, with a uniquely determined position; the second and third are not found; the fourth could match any position in `[1, 4]`.\ \ let s = [0, 1, 1, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55];\ \ let seek = 13;\ assert_eq!(s.binary_search_by(|probe| probe.cmp(&seek)), Ok(9));\ let seek = 4;\ assert_eq!(s.binary_search_by(|probe| probe.cmp(&seek)), Err(7));\ let seek = 100;\ assert_eq!(s.binary_search_by(|probe| probe.cmp(&seek)), Err(13));\ let seek = 1;\ let r = s.binary_search_by(|probe| probe.cmp(&seek));\ assert!(match r { Ok(1..=4) => true, _ => false, });\ \ 1.10.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#3071-3074)\ \ #### pub fn [binary\_search\_by\_key](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.binary_search_by_key)\ <'a, B, F>( &'a self, b: [&B](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ , f: F, ) -> [Result](https://doc.rust-lang.org/nightly/core/result/enum.Result.html "enum core::result::Result")\ <[usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html)\ , [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html)\ \>\ \ where F: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut")\ ([&'a T](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ ) -> B, B: [Ord](https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html "trait core::cmp::Ord")\ ,\ \ Binary searches this slice with a key extraction function.\ \ Assumes that the slice is sorted by the key, for instance with [`sort_by_key`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.sort_by_key "method slice::sort_by_key")\ using the same key extraction function. If the slice is not sorted by the key, the returned result is unspecified and meaningless.\ \ If the value is found then [`Result::Ok`](https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Ok "variant core::result::Result::Ok")\ is returned, containing the index of the matching element. If there are multiple matches, then any one of the matches could be returned. The index is chosen deterministically, but is subject to change in future versions of Rust. If the value is not found then [`Result::Err`](https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Err "variant core::result::Result::Err")\ is returned, containing the index where a matching element could be inserted while maintaining sorted order.\ \ See also [`binary_search`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.binary_search "method slice::binary_search")\ , [`binary_search_by`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.binary_search_by "method slice::binary_search_by")\ , and [`partition_point`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.partition_point "method slice::partition_point")\ .\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#examples-79)\ Examples\ \ Looks up a series of four elements in a slice of pairs sorted by their second elements. The first is found, with a uniquely determined position; the second and third are not found; the fourth could match any position in `[1, 4]`.\ \ let s = [(0, 0), (2, 1), (4, 1), (5, 1), (3, 1),\ (1, 2), (2, 3), (4, 5), (5, 8), (3, 13),\ (1, 21), (2, 34), (4, 55)];\ \ assert_eq!(s.binary_search_by_key(&13, |&(a, b)| b), Ok(9));\ assert_eq!(s.binary_search_by_key(&4, |&(a, b)| b), Err(7));\ assert_eq!(s.binary_search_by_key(&100, |&(a, b)| b), Err(13));\ let r = s.binary_search_by_key(&1, |&(a, b)| b);\ assert!(match r { Ok(1..=4) => true, _ => false, });\ \ 1.20.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#3133-3135)\ \ #### pub fn [sort\_unstable](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.sort_unstable)\ (&mut self)\ \ where T: [Ord](https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html "trait core::cmp::Ord")\ ,\ \ Sorts the slice in ascending order **without** preserving the initial order of equal elements.\ \ This sort is unstable (i.e., may reorder equal elements), in-place (i.e., does not allocate), and _O_(_n_ \* log(_n_)) worst-case.\ \ If the implementation of [`Ord`](https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html "trait core::cmp::Ord")\ for `T` does not implement a [total order](https://en.wikipedia.org/wiki/Total_order)\ , the function may panic; even if the function exits normally, the resulting order of elements in the slice is unspecified. See also the note on panicking below.\ \ For example `|a, b| (a - b).cmp(a)` is a comparison function that is neither transitive nor reflexive nor total, `a < b < c < a` with `a = 1, b = 2, c = 3`. For more information and examples see the [`Ord`](https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html "trait core::cmp::Ord")\ documentation.\ \ All original elements will remain in the slice and any possible modifications via interior mutability are observed in the input. Same is true if the implementation of [`Ord`](https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html "trait core::cmp::Ord")\ for `T` panics.\ \ Sorting types that only implement [`PartialOrd`](https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html "trait core::cmp::PartialOrd")\ such as [`f32`](https://doc.rust-lang.org/nightly/std/primitive.f32.html "primitive f32")\ and [`f64`](https://doc.rust-lang.org/nightly/std/primitive.f64.html "primitive f64")\ require additional precautions. For example, `f32::NAN != f32::NAN`, which doesn’t fulfill the reflexivity requirement of [`Ord`](https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html "trait core::cmp::Ord")\ . By using an alternative comparison function with `slice::sort_unstable_by` such as [`f32::total_cmp`](https://doc.rust-lang.org/nightly/std/primitive.f32.html#method.total_cmp "method f32::total_cmp")\ or [`f64::total_cmp`](https://doc.rust-lang.org/nightly/std/primitive.f64.html#method.total_cmp "method f64::total_cmp")\ that defines a [total order](https://en.wikipedia.org/wiki/Total_order)\ users can sort slices containing floating-point values. Alternatively, if all values in the slice are guaranteed to be in a subset for which [`PartialOrd::partial_cmp`](https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#tymethod.partial_cmp "method core::cmp::PartialOrd::partial_cmp")\ forms a [total order](https://en.wikipedia.org/wiki/Total_order)\ , it’s possible to sort the slice with `sort_unstable_by(|a, b| a.partial_cmp(b).unwrap())`.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#current-implementation)\ Current implementation\ \ The current implementation is based on [ipnsort](https://github.com/Voultapher/sort-research-rs/tree/main/ipnsort)\ by Lukas Bergdoll and Orson Peters, which combines the fast average case of quicksort with the fast worst case of heapsort, achieving linear time on fully sorted and reversed inputs. On inputs with k distinct elements, the expected time to sort the data is _O_(_n_ \* log(_k_)).\ \ It is typically faster than stable sorting, except in a few special cases, e.g., when the slice is partially sorted.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#panics-20)\ Panics\ \ May panic if the implementation of [`Ord`](https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html "trait core::cmp::Ord")\ for `T` does not implement a [total order](https://en.wikipedia.org/wiki/Total_order)\ , or if the [`Ord`](https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html "trait core::cmp::Ord")\ implementation panics.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#examples-80)\ Examples\ \ let mut v = [4, -5, 1, -3, 2];\ \ v.sort_unstable();\ assert_eq!(v, [-5, -3, 1, 2, 4]);\ \ 1.20.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#3188-3190)\ \ #### pub fn [sort\_unstable\_by](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.sort_unstable_by)\ (&mut self, compare: F)\ \ where F: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut")\ ([&T](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ , [&T](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ ) -> [Ordering](https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html "enum core::cmp::Ordering")\ ,\ \ Sorts the slice in ascending order with a comparison function, **without** preserving the initial order of equal elements.\ \ This sort is unstable (i.e., may reorder equal elements), in-place (i.e., does not allocate), and _O_(_n_ \* log(_n_)) worst-case.\ \ If the comparison function `compare` does not implement a [total order](https://en.wikipedia.org/wiki/Total_order)\ , the function may panic; even if the function exits normally, the resulting order of elements in the slice is unspecified. See also the note on panicking below.\ \ For example `|a, b| (a - b).cmp(a)` is a comparison function that is neither transitive nor reflexive nor total, `a < b < c < a` with `a = 1, b = 2, c = 3`. For more information and examples see the [`Ord`](https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html "trait core::cmp::Ord")\ documentation.\ \ All original elements will remain in the slice and any possible modifications via interior mutability are observed in the input. Same is true if `compare` panics.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#current-implementation-1)\ Current implementation\ \ The current implementation is based on [ipnsort](https://github.com/Voultapher/sort-research-rs/tree/main/ipnsort)\ by Lukas Bergdoll and Orson Peters, which combines the fast average case of quicksort with the fast worst case of heapsort, achieving linear time on fully sorted and reversed inputs. On inputs with k distinct elements, the expected time to sort the data is _O_(_n_ \* log(_k_)).\ \ It is typically faster than stable sorting, except in a few special cases, e.g., when the slice is partially sorted.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#panics-21)\ Panics\ \ May panic if the `compare` does not implement a [total order](https://en.wikipedia.org/wiki/Total_order)\ , or if the `compare` itself panics.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#examples-81)\ Examples\ \ let mut v = [4, -5, 1, -3, 2];\ v.sort_unstable_by(|a, b| a.cmp(b));\ assert_eq!(v, [-5, -3, 1, 2, 4]);\ \ // reverse sorting\ v.sort_unstable_by(|a, b| b.cmp(a));\ assert_eq!(v, [4, 2, 1, -3, -5]);\ \ 1.20.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#3240-3243)\ \ #### pub fn [sort\_unstable\_by\_key](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.sort_unstable_by_key)\ (&mut self, f: F)\ \ where F: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut")\ ([&T](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ ) -> K, K: [Ord](https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html "trait core::cmp::Ord")\ ,\ \ Sorts the slice in ascending order with a key extraction function, **without** preserving the initial order of equal elements.\ \ This sort is unstable (i.e., may reorder equal elements), in-place (i.e., does not allocate), and _O_(_n_ \* log(_n_)) worst-case.\ \ If the implementation of [`Ord`](https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html "trait core::cmp::Ord")\ for `K` does not implement a [total order](https://en.wikipedia.org/wiki/Total_order)\ , the function may panic; even if the function exits normally, the resulting order of elements in the slice is unspecified. See also the note on panicking below.\ \ For example `|a, b| (a - b).cmp(a)` is a comparison function that is neither transitive nor reflexive nor total, `a < b < c < a` with `a = 1, b = 2, c = 3`. For more information and examples see the [`Ord`](https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html "trait core::cmp::Ord")\ documentation.\ \ All original elements will remain in the slice and any possible modifications via interior mutability are observed in the input. Same is true if the implementation of [`Ord`](https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html "trait core::cmp::Ord")\ for `K` panics.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#current-implementation-2)\ Current implementation\ \ The current implementation is based on [ipnsort](https://github.com/Voultapher/sort-research-rs/tree/main/ipnsort)\ by Lukas Bergdoll and Orson Peters, which combines the fast average case of quicksort with the fast worst case of heapsort, achieving linear time on fully sorted and reversed inputs. On inputs with k distinct elements, the expected time to sort the data is _O_(_n_ \* log(_k_)).\ \ It is typically faster than stable sorting, except in a few special cases, e.g., when the slice is partially sorted.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#panics-22)\ Panics\ \ May panic if the implementation of [`Ord`](https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html "trait core::cmp::Ord")\ for `K` does not implement a [total order](https://en.wikipedia.org/wiki/Total_order)\ , or if the [`Ord`](https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html "trait core::cmp::Ord")\ implementation panics.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#examples-82)\ Examples\ \ let mut v = [4i32, -5, 1, -3, 2];\ \ v.sort_unstable_by_key(|k| k.abs());\ assert_eq!(v, [1, 2, -3, 4, -5]);\ \ [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#3310-3313)\ \ #### pub fn [partial\_sort\_unstable](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.partial_sort_unstable)\ (&mut self, range: R)\ \ where T: [Ord](https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html "trait core::cmp::Ord")\ , R: [RangeBounds](https://doc.rust-lang.org/nightly/core/ops/range/trait.RangeBounds.html "trait core::ops::range::RangeBounds")\ <[usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html)\ \>,\ \ 🔬This is a nightly-only experimental API. (`slice_partial_sort_unstable`)\ \ Partially sorts the slice in ascending order **without** preserving the initial order of equal elements.\ \ Upon completion, for the specified range `start..end`, it’s guaranteed that:\ \ 1. Every element in `self[..start]` is smaller than or equal to\ 2. Every element in `self[start..end]`, which is sorted, and smaller than or equal to\ 3. Every element in `self[end..]`.\ \ This partial sort is unstable, meaning it may reorder equal elements in the specified range. It may reorder elements outside the specified range as well, but the guarantees above still hold.\ \ This partial sort is in-place (i.e., does not allocate), and _O_(_n_ + _k_ \* log(_k_)) worst-case, where _n_ is the length of the slice and _k_ is the length of the specified range.\ \ See the documentation of [`sort_unstable`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.sort_unstable "method slice::sort_unstable")\ for implementation notes.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#panics-23)\ Panics\ \ May panic if the implementation of [`Ord`](https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html "trait core::cmp::Ord")\ for `T` does not implement a total order, or if the [`Ord`](https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html "trait core::cmp::Ord")\ implementation panics, or if the specified range is out of bounds.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#examples-83)\ Examples\ \ #![feature(slice_partial_sort_unstable)]\ \ let mut v = [4, -5, 1, -3, 2];\ \ // empty range at the beginning, nothing changed\ v.partial_sort_unstable(0..0);\ assert_eq!(v, [4, -5, 1, -3, 2]);\ \ // empty range in the middle, partitioning the slice\ v.partial_sort_unstable(2..2);\ for i in 0..2 {\ assert!(v[i] <= v[2]);\ }\ for i in 3..v.len() {\ assert!(v[2] <= v[i]);\ }\ \ // single element range, same as select_nth_unstable\ v.partial_sort_unstable(2..3);\ for i in 0..2 {\ assert!(v[i] <= v[2]);\ }\ for i in 3..v.len() {\ assert!(v[2] <= v[i]);\ }\ \ // partial sort a subrange\ v.partial_sort_unstable(1..4);\ assert_eq!(&v[1..4], [-3, 1, 2]);\ \ // partial sort the whole range, same as sort_unstable\ v.partial_sort_unstable(..);\ assert_eq!(v, [-5, -3, 1, 2, 4]);\ \ [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#3381-3384)\ \ #### pub fn [partial\_sort\_unstable\_by](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.partial_sort_unstable_by)\ (&mut self, range: R, compare: F)\ \ where F: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut")\ ([&T](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ , [&T](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ ) -> [Ordering](https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html "enum core::cmp::Ordering")\ , R: [RangeBounds](https://doc.rust-lang.org/nightly/core/ops/range/trait.RangeBounds.html "trait core::ops::range::RangeBounds")\ <[usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html)\ \>,\ \ 🔬This is a nightly-only experimental API. (`slice_partial_sort_unstable`)\ \ Partially sorts the slice in ascending order with a comparison function, **without** preserving the initial order of equal elements.\ \ Upon completion, for the specified range `start..end`, it’s guaranteed that:\ \ 1. Every element in `self[..start]` is smaller than or equal to\ 2. Every element in `self[start..end]`, which is sorted, and smaller than or equal to\ 3. Every element in `self[end..]`.\ \ This partial sort is unstable, meaning it may reorder equal elements in the specified range. It may reorder elements outside the specified range as well, but the guarantees above still hold.\ \ This partial sort is in-place (i.e., does not allocate), and _O_(_n_ + _k_ \* log(_k_)) worst-case, where _n_ is the length of the slice and _k_ is the length of the specified range.\ \ See the documentation of [`sort_unstable_by`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.sort_unstable_by "method slice::sort_unstable_by")\ for implementation notes.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#panics-24)\ Panics\ \ May panic if the `compare` does not implement a total order, or if the `compare` itself panics, or if the specified range is out of bounds.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#examples-84)\ Examples\ \ #![feature(slice_partial_sort_unstable)]\ \ let mut v = [4, -5, 1, -3, 2];\ \ // empty range at the beginning, nothing changed\ v.partial_sort_unstable_by(0..0, |a, b| b.cmp(a));\ assert_eq!(v, [4, -5, 1, -3, 2]);\ \ // empty range in the middle, partitioning the slice\ v.partial_sort_unstable_by(2..2, |a, b| b.cmp(a));\ for i in 0..2 {\ assert!(v[i] >= v[2]);\ }\ for i in 3..v.len() {\ assert!(v[2] >= v[i]);\ }\ \ // single element range, same as select_nth_unstable\ v.partial_sort_unstable_by(2..3, |a, b| b.cmp(a));\ for i in 0..2 {\ assert!(v[i] >= v[2]);\ }\ for i in 3..v.len() {\ assert!(v[2] >= v[i]);\ }\ \ // partial sort a subrange\ v.partial_sort_unstable_by(1..4, |a, b| b.cmp(a));\ assert_eq!(&v[1..4], [2, 1, -3]);\ \ // partial sort the whole range, same as sort_unstable\ v.partial_sort_unstable_by(.., |a, b| b.cmp(a));\ assert_eq!(v, [4, 2, 1, -3, -5]);\ \ [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#3452-3456)\ \ #### pub fn [partial\_sort\_unstable\_by\_key](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.partial_sort_unstable_by_key)\ (&mut self, range: R, f: F)\ \ where F: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut")\ ([&T](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ ) -> K, K: [Ord](https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html "trait core::cmp::Ord")\ , R: [RangeBounds](https://doc.rust-lang.org/nightly/core/ops/range/trait.RangeBounds.html "trait core::ops::range::RangeBounds")\ <[usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html)\ \>,\ \ 🔬This is a nightly-only experimental API. (`slice_partial_sort_unstable`)\ \ Partially sorts the slice in ascending order with a key extraction function, **without** preserving the initial order of equal elements.\ \ Upon completion, for the specified range `start..end`, it’s guaranteed that:\ \ 1. Every element in `self[..start]` is smaller than or equal to\ 2. Every element in `self[start..end]`, which is sorted, and smaller than or equal to\ 3. Every element in `self[end..]`.\ \ This partial sort is unstable, meaning it may reorder equal elements in the specified range. It may reorder elements outside the specified range as well, but the guarantees above still hold.\ \ This partial sort is in-place (i.e., does not allocate), and _O_(_n_ + _k_ \* log(_k_)) worst-case, where _n_ is the length of the slice and _k_ is the length of the specified range.\ \ See the documentation of [`sort_unstable_by_key`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.sort_unstable_by_key "method slice::sort_unstable_by_key")\ for implementation notes.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#panics-25)\ Panics\ \ May panic if the implementation of [`Ord`](https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html "trait core::cmp::Ord")\ for `K` does not implement a total order, or if the [`Ord`](https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html "trait core::cmp::Ord")\ implementation panics, or if the specified range is out of bounds.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#examples-85)\ Examples\ \ #![feature(slice_partial_sort_unstable)]\ \ let mut v = [4i32, -5, 1, -3, 2];\ \ // empty range at the beginning, nothing changed\ v.partial_sort_unstable_by_key(0..0, |k| k.abs());\ assert_eq!(v, [4, -5, 1, -3, 2]);\ \ // empty range in the middle, partitioning the slice\ v.partial_sort_unstable_by_key(2..2, |k| k.abs());\ for i in 0..2 {\ assert!(v[i].abs() <= v[2].abs());\ }\ for i in 3..v.len() {\ assert!(v[2].abs() <= v[i].abs());\ }\ \ // single element range, same as select_nth_unstable\ v.partial_sort_unstable_by_key(2..3, |k| k.abs());\ for i in 0..2 {\ assert!(v[i].abs() <= v[2].abs());\ }\ for i in 3..v.len() {\ assert!(v[2].abs() <= v[i].abs());\ }\ \ // partial sort a subrange\ v.partial_sort_unstable_by_key(1..4, |k| k.abs());\ assert_eq!(&v[1..4], [2, -3, 4]);\ \ // partial sort the whole range, same as sort_unstable\ v.partial_sort_unstable_by_key(.., |k| k.abs());\ assert_eq!(v, [1, 2, -3, 4, -5]);\ \ 1.49.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#3516-3518)\ \ #### pub fn [select\_nth\_unstable](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.select_nth_unstable)\ ( &mut self, index: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html)\ , ) -> (&mut [\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ , [&mut T](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ , &mut [\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ )\ \ where T: [Ord](https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html "trait core::cmp::Ord")\ ,\ \ Reorders the slice such that the element at `index` is at a sort-order position. All elements before `index` will be `<=` to this value, and all elements after will be `>=` to it.\ \ This reordering is unstable (i.e. any element that compares equal to the nth element may end up at that position), in-place (i.e. does not allocate), and runs in _O_(_n_) time. This function is also known as “kth element” in other libraries.\ \ Returns a triple that partitions the reordered slice:\ \ * The unsorted subslice before `index`, whose elements all satisfy `x <= self[index]`.\ \ * The element at `index`.\ \ * The unsorted subslice after `index`, whose elements all satisfy `x >= self[index]`.\ \ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#current-implementation-3)\ Current implementation\ \ The current algorithm is an introselect implementation based on [ipnsort](https://github.com/Voultapher/sort-research-rs/tree/main/ipnsort)\ by Lukas Bergdoll and Orson Peters, which is also the basis for [`sort_unstable`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.sort_unstable "method slice::sort_unstable")\ . The fallback algorithm is Median of Medians using Tukey’s Ninther for pivot selection, which guarantees linear runtime for all inputs.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#panics-26)\ Panics\ \ Panics when `index >= len()`, and so always panics on empty slices.\ \ May panic if the implementation of [`Ord`](https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html "trait core::cmp::Ord")\ for `T` does not implement a [total order](https://en.wikipedia.org/wiki/Total_order)\ .\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#examples-86)\ Examples\ \ let mut v = [-5i32, 4, 2, -3, 1];\ \ // Find the items `<=` to the median, the median itself, and the items `>=` to it.\ let (lesser, median, greater) = v.select_nth_unstable(2);\ \ assert!(lesser == [-3, -5] || lesser == [-5, -3]);\ assert_eq!(median, &mut 1);\ assert!(greater == [4, 2] || greater == [2, 4]);\ \ // We are only guaranteed the slice will be one of the following, based on the way we sort\ // about the specified index.\ assert!(v == [-3, -5, 1, 2, 4] ||\ v == [-5, -3, 1, 2, 4] ||\ v == [-3, -5, 1, 4, 2] ||\ v == [-5, -3, 1, 4, 2]);\ \ 1.49.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#3581-3587)\ \ #### pub fn [select\_nth\_unstable\_by](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.select_nth_unstable_by)\ ( &mut self, index: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html)\ , compare: F, ) -> (&mut [\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ , [&mut T](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ , &mut [\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ )\ \ where F: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut")\ ([&T](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ , [&T](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ ) -> [Ordering](https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html "enum core::cmp::Ordering")\ ,\ \ Reorders the slice with a comparator function such that the element at `index` is at a sort-order position. All elements before `index` will be `<=` to this value, and all elements after will be `>=` to it, according to the comparator function.\ \ This reordering is unstable (i.e. any element that compares equal to the nth element may end up at that position), in-place (i.e. does not allocate), and runs in _O_(_n_) time. This function is also known as “kth element” in other libraries.\ \ Returns a triple partitioning the reordered slice:\ \ * The unsorted subslice before `index`, whose elements all satisfy `compare(x, self[index]).is_le()`.\ \ * The element at `index`.\ \ * The unsorted subslice after `index`, whose elements all satisfy `compare(x, self[index]).is_ge()`.\ \ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#current-implementation-4)\ Current implementation\ \ The current algorithm is an introselect implementation based on [ipnsort](https://github.com/Voultapher/sort-research-rs/tree/main/ipnsort)\ by Lukas Bergdoll and Orson Peters, which is also the basis for [`sort_unstable`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.sort_unstable "method slice::sort_unstable")\ . The fallback algorithm is Median of Medians using Tukey’s Ninther for pivot selection, which guarantees linear runtime for all inputs.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#panics-27)\ Panics\ \ Panics when `index >= len()`, and so always panics on empty slices.\ \ May panic if `compare` does not implement a [total order](https://en.wikipedia.org/wiki/Total_order)\ .\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#examples-87)\ Examples\ \ let mut v = [-5i32, 4, 2, -3, 1];\ \ // Find the items `>=` to the median, the median itself, and the items `<=` to it, by using\ // a reversed comparator.\ let (before, median, after) = v.select_nth_unstable_by(2, |a, b| b.cmp(a));\ \ assert!(before == [4, 2] || before == [2, 4]);\ assert_eq!(median, &mut 1);\ assert!(after == [-3, -5] || after == [-5, -3]);\ \ // We are only guaranteed the slice will be one of the following, based on the way we sort\ // about the specified index.\ assert!(v == [2, 4, 1, -5, -3] ||\ v == [2, 4, 1, -3, -5] ||\ v == [4, 2, 1, -5, -3] ||\ v == [4, 2, 1, -3, -5]);\ \ 1.49.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#3648-3655)\ \ #### pub fn [select\_nth\_unstable\_by\_key](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.select_nth_unstable_by_key)\ ( &mut self, index: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html)\ , f: F, ) -> (&mut [\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ , [&mut T](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ , &mut [\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ )\ \ where F: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut")\ ([&T](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ ) -> K, K: [Ord](https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html "trait core::cmp::Ord")\ ,\ \ Reorders the slice with a key extraction function such that the element at `index` is at a sort-order position. All elements before `index` will have keys `<=` to the key at `index`, and all elements after will have keys `>=` to it.\ \ This reordering is unstable (i.e. any element that compares equal to the nth element may end up at that position), in-place (i.e. does not allocate), and runs in _O_(_n_) time. This function is also known as “kth element” in other libraries.\ \ Returns a triple partitioning the reordered slice:\ \ * The unsorted subslice before `index`, whose elements all satisfy `f(x) <= f(self[index])`.\ \ * The element at `index`.\ \ * The unsorted subslice after `index`, whose elements all satisfy `f(x) >= f(self[index])`.\ \ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#current-implementation-5)\ Current implementation\ \ The current algorithm is an introselect implementation based on [ipnsort](https://github.com/Voultapher/sort-research-rs/tree/main/ipnsort)\ by Lukas Bergdoll and Orson Peters, which is also the basis for [`sort_unstable`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.sort_unstable "method slice::sort_unstable")\ . The fallback algorithm is Median of Medians using Tukey’s Ninther for pivot selection, which guarantees linear runtime for all inputs.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#panics-28)\ Panics\ \ Panics when `index >= len()`, meaning it always panics on empty slices.\ \ May panic if `K: Ord` does not implement a total order.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#examples-88)\ Examples\ \ let mut v = [-5i32, 4, 1, -3, 2];\ \ // Find the items `<=` to the absolute median, the absolute median itself, and the items\ // `>=` to it.\ let (lesser, median, greater) = v.select_nth_unstable_by_key(2, |a| a.abs());\ \ assert!(lesser == [1, 2] || lesser == [2, 1]);\ assert_eq!(median, &mut -3);\ assert!(greater == [4, -5] || greater == [-5, 4]);\ \ // We are only guaranteed the slice will be one of the following, based on the way we sort\ // about the specified index.\ assert!(v == [1, 2, -3, 4, -5] ||\ v == [1, 2, -3, -5, 4] ||\ v == [2, 1, -3, 4, -5] ||\ v == [2, 1, -3, -5, 4]);\ \ [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#3682-3684)\ \ #### pub fn [partition\_dedup](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.partition_dedup)\ (&mut self) -> (&mut [\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ , &mut [\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ )\ \ where T: [PartialEq](https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html "trait core::cmp::PartialEq")\ ,\ \ 🔬This is a nightly-only experimental API. (`slice_partition_dedup`)\ \ Moves all consecutive repeated elements to the end of the slice according to the [`PartialEq`](https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html "trait core::cmp::PartialEq")\ trait implementation.\ \ Returns two slices. The first contains no consecutive repeated elements. The second contains all the duplicates in no specified order.\ \ If the slice is sorted, the first returned slice contains no duplicates.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#examples-89)\ Examples\ \ #![feature(slice_partition_dedup)]\ \ let mut slice = [1, 2, 2, 3, 3, 2, 1, 1];\ \ let (dedup, duplicates) = slice.partition_dedup();\ \ assert_eq!(dedup, [1, 2, 3, 2, 1]);\ assert_eq!(duplicates, [2, 3, 1]);\ \ [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#3716-3718)\ \ #### pub fn [partition\_dedup\_by](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.partition_dedup_by)\ (&mut self, same\_bucket: F) -> (&mut [\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ , &mut [\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ )\ \ where F: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut")\ ([&mut T](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ , [&mut T](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ ) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html)\ ,\ \ 🔬This is a nightly-only experimental API. (`slice_partition_dedup`)\ \ Moves all but the first of consecutive elements to the end of the slice satisfying a given equality relation.\ \ Returns two slices. The first contains no consecutive repeated elements. The second contains all the duplicates in no specified order.\ \ The `same_bucket` function is passed references to two elements from the slice and must determine if the elements compare equal. The elements are passed in opposite order from their order in the slice, so if `same_bucket(a, b)` returns `true`, `a` is moved at the end of the slice.\ \ If the slice is sorted, the first returned slice contains no duplicates.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#examples-90)\ Examples\ \ #![feature(slice_partition_dedup)]\ \ let mut slice = ["foo", "Foo", "BAZ", "Bar", "bar", "baz", "BAZ"];\ \ let (dedup, duplicates) = slice.partition_dedup_by(|a, b| a.eq_ignore_ascii_case(b));\ \ assert_eq!(dedup, ["foo", "BAZ", "Bar", "baz"]);\ assert_eq!(duplicates, ["bar", "Foo", "BAZ"]);\ \ [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#3842-3845)\ \ #### pub fn [partition\_dedup\_by\_key](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.partition_dedup_by_key)\ (&mut self, key: F) -> (&mut [\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ , &mut [\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ )\ \ where F: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut")\ ([&mut T](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ ) -> K, K: [PartialEq](https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html "trait core::cmp::PartialEq")\ ,\ \ 🔬This is a nightly-only experimental API. (`slice_partition_dedup`)\ \ Moves all but the first of consecutive elements to the end of the slice that resolve to the same key.\ \ Returns two slices. The first contains no consecutive repeated elements. The second contains all the duplicates in no specified order.\ \ If the slice is sorted, the first returned slice contains no duplicates.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#examples-91)\ Examples\ \ #![feature(slice_partition_dedup)]\ \ let mut slice = [10, 20, 21, 30, 30, 20, 11, 13];\ \ let (dedup, duplicates) = slice.partition_dedup_by_key(|i| *i / 10);\ \ assert_eq!(dedup, [10, 20, 30, 20, 11]);\ assert_eq!(duplicates, [21, 30, 13]);\ \ 1.26.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#3884)\ \ #### pub fn [rotate\_left](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.rotate_left)\ (&mut self, mid: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html)\ )\ \ Rotates the slice in-place such that the first `mid` elements of the slice move to the end while the last `self.len() - mid` elements move to the front.\ \ After calling `rotate_left`, the element previously at index `mid` will become the first element in the slice.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#panics-29)\ Panics\ \ This function will panic if `mid` is greater than the length of the slice. Note that `mid == self.len()` does _not_ panic and is a no-op rotation.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#complexity)\ Complexity\ \ Takes linear (in `self.len()`) time.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#examples-92)\ Examples\ \ let mut a = ['a', 'b', 'c', 'd', 'e', 'f'];\ a.rotate_left(2);\ assert_eq!(a, ['c', 'd', 'e', 'f', 'a', 'b']);\ \ Rotating a subslice:\ \ let mut a = ['a', 'b', 'c', 'd', 'e', 'f'];\ a[1..5].rotate_left(1);\ assert_eq!(a, ['a', 'c', 'd', 'e', 'b', 'f']);\ \ 1.26.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#3930)\ \ #### pub fn [rotate\_right](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.rotate_right)\ (&mut self, k: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html)\ )\ \ Rotates the slice in-place such that the first `self.len() - k` elements of the slice move to the end while the last `k` elements move to the front.\ \ After calling `rotate_right`, the element previously at index `self.len() - k` will become the first element in the slice.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#panics-30)\ Panics\ \ This function will panic if `k` is greater than the length of the slice. Note that `k == self.len()` does _not_ panic and is a no-op rotation.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#complexity-1)\ Complexity\ \ Takes linear (in `self.len()`) time.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#examples-93)\ Examples\ \ let mut a = ['a', 'b', 'c', 'd', 'e', 'f'];\ a.rotate_right(2);\ assert_eq!(a, ['e', 'f', 'a', 'b', 'c', 'd']);\ \ Rotating a subslice:\ \ let mut a = ['a', 'b', 'c', 'd', 'e', 'f'];\ a[1..5].rotate_right(1);\ assert_eq!(a, ['a', 'e', 'b', 'c', 'd', 'f']);\ \ [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#4004)\ \ #### pub fn [shift\_left](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.shift_left)\ (&mut self, inserted: [\[T; N\]](https://doc.rust-lang.org/nightly/std/primitive.array.html)\ ) -> [\[T; N\]](https://doc.rust-lang.org/nightly/std/primitive.array.html)\ \ 🔬This is a nightly-only experimental API. (`slice_shift`)\ \ Moves the elements of this slice `N` places to the left, returning the ones that “fall off” the front, and putting `inserted` at the end.\ \ Equivalently, you can think of concatenating `self` and `inserted` into one long sequence, then returning the left-most `N` items and the rest into `self`:\ \ self (before) inserted\ vvvvvvvvvvvvvvv vvv\ [1, 2, 3, 4, 5] [9]\ ↙ ↙ ↙ ↙ ↙ ↙\ [1] [2, 3, 4, 5, 9]\ ^^^ ^^^^^^^^^^^^^^^\ returned self (after)\ \ See also [`Self::shift_right`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.shift_right "method slice::shift_right")\ and compare [`Self::rotate_left`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.rotate_left "method slice::rotate_left")\ .\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#examples-94)\ Examples\ \ #![feature(slice_shift)]\ \ // Same as the diagram above\ let mut a = [1, 2, 3, 4, 5];\ let inserted = [9];\ let returned = a.shift_left(inserted);\ assert_eq!(returned, [1]);\ assert_eq!(a, [2, 3, 4, 5, 9]);\ \ // You can shift multiple items at a time\ let mut a = *b"Hello world";\ assert_eq!(a.shift_left(*b" peace"), *b"Hello ");\ assert_eq!(a, *b"world peace");\ \ // The name comes from this operation's similarity to bitshifts\ let mut a: u8 = 0b10010110;\ a <<= 3;\ assert_eq!(a, 0b10110000_u8);\ let mut a: [_; 8] = [1, 0, 0, 1, 0, 1, 1, 0];\ a.shift_left([0; 3]);\ assert_eq!(a, [1, 0, 1, 1, 0, 0, 0, 0]);\ \ // Remember you can sub-slice to affect less that the whole slice.\ // For example, this is similar to `.remove(1)` + `.insert(4, 'Z')`\ let mut a = ['a', 'b', 'c', 'd', 'e', 'f'];\ assert_eq!(a[1..=4].shift_left(['Z']), ['b']);\ assert_eq!(a, ['a', 'c', 'd', 'e', 'Z', 'f']);\ \ // If the size matches it's equivalent to `mem::replace`\ let mut a = [1, 2, 3];\ assert_eq!(a.shift_left([7, 8, 9]), [1, 2, 3]);\ assert_eq!(a, [7, 8, 9]);\ \ // Some of the "inserted" elements end up returned if the slice is too short\ let mut a = [];\ assert_eq!(a.shift_left([1, 2, 3]), [1, 2, 3]);\ let mut a = [9];\ assert_eq!(a.shift_left([1, 2, 3]), [9, 1, 2]);\ assert_eq!(a, [3]);\ \ [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#4108)\ \ #### pub fn [shift\_right](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.shift_right)\ (&mut self, inserted: [\[T; N\]](https://doc.rust-lang.org/nightly/std/primitive.array.html)\ ) -> [\[T; N\]](https://doc.rust-lang.org/nightly/std/primitive.array.html)\ \ 🔬This is a nightly-only experimental API. (`slice_shift`)\ \ Moves the elements of this slice `N` places to the right, returning the ones that “fall off” the back, and putting `inserted` at the beginning.\ \ Equivalently, you can think of concatenating `inserted` and `self` into one long sequence, then returning the right-most `N` items and the rest into `self`:\ \ inserted self (before)\ vvv vvvvvvvvvvvvvvv\ [0] [5, 6, 7, 8, 9]\ ↘ ↘ ↘ ↘ ↘ ↘\ [0, 5, 6, 7, 8] [9]\ ^^^^^^^^^^^^^^^ ^^^\ self (after) returned\ \ See also [`Self::shift_left`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.shift_left "method slice::shift_left")\ and compare [`Self::rotate_right`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.rotate_right "method slice::rotate_right")\ .\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#examples-95)\ Examples\ \ #![feature(slice_shift)]\ \ // Same as the diagram above\ let mut a = [5, 6, 7, 8, 9];\ let inserted = [0];\ let returned = a.shift_right(inserted);\ assert_eq!(returned, [9]);\ assert_eq!(a, [0, 5, 6, 7, 8]);\ \ // The name comes from this operation's similarity to bitshifts\ let mut a: u8 = 0b10010110;\ a >>= 3;\ assert_eq!(a, 0b00010010_u8);\ let mut a: [_; 8] = [1, 0, 0, 1, 0, 1, 1, 0];\ a.shift_right([0; 3]);\ assert_eq!(a, [0, 0, 0, 1, 0, 0, 1, 0]);\ \ // Remember you can sub-slice to affect less that the whole slice.\ // For example, this is similar to `.remove(4)` + `.insert(1, 'Z')`\ let mut a = ['a', 'b', 'c', 'd', 'e', 'f'];\ assert_eq!(a[1..=4].shift_right(['Z']), ['e']);\ assert_eq!(a, ['a', 'Z', 'b', 'c', 'd', 'f']);\ \ // If the size matches it's equivalent to `mem::replace`\ let mut a = [1, 2, 3];\ assert_eq!(a.shift_right([7, 8, 9]), [1, 2, 3]);\ assert_eq!(a, [7, 8, 9]);\ \ // Some of the "inserted" elements end up returned if the slice is too short\ let mut a = [];\ assert_eq!(a.shift_right([1, 2, 3]), [1, 2, 3]);\ let mut a = [9];\ assert_eq!(a.shift_right([1, 2, 3]), [2, 3, 9]);\ assert_eq!(a, [1]);\ \ 1.50.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#4166-4168)\ \ #### pub fn [fill](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.fill)\ (&mut self, value: T)\ \ where T: [Clone](https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html "trait core::clone::Clone")\ ,\ \ Fills `self` with elements by cloning `value`.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#examples-96)\ Examples\ \ let mut buf = vec![0; 10];\ buf.fill(1);\ assert_eq!(buf, vec![1; 10]);\ \ 1.51.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#4190-4192)\ \ #### pub fn [fill\_with](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.fill_with)\ (&mut self, f: F)\ \ where F: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut")\ () -> T,\ \ Fills `self` with elements returned by calling a closure repeatedly.\ \ This method uses a closure to create new values. If you’d rather [`Clone`](https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html "trait core::clone::Clone")\ a given value, use [`fill`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.fill "method slice::fill")\ . If you want to use the [`Default`](https://doc.rust-lang.org/nightly/core/default/trait.Default.html "trait core::default::Default")\ trait to generate values, you can pass [`Default::default`](https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default "associated function core::default::Default::default")\ as the argument.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#examples-97)\ Examples\ \ let mut buf = vec![1; 10];\ buf.fill_with(Default::default);\ assert_eq!(buf, vec![0; 10]);\ \ 1.7.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#4254-4256)\ \ #### pub fn [clone\_from\_slice](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.clone_from_slice)\ (&mut self, src: &[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ )\ \ where T: [Clone](https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html "trait core::clone::Clone")\ ,\ \ Copies the elements from `src` into `self`.\ \ The length of `src` must be the same as `self`.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#panics-31)\ Panics\ \ This function will panic if the two slices have different lengths.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#examples-98)\ Examples\ \ Cloning two elements from a slice into another:\ \ let src = [1, 2, 3, 4];\ let mut dst = [0, 0];\ \ // Because the slices have to be the same length,\ // we slice the source slice from four elements\ // to two. It will panic if we don't do this.\ dst.clone_from_slice(&src[2..]);\ \ assert_eq!(src, [1, 2, 3, 4]);\ assert_eq!(dst, [3, 4]);\ \ Rust enforces that there can only be one mutable reference with no immutable references to a particular piece of data in a particular scope. Because of this, attempting to use `clone_from_slice` on a single slice will result in a compile failure:\ \ [ⓘ](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html# "This example deliberately fails to compile")\ \ let mut slice = [1, 2, 3, 4, 5];\ \ slice[..2].clone_from_slice(&slice[3..]); // compile fail!\ \ To work around this, we can use [`split_at_mut`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.split_at_mut "method slice::split_at_mut")\ to create two distinct sub-slices from a slice:\ \ let mut slice = [1, 2, 3, 4, 5];\ \ {\ let (left, right) = slice.split_at_mut(2);\ left.clone_from_slice(&right[1..]);\ }\ \ assert_eq!(slice, [4, 5, 3, 4, 5]);\ \ 1.9.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#4320-4322)\ \ #### pub fn [copy\_from\_slice](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.copy_from_slice)\ (&mut self, src: &[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ )\ \ where T: [Copy](https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html "trait core::marker::Copy")\ ,\ \ Copies all elements from `src` into `self`, using a memcpy.\ \ The length of `src` must be the same as `self`.\ \ If `T` does not implement `Copy`, use [`clone_from_slice`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.clone_from_slice "method slice::clone_from_slice")\ .\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#panics-32)\ Panics\ \ This function will panic if the two slices have different lengths.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#examples-99)\ Examples\ \ Copying two elements from a slice into another:\ \ let src = [1, 2, 3, 4];\ let mut dst = [0, 0];\ \ // Because the slices have to be the same length,\ // we slice the source slice from four elements\ // to two. It will panic if we don't do this.\ dst.copy_from_slice(&src[2..]);\ \ assert_eq!(src, [1, 2, 3, 4]);\ assert_eq!(dst, [3, 4]);\ \ Rust enforces that there can only be one mutable reference with no immutable references to a particular piece of data in a particular scope. Because of this, attempting to use `copy_from_slice` on a single slice will result in a compile failure:\ \ [ⓘ](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html# "This example deliberately fails to compile")\ \ let mut slice = [1, 2, 3, 4, 5];\ \ slice[..2].copy_from_slice(&slice[3..]); // compile fail!\ \ To work around this, we can use [`split_at_mut`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.split_at_mut "method slice::split_at_mut")\ to create two distinct sub-slices from a slice:\ \ let mut slice = [1, 2, 3, 4, 5];\ \ {\ let (left, right) = slice.split_at_mut(2);\ left.copy_from_slice(&right[1..]);\ }\ \ assert_eq!(slice, [4, 5, 3, 4, 5]);\ \ 1.37.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#4354-4356)\ \ #### pub fn [copy\_within](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.copy_within)\ (&mut self, src: R, dest: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html)\ )\ \ where R: [RangeBounds](https://doc.rust-lang.org/nightly/core/ops/range/trait.RangeBounds.html "trait core::ops::range::RangeBounds")\ <[usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html)\ \>, T: [Copy](https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html "trait core::marker::Copy")\ ,\ \ Copies elements from one part of the slice to another part of itself, using a memmove.\ \ `src` is the range within `self` to copy from. `dest` is the starting index of the range within `self` to copy to, which will have the same length as `src`. The two ranges may overlap. The ends of the two ranges must be less than or equal to `self.len()`.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#panics-33)\ Panics\ \ This function will panic if either range exceeds the end of the slice, or if the end of `src` is before the start.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#examples-100)\ Examples\ \ Copying four bytes within a slice:\ \ let mut bytes = *b"Hello, World!";\ \ bytes.copy_within(1..5, 8);\ \ assert_eq!(&bytes, b"Hello, Wello!");\ \ 1.27.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#4422)\ \ #### pub fn [swap\_with\_slice](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.swap_with_slice)\ (&mut self, other: &mut [\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ )\ \ Swaps all elements in `self` with those in `other`.\ \ The length of `other` must be the same as `self`.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#panics-34)\ Panics\ \ This function will panic if the two slices have different lengths.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#example-9)\ Example\ \ Swapping two elements across slices:\ \ let mut slice1 = [0, 0];\ let mut slice2 = [1, 2, 3, 4];\ \ slice1.swap_with_slice(&mut slice2[2..]);\ \ assert_eq!(slice1, [3, 4]);\ assert_eq!(slice2, [1, 2, 0, 0]);\ \ Rust enforces that there can only be one mutable reference to a particular piece of data in a particular scope. Because of this, attempting to use `swap_with_slice` on a single slice will result in a compile failure:\ \ [ⓘ](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html# "This example deliberately fails to compile")\ \ let mut slice = [1, 2, 3, 4, 5];\ slice[..2].swap_with_slice(&mut slice[3..]); // compile fail!\ \ To work around this, we can use [`split_at_mut`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.split_at_mut "method slice::split_at_mut")\ to create two distinct mutable sub-slices from a slice:\ \ let mut slice = [1, 2, 3, 4, 5];\ \ {\ let (left, right) = slice.split_at_mut(2);\ left.swap_with_slice(&mut right[1..]);\ }\ \ assert_eq!(slice, [4, 5, 3, 1, 2]);\ \ 1.30.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#4499)\ \ #### pub unsafe fn [align\_to](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.align_to)\ (&self) -> (&[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ , &[\[U\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ , &[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ )\ \ Transmutes the slice to a slice of another type, ensuring alignment of the types is maintained.\ \ This method splits the slice into three distinct slices: prefix, correctly aligned middle slice of a new type, and the suffix slice. The middle part will be as big as possible under the given alignment constraint and element size.\ \ This method has no purpose when either input element `T` or output element `U` are zero-sized and will return the original slice without splitting anything.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#safety-14)\ Safety\ \ This method is essentially a `transmute` with respect to the elements in the returned middle slice, so all the usual caveats pertaining to `transmute::` also apply here.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#examples-101)\ Examples\ \ Basic usage:\ \ unsafe {\ let bytes: [u8; 7] = [1, 2, 3, 4, 5, 6, 7];\ let (prefix, shorts, suffix) = bytes.align_to::();\ // less_efficient_algorithm_for_bytes(prefix);\ // more_efficient_algorithm_for_aligned_shorts(shorts);\ // less_efficient_algorithm_for_bytes(suffix);\ }\ \ 1.30.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#4564)\ \ #### pub unsafe fn [align\_to\_mut](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.align_to_mut)\ (&mut self) -> (&mut [\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ , &mut [\[U\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ , &mut [\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ )\ \ Transmutes the mutable slice to a mutable slice of another type, ensuring alignment of the types is maintained.\ \ This method splits the slice into three distinct slices: prefix, correctly aligned middle slice of a new type, and the suffix slice. The middle part will be as big as possible under the given alignment constraint and element size.\ \ This method has no purpose when either input element `T` or output element `U` are zero-sized and will return the original slice without splitting anything.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#safety-15)\ Safety\ \ This method is essentially a `transmute` with respect to the elements in the returned middle slice, so all the usual caveats pertaining to `transmute::` also apply here.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#examples-102)\ Examples\ \ Basic usage:\ \ unsafe {\ let mut bytes: [u8; 7] = [1, 2, 3, 4, 5, 6, 7];\ let (prefix, shorts, suffix) = bytes.align_to_mut::();\ // less_efficient_algorithm_for_bytes(prefix);\ // more_efficient_algorithm_for_aligned_shorts(shorts);\ // less_efficient_algorithm_for_bytes(suffix);\ }\ \ [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#4655-4658)\ \ #### pub fn [as\_simd](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.as_simd)\ (&self) -> (&[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ , &\[[Simd](https://doc.rust-lang.org/nightly/core/core_simd/vector/struct.Simd.html "struct core::core_simd::vector::Simd")\ \], &[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ )\ \ where [Simd](https://doc.rust-lang.org/nightly/core/core_simd/vector/struct.Simd.html "struct core::core_simd::vector::Simd")\ : [AsRef](https://doc.rust-lang.org/nightly/core/convert/trait.AsRef.html "trait core::convert::AsRef")\ <[\[T; LANES\]](https://doc.rust-lang.org/nightly/std/primitive.array.html)\ \>, T: [SimdElement](https://doc.rust-lang.org/nightly/core/core_simd/vector/trait.SimdElement.html "trait core::core_simd::vector::SimdElement")\ ,\ \ 🔬This is a nightly-only experimental API. (`portable_simd`)\ \ Splits a slice into a prefix, a middle of aligned SIMD types, and a suffix.\ \ This is a safe wrapper around [`slice::align_to`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.align_to "method slice::align_to")\ , so inherits the same guarantees as that method.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#panics-35)\ Panics\ \ This will panic if the size of the SIMD type is different from `LANES` times that of the scalar.\ \ At the time of writing, the trait restrictions on `Simd` keeps that from ever happening, as only power-of-two numbers of lanes are supported. It’s possible that, in the future, those restrictions might be lifted in a way that would make it possible to see panics from this method for something like `LANES == 3`.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#examples-103)\ Examples\ \ #![feature(portable_simd)]\ use core::simd::prelude::*;\ \ let short = &[1, 2, 3];\ let (prefix, middle, suffix) = short.as_simd::<4>();\ assert_eq!(middle, []); // Not enough elements for anything in the middle\ \ // They might be split in any possible way between prefix and suffix\ let it = prefix.iter().chain(suffix).copied();\ assert_eq!(it.collect::>(), vec![1, 2, 3]);\ \ fn basic_simd_sum(x: &[f32]) -> f32 {\ use std::ops::Add;\ let (prefix, middle, suffix) = x.as_simd();\ let sums = f32x4::from_array([\ prefix.iter().copied().sum(),\ 0.0,\ 0.0,\ suffix.iter().copied().sum(),\ ]);\ let sums = middle.iter().copied().fold(sums, f32x4::add);\ sums.reduce_sum()\ }\ \ let numbers: Vec = (1..101).map(|x| x as _).collect();\ assert_eq!(basic_simd_sum(&numbers[1..99]), 4949.0);\ \ [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#4690-4693)\ \ #### pub fn [as\_simd\_mut](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.as_simd_mut)\ ( &mut self, ) -> (&mut [\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ , &mut \[[Simd](https://doc.rust-lang.org/nightly/core/core_simd/vector/struct.Simd.html "struct core::core_simd::vector::Simd")\ \], &mut [\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ )\ \ where [Simd](https://doc.rust-lang.org/nightly/core/core_simd/vector/struct.Simd.html "struct core::core_simd::vector::Simd")\ : [AsMut](https://doc.rust-lang.org/nightly/core/convert/trait.AsMut.html "trait core::convert::AsMut")\ <[\[T; LANES\]](https://doc.rust-lang.org/nightly/std/primitive.array.html)\ \>, T: [SimdElement](https://doc.rust-lang.org/nightly/core/core_simd/vector/trait.SimdElement.html "trait core::core_simd::vector::SimdElement")\ ,\ \ 🔬This is a nightly-only experimental API. (`portable_simd`)\ \ Splits a mutable slice into a mutable prefix, a middle of aligned SIMD types, and a mutable suffix.\ \ This is a safe wrapper around [`slice::align_to_mut`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.align_to_mut "method slice::align_to_mut")\ , so inherits the same guarantees as that method.\ \ This is the mutable version of [`slice::as_simd`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.as_simd "method slice::as_simd")\ ; see that for examples.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#panics-36)\ Panics\ \ This will panic if the size of the SIMD type is different from `LANES` times that of the scalar.\ \ At the time of writing, the trait restrictions on `Simd` keeps that from ever happening, as only power-of-two numbers of lanes are supported. It’s possible that, in the future, those restrictions might be lifted in a way that would make it possible to see panics from this method for something like `LANES == 3`.\ \ 1.82.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#4728-4730)\ \ #### pub fn [is\_sorted](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.is_sorted)\ (&self) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html)\ \ where T: [PartialOrd](https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html "trait core::cmp::PartialOrd")\ ,\ \ Checks if the elements of this slice are sorted.\ \ That is, for each element `a` and its following element `b`, `a <= b` must hold. If the slice yields exactly zero or one element, `true` is returned.\ \ Note that if `Self::Item` is only `PartialOrd`, but not `Ord`, the above definition implies that this function returns `false` if any two consecutive items are not comparable.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#examples-104)\ Examples\ \ let empty: [i32; 0] = [];\ \ assert!([1, 2, 2, 9].is_sorted());\ assert!(![1, 3, 2, 4].is_sorted());\ assert!([0].is_sorted());\ assert!(empty.is_sorted());\ assert!(![0.0, 1.0, f32::NAN].is_sorted());\ \ 1.82.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#4771-4773)\ \ #### pub fn [is\_sorted\_by](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.is_sorted_by)\ <'a, F>(&'a self, compare: F) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html)\ \ where F: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut")\ ([&'a T](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ , [&'a T](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ ) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html)\ ,\ \ Checks if the elements of this slice are sorted using the given comparator function.\ \ Instead of using `PartialOrd::partial_cmp`, this function uses the given `compare` function to determine whether two elements are to be considered in sorted order.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#examples-105)\ Examples\ \ assert!([1, 2, 2, 9].is_sorted_by(|a, b| a <= b));\ assert!(![1, 2, 2, 9].is_sorted_by(|a, b| a < b));\ \ assert!([0].is_sorted_by(|a, b| true));\ assert!([0].is_sorted_by(|a, b| false));\ \ let empty: [i32; 0] = [];\ assert!(empty.is_sorted_by(|a, b| false));\ assert!(empty.is_sorted_by(|a, b| true));\ \ 1.82.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#4795-4798)\ \ #### pub fn [is\_sorted\_by\_key](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.is_sorted_by_key)\ <'a, F, K>(&'a self, f: F) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html)\ \ where F: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut")\ ([&'a T](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ ) -> K, K: [PartialOrd](https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html "trait core::cmp::PartialOrd")\ ,\ \ Checks if the elements of this slice are sorted using the given key extraction function.\ \ Instead of comparing the slice’s elements directly, this function compares the keys of the elements, as determined by `f`. Apart from that, it’s equivalent to [`is_sorted`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.is_sorted "method slice::is_sorted")\ ; see its documentation for more information.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#examples-106)\ Examples\ \ assert!(["c", "bb", "aaa"].is_sorted_by_key(|s| s.len()));\ assert!(![-2i32, -1, 0, 3].is_sorted_by_key(|n| n.abs()));\ \ 1.52.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#4854-4856)\ \ #### pub fn [partition\_point](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.partition_point)\

(&self, pred: P) -> [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html)\ \ where P: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut")\ ([&T](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ ) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html)\ ,\ \ Returns the index of the partition point according to the given predicate (the index of the first element of the second partition).\ \ The slice is assumed to be partitioned according to the given predicate. This means that all elements for which the predicate returns true are at the start of the slice and all elements for which the predicate returns false are at the end. For example, `[7, 15, 3, 5, 4, 12, 6]` is partitioned under the predicate `x % 2 != 0` (all odd numbers are at the start, all even at the end).\ \ If this slice is not partitioned, the returned result is unspecified and meaningless, as this method performs a kind of binary search.\ \ See also [`binary_search`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.binary_search "method slice::binary_search")\ , [`binary_search_by`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.binary_search_by "method slice::binary_search_by")\ , and [`binary_search_by_key`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.binary_search_by_key "method slice::binary_search_by_key")\ .\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#examples-107)\ Examples\ \ let v = [1, 2, 3, 3, 5, 6, 7];\ let i = v.partition_point(|&x| x < 5);\ \ assert_eq!(i, 4);\ assert!(v[..i].iter().all(|&x| x < 5));\ assert!(v[i..].iter().all(|&x| !(x < 5)));\ \ If all elements of the slice match the predicate, including if the slice is empty, then the length of the slice will be returned:\ \ let a = [2, 4, 8];\ assert_eq!(a.partition_point(|x| x < &100), a.len());\ let a: [i32; 0] = [];\ assert_eq!(a.partition_point(|x| x < &100), 0);\ \ If you want to insert an item to a sorted vector, while maintaining sort order:\ \ let mut s = vec![0, 1, 1, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55];\ let num = 42;\ let idx = s.partition_point(|&x| x <= num);\ s.insert(idx, num);\ assert_eq!(s, [0, 1, 1, 1, 1, 2, 3, 5, 8, 13, 21, 34, 42, 55]);\ \ 1.87.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#4906-4909)\ \ #### pub fn [split\_off](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.split_off)\ <'a, R>(self: &mut &'a [\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ , range: R) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option")\ <&'a [\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ \>\ \ where R: [OneSidedRange](https://doc.rust-lang.org/nightly/core/ops/range/trait.OneSidedRange.html "trait core::ops::range::OneSidedRange")\ <[usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html)\ \>,\ \ Removes the subslice corresponding to the given range and returns a reference to it.\ \ Returns `None` and does not modify the slice if the given range is out of bounds.\ \ Note that this method only accepts one-sided ranges such as `2..` or `..6`, but not `2..6`.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#examples-108)\ Examples\ \ Splitting off the first three elements of a slice:\ \ let mut slice: &[_] = &['a', 'b', 'c', 'd'];\ let mut first_three = slice.split_off(..3).unwrap();\ \ assert_eq!(slice, &['d']);\ assert_eq!(first_three, &['a', 'b', 'c']);\ \ Splitting off a slice starting with the third element:\ \ let mut slice: &[_] = &['a', 'b', 'c', 'd'];\ let mut tail = slice.split_off(2..).unwrap();\ \ assert_eq!(slice, &['a', 'b']);\ assert_eq!(tail, &['c', 'd']);\ \ Getting `None` when `range` is out of bounds:\ \ let mut slice: &[_] = &['a', 'b', 'c', 'd'];\ \ assert_eq!(None, slice.split_off(5..));\ assert_eq!(None, slice.split_off(..5));\ assert_eq!(None, slice.split_off(..=4));\ let expected: &[char] = &['a', 'b', 'c', 'd'];\ assert_eq!(Some(expected), slice.split_off(..4));\ \ 1.87.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#4972-4975)\ \ #### pub fn [split\_off\_mut](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.split_off_mut)\ <'a, R>( self: &mut &'a mut [\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ , range: R, ) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option")\ <&'a mut [\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ \>\ \ where R: [OneSidedRange](https://doc.rust-lang.org/nightly/core/ops/range/trait.OneSidedRange.html "trait core::ops::range::OneSidedRange")\ <[usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html)\ \>,\ \ Removes the subslice corresponding to the given range and returns a mutable reference to it.\ \ Returns `None` and does not modify the slice if the given range is out of bounds.\ \ Note that this method only accepts one-sided ranges such as `2..` or `..6`, but not `2..6`.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#examples-109)\ Examples\ \ Splitting off the first three elements of a slice:\ \ let mut slice: &mut [_] = &mut ['a', 'b', 'c', 'd'];\ let mut first_three = slice.split_off_mut(..3).unwrap();\ \ assert_eq!(slice, &mut ['d']);\ assert_eq!(first_three, &mut ['a', 'b', 'c']);\ \ Splitting off a slice starting with the third element:\ \ let mut slice: &mut [_] = &mut ['a', 'b', 'c', 'd'];\ let mut tail = slice.split_off_mut(2..).unwrap();\ \ assert_eq!(slice, &mut ['a', 'b']);\ assert_eq!(tail, &mut ['c', 'd']);\ \ Getting `None` when `range` is out of bounds:\ \ let mut slice: &mut [_] = &mut ['a', 'b', 'c', 'd'];\ \ assert_eq!(None, slice.split_off_mut(5..));\ assert_eq!(None, slice.split_off_mut(..5));\ assert_eq!(None, slice.split_off_mut(..=4));\ let expected: &mut [_] = &mut ['a', 'b', 'c', 'd'];\ assert_eq!(Some(expected), slice.split_off_mut(..4));\ \ 1.87.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#5010)\ \ #### pub fn [split\_off\_first](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.split_off_first)\ <'a>(self: &mut &'a [\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ ) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option")\ <[&'a T](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ \>\ \ Removes the first element of the slice and returns a reference to it.\ \ Returns `None` if the slice is empty.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#examples-110)\ Examples\ \ let mut slice: &[_] = &['a', 'b', 'c'];\ let first = slice.split_off_first().unwrap();\ \ assert_eq!(slice, &['b', 'c']);\ assert_eq!(first, &'a');\ \ 1.87.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#5035)\ \ #### pub fn [split\_off\_first\_mut](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.split_off_first_mut)\ <'a>(self: &mut &'a mut [\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ ) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option")\ <[&'a mut T](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ \>\ \ Removes the first element of the slice and returns a mutable reference to it.\ \ Returns `None` if the slice is empty.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#examples-111)\ Examples\ \ let mut slice: &mut [_] = &mut ['a', 'b', 'c'];\ let first = slice.split_off_first_mut().unwrap();\ *first = 'd';\ \ assert_eq!(slice, &['b', 'c']);\ assert_eq!(first, &'d');\ \ 1.87.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#5060)\ \ #### pub fn [split\_off\_last](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.split_off_last)\ <'a>(self: &mut &'a [\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ ) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option")\ <[&'a T](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ \>\ \ Removes the last element of the slice and returns a reference to it.\ \ Returns `None` if the slice is empty.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#examples-112)\ Examples\ \ let mut slice: &[_] = &['a', 'b', 'c'];\ let last = slice.split_off_last().unwrap();\ \ assert_eq!(slice, &['a', 'b']);\ assert_eq!(last, &'c');\ \ 1.87.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#5085)\ \ #### pub fn [split\_off\_last\_mut](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.split_off_last_mut)\ <'a>(self: &mut &'a mut [\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ ) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option")\ <[&'a mut T](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ \>\ \ Removes the last element of the slice and returns a mutable reference to it.\ \ Returns `None` if the slice is empty.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#examples-113)\ Examples\ \ let mut slice: &mut [_] = &mut ['a', 'b', 'c'];\ let last = slice.split_off_last_mut().unwrap();\ *last = 'd';\ \ assert_eq!(slice, &['a', 'b']);\ assert_eq!(last, &'d');\ \ 1.86.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#5142-5147)\ \ #### pub unsafe fn [get\_disjoint\_unchecked\_mut](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.get_disjoint_unchecked_mut)\ ( &mut self, indices: [\[I; N\]](https://doc.rust-lang.org/nightly/std/primitive.array.html)\ , ) -> \[&mut >::[Output](https://doc.rust-lang.org/nightly/core/slice/index/trait.SliceIndex.html#associatedtype.Output "type core::slice::index::SliceIndex::Output")\ ; [N](https://doc.rust-lang.org/nightly/std/primitive.array.html)\ \]\ \ where I: [GetDisjointMutIndex](https://doc.rust-lang.org/nightly/core/slice/trait.GetDisjointMutIndex.html "trait core::slice::GetDisjointMutIndex")\ + [SliceIndex](https://doc.rust-lang.org/nightly/core/slice/index/trait.SliceIndex.html "trait core::slice::index::SliceIndex")\ <[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ \>,\ \ Returns mutable references to many indices at once, without doing any checks.\ \ An index can be either a `usize`, a [`Range`](https://doc.rust-lang.org/nightly/core/ops/range/struct.Range.html "struct core::ops::range::Range")\ or a [`RangeInclusive`](https://doc.rust-lang.org/nightly/core/ops/range/struct.RangeInclusive.html "struct core::ops::range::RangeInclusive")\ . Note that this method takes an array, so all indices must be of the same type. If passed an array of `usize`s this method gives back an array of mutable references to single elements, while if passed an array of ranges it gives back an array of mutable references to slices.\ \ For a safe alternative see [`get_disjoint_mut`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.get_disjoint_mut "method slice::get_disjoint_mut")\ .\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#safety-16)\ Safety\ \ Calling this method with overlapping or out-of-bounds indices is _[undefined behavior](https://doc.rust-lang.org/reference/behavior-considered-undefined.html)\ _ even if the resulting references are not used.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#examples-114)\ Examples\ \ let x = &mut [1, 2, 4];\ \ unsafe {\ let [a, b] = x.get_disjoint_unchecked_mut([0, 2]);\ *a *= 10;\ *b *= 100;\ }\ assert_eq!(x, &[10, 2, 400]);\ \ unsafe {\ let [a, b] = x.get_disjoint_unchecked_mut([0..1, 1..3]);\ a[0] = 8;\ b[0] = 88;\ b[1] = 888;\ }\ assert_eq!(x, &[8, 88, 888]);\ \ unsafe {\ let [a, b] = x.get_disjoint_unchecked_mut([1..=2, 0..=0]);\ a[0] = 11;\ a[1] = 111;\ b[0] = 1;\ }\ assert_eq!(x, &[1, 11, 111]);\ \ 1.86.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#5209-5214)\ \ #### pub fn [get\_disjoint\_mut](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.get_disjoint_mut)\ ( &mut self, indices: [\[I; N\]](https://doc.rust-lang.org/nightly/std/primitive.array.html)\ , ) -> [Result](https://doc.rust-lang.org/nightly/core/result/enum.Result.html "enum core::result::Result")\ <\[&mut >::[Output](https://doc.rust-lang.org/nightly/core/slice/index/trait.SliceIndex.html#associatedtype.Output "type core::slice::index::SliceIndex::Output")\ ; [N](https://doc.rust-lang.org/nightly/std/primitive.array.html)\ \], [GetDisjointMutError](https://doc.rust-lang.org/nightly/core/slice/enum.GetDisjointMutError.html "enum core::slice::GetDisjointMutError")\ \>\ \ where I: [GetDisjointMutIndex](https://doc.rust-lang.org/nightly/core/slice/trait.GetDisjointMutIndex.html "trait core::slice::GetDisjointMutIndex")\ + [SliceIndex](https://doc.rust-lang.org/nightly/core/slice/index/trait.SliceIndex.html "trait core::slice::index::SliceIndex")\ <[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ \>,\ \ Returns mutable references to many indices at once.\ \ An index can be either a `usize`, a [`Range`](https://doc.rust-lang.org/nightly/core/ops/range/struct.Range.html "struct core::ops::range::Range")\ or a [`RangeInclusive`](https://doc.rust-lang.org/nightly/core/ops/range/struct.RangeInclusive.html "struct core::ops::range::RangeInclusive")\ . Note that this method takes an array, so all indices must be of the same type. If passed an array of `usize`s this method gives back an array of mutable references to single elements, while if passed an array of ranges it gives back an array of mutable references to slices.\ \ Returns an error if any index is out-of-bounds, or if there are overlapping indices. An empty range is not considered to overlap if it is located at the beginning or at the end of another range, but is considered to overlap if it is located in the middle.\ \ This method does a O(n^2) check to check that there are no overlapping indices, so be careful when passing many indices.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#examples-115)\ Examples\ \ let v = &mut [1, 2, 3];\ if let Ok([a, b]) = v.get_disjoint_mut([0, 2]) {\ *a = 413;\ *b = 612;\ }\ assert_eq!(v, &[413, 2, 612]);\ \ if let Ok([a, b]) = v.get_disjoint_mut([0..1, 1..3]) {\ a[0] = 8;\ b[0] = 88;\ b[1] = 888;\ }\ assert_eq!(v, &[8, 88, 888]);\ \ if let Ok([a, b]) = v.get_disjoint_mut([1..=2, 0..=0]) {\ a[0] = 11;\ a[1] = 111;\ b[0] = 1;\ }\ assert_eq!(v, &[1, 11, 111]);\ \ 1.94.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#5260)\ \ #### pub fn [element\_offset](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.element_offset)\ (&self, element: [&T](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ ) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option")\ <[usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html)\ \>\ \ Returns the index that an element reference points to.\ \ Returns `None` if `element` does not point to the start of an element within the slice.\ \ This method is useful for extending slice iterators like [`slice::split`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.split "method slice::split")\ .\ \ Note that this uses pointer arithmetic and **does not compare elements**. To find the index of an element via comparison, use [`.iter().position()`](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.position "method core::iter::traits::iterator::Iterator::position")\ instead.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#panics-37)\ Panics\ \ Panics if `T` is zero-sized.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#examples-116)\ Examples\ \ Basic usage:\ \ let nums: &[u32] = &[1, 7, 1, 1];\ let num = &nums[2];\ \ assert_eq!(num, &1);\ assert_eq!(nums.element_offset(num), Some(2));\ \ Returning `None` with an unaligned element:\ \ let arr: &[[u32; 2]] = &[[0, 1], [2, 3]];\ let flat_arr: &[u32] = arr.as_flattened();\ \ let ok_elm: &[u32; 2] = flat_arr[0..2].try_into().unwrap();\ let weird_elm: &[u32; 2] = flat_arr[1..3].try_into().unwrap();\ \ assert_eq!(ok_elm, &[0, 1]);\ assert_eq!(weird_elm, &[1, 2]);\ \ assert_eq!(arr.element_offset(ok_elm), Some(0)); // Points to element 0\ assert_eq!(arr.element_offset(weird_elm), None); // Points between element 0 and 1\ \ [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#5314)\ \ #### pub fn [subslice\_range](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.subslice_range)\ (&self, subslice: &[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ ) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option")\ <[Range](https://doc.rust-lang.org/nightly/core/ops/range/struct.Range.html "struct core::ops::range::Range")\ <[usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html)\ \>>\ \ 🔬This is a nightly-only experimental API. (`substr_range`)\ \ Returns the range of indices that a subslice points to.\ \ Returns `None` if `subslice` does not point within the slice or if it is not aligned with the elements in the slice.\ \ This method **does not compare elements**. Instead, this method finds the location in the slice that `subslice` was obtained from. To find the index of a subslice via comparison, instead use [`.windows()`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.windows "method slice::windows")\ [`.position()`](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.position "method core::iter::traits::iterator::Iterator::position")\ .\ \ This method is useful for extending slice iterators like [`slice::split`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.split "method slice::split")\ .\ \ Note that this may return a false positive (either `Some(0..0)` or `Some(self.len()..self.len())`) if `subslice` has a length of zero and points to the beginning or end of another, separate, slice.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#panics-38)\ Panics\ \ Panics if `T` is zero-sized.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#examples-117)\ Examples\ \ Basic usage:\ \ #![feature(substr_range)]\ \ let nums = &[0, 5, 10, 0, 0, 5];\ \ let mut iter = nums\ .split(|t| *t == 0)\ .map(|n| nums.subslice_range(n).unwrap());\ \ assert_eq!(iter.next(), Some(0..0));\ assert_eq!(iter.next(), Some(1..3));\ assert_eq!(iter.next(), Some(4..4));\ assert_eq!(iter.next(), Some(5..6));\ \ [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#5341)\ \ #### pub fn [as\_slice](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.as_slice-1)\ (&self) -> &[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ \ 🔬This is a nightly-only experimental API. (`str_as_str`)\ \ Returns the same slice `&[T]`.\ \ This method is redundant when used directly on `&[T]`, but it helps dereferencing other “container” types to slices, for example `Box<[T]>` or `Arc<[T]>`.\ \ [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#5352)\ \ #### pub fn [as\_mut\_slice](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.as_mut_slice)\ (&mut self) -> &mut [\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ \ 🔬This is a nightly-only experimental API. (`str_as_str`)\ \ Returns the same slice `&mut [T]`.\ \ This method is redundant when used directly on `&mut [T]`, but it helps dereferencing other “container” types to slices, for example `Box<[T]>` or `MutexGuard<[T]>`.\ \ 1.79.0 · [Source](https://doc.rust-lang.org/nightly/src/core/str/lossy.rs.html#45)\ \ #### pub fn [utf8\_chunks](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.utf8_chunks)\ (&self) -> [Utf8Chunks](https://doc.rust-lang.org/nightly/core/str/lossy/struct.Utf8Chunks.html "struct core::str::lossy::Utf8Chunks")\ <'\_>\ \ Creates an iterator over the contiguous valid UTF-8 ranges of this slice, and the non-UTF-8 fragments in between.\ \ See the [`Utf8Chunk`](https://doc.rust-lang.org/nightly/core/str/lossy/struct.Utf8Chunk.html "struct core::str::lossy::Utf8Chunk")\ type for documentation of the items yielded by this iterator.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#examples-118)\ Examples\ \ This function formats arbitrary but mostly-UTF-8 bytes into Rust source code in the form of a C-string literal (`c"..."`).\ \ use std::fmt::Write as _;\ \ pub fn cstr_literal(bytes: &[u8]) -> String {\ let mut repr = String::new();\ repr.push_str("c\"");\ for chunk in bytes.utf8_chunks() {\ for ch in chunk.valid().chars() {\ // Escapes \0, \t, \r, \n, \\, \', \", and uses \u{...} for non-printable characters.\ write!(repr, "{}", ch.escape_debug()).unwrap();\ }\ for byte in chunk.invalid() {\ write!(repr, "\\x{:02X}", byte).unwrap();\ }\ }\ repr.push('"');\ repr\ }\ \ fn main() {\ let lit = cstr_literal(b"\xferris the \xf0\x9f\xa6\x80\x07");\ let expected = stringify!(c"\xFErris the 🦀\u{7}");\ assert_eq!(lit, expected);\ }\ \ 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/alloc/slice.rs.html#131-133)\ \ #### pub fn [sort](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.sort)\ (&mut self)\ \ where T: [Ord](https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html "trait core::cmp::Ord")\ ,\ \ Available on **non-`no_global_oom_handling`** only.\ \ Sorts the slice in ascending order, preserving initial order of equal elements.\ \ This sort is stable (i.e., does not reorder equal elements) and _O_(_n_ \* log(_n_)) worst-case.\ \ If the implementation of [`Ord`](https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html "trait core::cmp::Ord")\ for `T` does not implement a [total order](https://en.wikipedia.org/wiki/Total_order)\ , the function may panic; even if the function exits normally, the resulting order of elements in the slice is unspecified. See also the note on panicking below.\ \ When applicable, unstable sorting is preferred because it is generally faster than stable sorting and it doesn’t allocate auxiliary memory. See [`sort_unstable`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.sort_unstable "method slice::sort_unstable")\ . The exception are partially sorted slices, which may be better served with `slice::sort`.\ \ Sorting types that only implement [`PartialOrd`](https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html "trait core::cmp::PartialOrd")\ such as [`f32`](https://doc.rust-lang.org/nightly/std/primitive.f32.html "primitive f32")\ and [`f64`](https://doc.rust-lang.org/nightly/std/primitive.f64.html "primitive f64")\ require additional precautions. For example, `f32::NAN != f32::NAN`, which doesn’t fulfill the reflexivity requirement of [`Ord`](https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html "trait core::cmp::Ord")\ . By using an alternative comparison function with `slice::sort_by` such as [`f32::total_cmp`](https://doc.rust-lang.org/nightly/std/primitive.f32.html#method.total_cmp "method f32::total_cmp")\ or [`f64::total_cmp`](https://doc.rust-lang.org/nightly/std/primitive.f64.html#method.total_cmp "method f64::total_cmp")\ that defines a [total order](https://en.wikipedia.org/wiki/Total_order)\ users can sort slices containing floating-point values. Alternatively, if all values in the slice are guaranteed to be in a subset for which [`PartialOrd::partial_cmp`](https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#tymethod.partial_cmp "method core::cmp::PartialOrd::partial_cmp")\ forms a [total order](https://en.wikipedia.org/wiki/Total_order)\ , it’s possible to sort the slice with `sort_by(|a, b| a.partial_cmp(b).unwrap())`.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#current-implementation-6)\ Current implementation\ \ The current implementation is based on [driftsort](https://github.com/Voultapher/driftsort)\ by Orson Peters and Lukas Bergdoll, which combines the fast average case of quicksort with the fast worst case and partial run detection of mergesort, achieving linear time on fully sorted and reversed inputs. On inputs with k distinct elements, the expected time to sort the data is _O_(_n_ \* log(_k_)).\ \ The auxiliary memory allocation behavior depends on the input length. Short slices are handled without allocation, medium sized slices allocate `self.len()` and beyond that it clamps at `self.len() / 2`.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#panics-39)\ Panics\ \ May panic if the implementation of [`Ord`](https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html "trait core::cmp::Ord")\ for `T` does not implement a [total order](https://en.wikipedia.org/wiki/Total_order)\ , or if the [`Ord`](https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html "trait core::cmp::Ord")\ implementation itself panics.\ \ All safe functions on slices preserve the invariant that even if the function panics, all original elements will remain in the slice and any possible modifications via interior mutability are observed in the input. This ensures that recovery code (for instance inside of a `Drop` or following a `catch_unwind`) will still have access to all the original elements. For instance, if the slice belongs to a `Vec`, the `Vec::drop` method will be able to dispose of all contained elements.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#examples-119)\ Examples\ \ let mut v = [4, -5, 1, -3, 2];\ \ v.sort();\ assert_eq!(v, [-5, -3, 1, 2, 4]);\ \ 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/alloc/slice.rs.html#192-194)\ \ #### pub fn [sort\_by](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.sort_by)\ (&mut self, compare: F)\ \ where F: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut")\ ([&T](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ , [&T](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ ) -> [Ordering](https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html "enum core::cmp::Ordering")\ ,\ \ Available on **non-`no_global_oom_handling`** only.\ \ Sorts the slice in ascending order with a comparison function, preserving initial order of equal elements.\ \ This sort is stable (i.e., does not reorder equal elements) and _O_(_n_ \* log(_n_)) worst-case.\ \ If the comparison function `compare` does not implement a [total order](https://en.wikipedia.org/wiki/Total_order)\ , the function may panic; even if the function exits normally, the resulting order of elements in the slice is unspecified. See also the note on panicking below.\ \ For example `|a, b| (a - b).cmp(a)` is a comparison function that is neither transitive nor reflexive nor total, `a < b < c < a` with `a = 1, b = 2, c = 3`. For more information and examples see the [`Ord`](https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html "trait core::cmp::Ord")\ documentation.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#current-implementation-7)\ Current implementation\ \ The current implementation is based on [driftsort](https://github.com/Voultapher/driftsort)\ by Orson Peters and Lukas Bergdoll, which combines the fast average case of quicksort with the fast worst case and partial run detection of mergesort, achieving linear time on fully sorted and reversed inputs. On inputs with k distinct elements, the expected time to sort the data is _O_(_n_ \* log(_k_)).\ \ The auxiliary memory allocation behavior depends on the input length. Short slices are handled without allocation, medium sized slices allocate `self.len()` and beyond that it clamps at `self.len() / 2`.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#panics-40)\ Panics\ \ May panic if `compare` does not implement a [total order](https://en.wikipedia.org/wiki/Total_order)\ , or if `compare` itself panics.\ \ All safe functions on slices preserve the invariant that even if the function panics, all original elements will remain in the slice and any possible modifications via interior mutability are observed in the input. This ensures that recovery code (for instance inside of a `Drop` or following a `catch_unwind`) will still have access to all the original elements. For instance, if the slice belongs to a `Vec`, the `Vec::drop` method will be able to dispose of all contained elements.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#examples-120)\ Examples\ \ let mut v = [4, -5, 1, -3, 2];\ v.sort_by(|a, b| a.cmp(b));\ assert_eq!(v, [-5, -3, 1, 2, 4]);\ \ // reverse sorting\ v.sort_by(|a, b| b.cmp(a));\ assert_eq!(v, [4, 2, 1, -3, -5]);\ \ 1.7.0 · [Source](https://doc.rust-lang.org/nightly/src/alloc/slice.rs.html#247-250)\ \ #### pub fn [sort\_by\_key](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.sort_by_key)\ (&mut self, f: F)\ \ where F: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut")\ ([&T](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ ) -> K, K: [Ord](https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html "trait core::cmp::Ord")\ ,\ \ Available on **non-`no_global_oom_handling`** only.\ \ Sorts the slice in ascending order with a key extraction function, preserving initial order of equal elements.\ \ This sort is stable (i.e., does not reorder equal elements) and _O_(_m_ \* _n_ \* log(_n_)) worst-case, where the key function is _O_(_m_).\ \ If the implementation of [`Ord`](https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html "trait core::cmp::Ord")\ for `K` does not implement a [total order](https://en.wikipedia.org/wiki/Total_order)\ , the function may panic; even if the function exits normally, the resulting order of elements in the slice is unspecified. See also the note on panicking below.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#current-implementation-8)\ Current implementation\ \ The current implementation is based on [driftsort](https://github.com/Voultapher/driftsort)\ by Orson Peters and Lukas Bergdoll, which combines the fast average case of quicksort with the fast worst case and partial run detection of mergesort, achieving linear time on fully sorted and reversed inputs. On inputs with k distinct elements, the expected time to sort the data is _O_(_n_ \* log(_k_)).\ \ The auxiliary memory allocation behavior depends on the input length. Short slices are handled without allocation, medium sized slices allocate `self.len()` and beyond that it clamps at `self.len() / 2`.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#panics-41)\ Panics\ \ May panic if the implementation of [`Ord`](https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html "trait core::cmp::Ord")\ for `K` does not implement a [total order](https://en.wikipedia.org/wiki/Total_order)\ , or if the [`Ord`](https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html "trait core::cmp::Ord")\ implementation or the key-function `f` panics.\ \ All safe functions on slices preserve the invariant that even if the function panics, all original elements will remain in the slice and any possible modifications via interior mutability are observed in the input. This ensures that recovery code (for instance inside of a `Drop` or following a `catch_unwind`) will still have access to all the original elements. For instance, if the slice belongs to a `Vec`, the `Vec::drop` method will be able to dispose of all contained elements.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#examples-121)\ Examples\ \ let mut v = [4i32, -5, 1, -3, 2];\ \ v.sort_by_key(|k| k.abs());\ assert_eq!(v, [1, 2, -3, 4, -5]);\ \ 1.34.0 · [Source](https://doc.rust-lang.org/nightly/src/alloc/slice.rs.html#312-315)\ \ #### pub fn [sort\_by\_cached\_key](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.sort_by_cached_key)\ (&mut self, f: F)\ \ where F: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut")\ ([&T](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ ) -> K, K: [Ord](https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html "trait core::cmp::Ord")\ ,\ \ Available on **non-`no_global_oom_handling`** only.\ \ Sorts the slice in ascending order with a key extraction function, preserving initial order of equal elements.\ \ This sort is stable (i.e., does not reorder equal elements) and _O_(_m_ \* _n_ + _n_ \* log(_n_)) worst-case, where the key function is _O_(_m_).\ \ During sorting, the key function is called at most once per element, by using temporary storage to remember the results of key evaluation. The order of calls to the key function is unspecified and may change in future versions of the standard library.\ \ If the implementation of [`Ord`](https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html "trait core::cmp::Ord")\ for `K` does not implement a [total order](https://en.wikipedia.org/wiki/Total_order)\ , the function may panic; even if the function exits normally, the resulting order of elements in the slice is unspecified. See also the note on panicking below.\ \ For simple key functions (e.g., functions that are property accesses or basic operations), [`sort_by_key`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.sort_by_key "method slice::sort_by_key")\ is likely to be faster.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#current-implementation-9)\ Current implementation\ \ The current implementation is based on [instruction-parallel-network sort](https://github.com/Voultapher/sort-research-rs/tree/main/ipnsort)\ by Lukas Bergdoll, which combines the fast average case of randomized quicksort with the fast worst case of heapsort, while achieving linear time on fully sorted and reversed inputs. And _O_(_k_ \* log(_n_)) where _k_ is the number of distinct elements in the input. It leverages superscalar out-of-order execution capabilities commonly found in CPUs, to efficiently perform the operation.\ \ In the worst case, the algorithm allocates temporary storage in a `Vec<(K, usize)>` the length of the slice.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#panics-42)\ Panics\ \ May panic if the implementation of [`Ord`](https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html "trait core::cmp::Ord")\ for `K` does not implement a [total order](https://en.wikipedia.org/wiki/Total_order)\ , or if the [`Ord`](https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html "trait core::cmp::Ord")\ implementation panics.\ \ All safe functions on slices preserve the invariant that even if the function panics, all original elements will remain in the slice and any possible modifications via interior mutability are observed in the input. This ensures that recovery code (for instance inside of a `Drop` or following a `catch_unwind`) will still have access to all the original elements. For instance, if the slice belongs to a `Vec`, the `Vec::drop` method will be able to dispose of all contained elements.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#examples-122)\ Examples\ \ let mut v = [4i32, -5, 1, -3, 2, 10];\ \ // Strings are sorted by lexicographical order.\ v.sort_by_cached_key(|k| k.to_string());\ assert_eq!(v, [-3, -5, 1, 10, 2, 4]);\ \ 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/alloc/slice.rs.html#372-374)\ \ #### pub fn [to\_vec](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.to_vec)\ (&self) -> [Vec](https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html "struct alloc::vec::Vec")\ \ \ where T: [Clone](https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html "trait core::clone::Clone")\ ,\ \ Available on **non-`no_global_oom_handling`** only.\ \ Copies `self` into a new `Vec`.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#examples-123)\ Examples\ \ let s = [10, 40, 30];\ let x = s.to_vec();\ // Here, `s` and `x` can be modified independently.\ \ [Source](https://doc.rust-lang.org/nightly/src/alloc/slice.rs.html#396-398)\ \ #### pub fn [to\_vec\_in](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.to_vec_in)\ (&self, alloc: A) -> [Vec](https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html "struct alloc::vec::Vec")\ \ \ where A: [Allocator](https://doc.rust-lang.org/nightly/core/alloc/trait.Allocator.html "trait core::alloc::Allocator")\ , T: [Clone](https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html "trait core::clone::Clone")\ ,\ \ 🔬This is a nightly-only experimental API. (`allocator_api`)\ \ Available on **non-`no_global_oom_handling`** only.\ \ Copies `self` into a new `Vec` with an allocator.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#examples-124)\ Examples\ \ #![feature(allocator_api)]\ \ use std::alloc::System;\ \ let s = [10, 40, 30];\ let x = s.to_vec_in(System);\ // Here, `s` and `x` can be modified independently.\ \ 1.40.0 · [Source](https://doc.rust-lang.org/nightly/src/alloc/slice.rs.html#509-511)\ \ #### pub fn [repeat](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.repeat)\ (&self, n: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html)\ ) -> [Vec](https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html "struct alloc::vec::Vec")\ \ \ where T: [Copy](https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html "trait core::marker::Copy")\ ,\ \ Available on **non-`no_global_oom_handling`** only.\ \ Creates a vector by copying a slice `n` times.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#panics-43)\ Panics\ \ This function will panic if the capacity would overflow.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#examples-125)\ Examples\ \ assert_eq!([1, 2].repeat(3), vec![1, 2, 1, 2, 1, 2]);\ \ A panic upon overflow:\ \ [ⓘ](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html# "This example panics")\ \ // this will panic at runtime\ b"0123456789abcdef".repeat(usize::MAX);\ \ 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/alloc/slice.rs.html#577-579)\ \ #### pub fn [concat](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.concat)\ (&self) -> <[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ as [Concat](https://doc.rust-lang.org/nightly/alloc/slice/trait.Concat.html "trait alloc::slice::Concat")\ >::[Output](https://doc.rust-lang.org/nightly/alloc/slice/trait.Concat.html#associatedtype.Output "type alloc::slice::Concat::Output")\ [ⓘ](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#)\ \ where [\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ : [Concat](https://doc.rust-lang.org/nightly/alloc/slice/trait.Concat.html "trait alloc::slice::Concat")\ , Item: ?[Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized")\ ,\ \ Flattens a slice of `T` into a single value `Self::Output`.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#examples-126)\ Examples\ \ assert_eq!(["hello", "world"].concat(), "helloworld");\ assert_eq!([[1, 2], [3, 4]].concat(), [1, 2, 3, 4]);\ \ 1.3.0 · [Source](https://doc.rust-lang.org/nightly/src/alloc/slice.rs.html#596-598)\ \ #### pub fn [join](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.join)\ ( &self, sep: Separator, ) -> <[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ as [Join](https://doc.rust-lang.org/nightly/alloc/slice/trait.Join.html "trait alloc::slice::Join")\ >::[Output](https://doc.rust-lang.org/nightly/alloc/slice/trait.Join.html#associatedtype.Output "type alloc::slice::Join::Output")\ [ⓘ](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#)\ \ where [\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ : [Join](https://doc.rust-lang.org/nightly/alloc/slice/trait.Join.html "trait alloc::slice::Join")\ ,\ \ Flattens a slice of `T` into a single value `Self::Output`, placing a given separator between each.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#examples-127)\ Examples\ \ assert_eq!(["hello", "world"].join(" "), "hello world");\ assert_eq!([[1, 2], [3, 4]].join(&0), [1, 2, 0, 3, 4]);\ assert_eq!([[1, 2], [3, 4]].join(&[0, 0][..]), [1, 2, 0, 0, 3, 4]);\ \ 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/alloc/slice.rs.html#616-618)\ \ #### pub fn [connect](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.connect)\ ( &self, sep: Separator, ) -> <[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ as [Join](https://doc.rust-lang.org/nightly/alloc/slice/trait.Join.html "trait alloc::slice::Join")\ >::[Output](https://doc.rust-lang.org/nightly/alloc/slice/trait.Join.html#associatedtype.Output "type alloc::slice::Join::Output")\ [ⓘ](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#)\ \ where [\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ : [Join](https://doc.rust-lang.org/nightly/alloc/slice/trait.Join.html "trait alloc::slice::Join")\ ,\ \ 👎Deprecated since 1.3.0:\ \ renamed to join\ \ Flattens a slice of `T` into a single value `Self::Output`, placing a given separator between each.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#examples-128)\ Examples\ \ assert_eq!(["hello", "world"].connect(" "), "hello world");\ assert_eq!([[1, 2], [3, 4]].connect(&0), [1, 2, 0, 3, 4]);\ \ 1.23.0 · [Source](https://doc.rust-lang.org/nightly/src/alloc/slice.rs.html#640)\ \ #### pub fn [to\_ascii\_uppercase](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.to_ascii_uppercase)\ (&self) -> [Vec](https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html "struct alloc::vec::Vec")\ <[u8](https://doc.rust-lang.org/nightly/std/primitive.u8.html)\ \> [ⓘ](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#)\ \ Available on **non-`no_global_oom_handling`** only.\ \ Returns a vector containing a copy of this slice where each byte is mapped to its ASCII upper case equivalent.\ \ ASCII letters ‘a’ to ‘z’ are mapped to ‘A’ to ‘Z’, but non-ASCII letters are unchanged.\ \ To uppercase the value in-place, use [`make_ascii_uppercase`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.make_ascii_uppercase "method slice::make_ascii_uppercase")\ .\ \ 1.23.0 · [Source](https://doc.rust-lang.org/nightly/src/alloc/slice.rs.html#661)\ \ #### pub fn [to\_ascii\_lowercase](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.to_ascii_lowercase)\ (&self) -> [Vec](https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html "struct alloc::vec::Vec")\ <[u8](https://doc.rust-lang.org/nightly/std/primitive.u8.html)\ \> [ⓘ](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#)\ \ Available on **non-`no_global_oom_handling`** only.\ \ Returns a vector containing a copy of this slice where each byte is mapped to its ASCII lower case equivalent.\ \ ASCII letters ‘A’ to ‘Z’ are mapped to ‘a’ to ‘z’, but non-ASCII letters are unchanged.\ \ To lowercase the value in-place, use [`make_ascii_lowercase`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.make_ascii_lowercase "method slice::make_ascii_lowercase")\ .\ \ Trait Implementations[§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#trait-implementations)\ \ ----------------------------------------------------------------------------------------------------------------------------------\ \ [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/mutable.rs.html#982-986)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#impl-AsRef%3C%5Bu8%5D%3E-for-%26MutableBuffer)\ \ ### impl [AsRef](https://doc.rust-lang.org/nightly/core/convert/trait.AsRef.html "trait core::convert::AsRef")\ <\[[u8](https://doc.rust-lang.org/nightly/std/primitive.u8.html)\ \]> for &[MutableBuffer](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html "struct arrow_buffer::buffer::MutableBuffer")\ \ [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/mutable.rs.html#983-985)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.as_ref)\ \ #### fn [as\_ref](https://doc.rust-lang.org/nightly/core/convert/trait.AsRef.html#tymethod.as_ref)\ (&self) -> &\[[u8](https://doc.rust-lang.org/nightly/std/primitive.u8.html)\ \] [ⓘ](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#)\ \ Converts this type into a shared reference of the (usually inferred) input type.\ \ [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/mutable.rs.html#98)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#impl-Debug-for-MutableBuffer)\ \ ### impl [Debug](https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html "trait core::fmt::Debug")\ for [MutableBuffer](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html "struct arrow_buffer::buffer::MutableBuffer")\ \ [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/mutable.rs.html#98)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.fmt)\ \ #### fn [fmt](https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt)\ (&self, f: &mut [Formatter](https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html "struct core::fmt::Formatter")\ <'\_>) -> [Result](https://doc.rust-lang.org/nightly/core/fmt/type.Result.html "type core::fmt::Result")\ \ Formats the value using the given formatter. [Read more](https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt)\ \ [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/mutable.rs.html#962-966)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#impl-Default-for-MutableBuffer)\ \ ### impl [Default](https://doc.rust-lang.org/nightly/core/default/trait.Default.html "trait core::default::Default")\ for [MutableBuffer](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html "struct arrow_buffer::buffer::MutableBuffer")\ \ [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/mutable.rs.html#963-965)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.default)\ \ #### fn [default](https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default)\ () -> Self\ \ Returns the “default value” for a type. [Read more](https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default)\ \ [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/mutable.rs.html#968-974)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#impl-Deref-for-MutableBuffer)\ \ ### impl [Deref](https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html "trait core::ops::deref::Deref")\ for [MutableBuffer](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html "struct arrow_buffer::buffer::MutableBuffer")\ \ [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/mutable.rs.html#969)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#associatedtype.Target)\ \ #### type [Target](https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html#associatedtype.Target)\ = \[[u8](https://doc.rust-lang.org/nightly/std/primitive.u8.html)\ \]\ \ The resulting type after dereferencing.\ \ [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/mutable.rs.html#971-973)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.deref)\ \ #### fn [deref](https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html#tymethod.deref)\ (&self) -> &\[[u8](https://doc.rust-lang.org/nightly/std/primitive.u8.html)\ \] [ⓘ](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#)\ \ Dereferences the value.\ \ [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/mutable.rs.html#976-980)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#impl-DerefMut-for-MutableBuffer)\ \ ### impl [DerefMut](https://doc.rust-lang.org/nightly/core/ops/deref/trait.DerefMut.html "trait core::ops::deref::DerefMut")\ for [MutableBuffer](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html "struct arrow_buffer::buffer::MutableBuffer")\ \ [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/mutable.rs.html#977-979)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.deref_mut)\ \ #### fn [deref\_mut](https://doc.rust-lang.org/nightly/core/ops/deref/trait.DerefMut.html#tymethod.deref_mut)\ (&mut self) -> &mut \[[u8](https://doc.rust-lang.org/nightly/std/primitive.u8.html)\ \] [ⓘ](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#)\ \ Mutably dereferences the value.\ \ [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/mutable.rs.html#988-995)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#impl-Drop-for-MutableBuffer)\ \ ### impl [Drop](https://doc.rust-lang.org/nightly/core/ops/drop/trait.Drop.html "trait core::ops::drop::Drop")\ for [MutableBuffer](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html "struct arrow_buffer::buffer::MutableBuffer")\ \ [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/mutable.rs.html#989-994)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.drop)\ \ #### fn [drop](https://doc.rust-lang.org/nightly/core/ops/drop/trait.Drop.html#tymethod.drop)\ (&mut self)\ \ Executes the destructor for this type. [Read more](https://doc.rust-lang.org/nightly/core/ops/drop/trait.Drop.html#tymethod.drop)\ \ [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/mutable.rs.html#785-791)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#impl-Extend%3CA%3E-for-MutableBuffer)\ \ ### impl [Extend](https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.Extend.html "trait core::iter::traits::collect::Extend")\ for [MutableBuffer](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html "struct arrow_buffer::buffer::MutableBuffer")\ \ [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/mutable.rs.html#787-790)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.extend)\ \ #### fn [extend](https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.Extend.html#tymethod.extend)\ >(&mut self, iter: T)\ \ Extends a collection with the contents of an iterator. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.Extend.html#tymethod.extend)\ \ [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/collect.rs.html#420)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.extend_one)\ \ #### fn [extend\_one](https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.Extend.html#method.extend_one)\ (&mut self, item: A)\ \ 🔬This is a nightly-only experimental API. (`extend_one`)\ \ Extends a collection with exactly one element.\ \ [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/collect.rs.html#428)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.extend_reserve)\ \ #### fn [extend\_reserve](https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.Extend.html#method.extend_reserve)\ (&mut self, additional: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html)\ )\ \ 🔬This is a nightly-only experimental API. (`extend_one`)\ \ Reserves capacity in a collection for the given number of additional elements. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.Extend.html#method.extend_reserve)\ \ [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/immutable.rs.html#559-564)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#impl-From%3CMutableBuffer%3E-for-Buffer)\ \ ### impl [From](https://doc.rust-lang.org/nightly/core/convert/trait.From.html "trait core::convert::From")\ <[MutableBuffer](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html "struct arrow_buffer::buffer::MutableBuffer")\ \> for [Buffer](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.Buffer.html "struct arrow_buffer::buffer::Buffer")\ \ [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/immutable.rs.html#561-563)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.from)\ \ #### fn [from](https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from)\ (buffer: [MutableBuffer](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html "struct arrow_buffer::buffer::MutableBuffer")\ ) -> Self\ \ Converts to this type from the input type.\ \ [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/scalar.rs.html#178-182)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#impl-From%3CMutableBuffer%3E-for-ScalarBuffer%3CT%3E)\ \ ### impl [From](https://doc.rust-lang.org/nightly/core/convert/trait.From.html "trait core::convert::From")\ <[MutableBuffer](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html "struct arrow_buffer::buffer::MutableBuffer")\ \> for [ScalarBuffer](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.ScalarBuffer.html "struct arrow_buffer::buffer::ScalarBuffer")\ \ \ [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/scalar.rs.html#179-181)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.from-2)\ \ #### fn [from](https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from)\ (value: [MutableBuffer](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html "struct arrow_buffer::buffer::MutableBuffer")\ ) -> Self\ \ Converts to this type from the input type.\ \ [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/mutable.rs.html#793-812)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#impl-From%3CVec%3CT%3E%3E-for-MutableBuffer)\ \ ### impl [From](https://doc.rust-lang.org/nightly/core/convert/trait.From.html "trait core::convert::From")\ <[Vec](https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html "struct alloc::vec::Vec")\ > for [MutableBuffer](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html "struct arrow_buffer::buffer::MutableBuffer")\ \ [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/mutable.rs.html#794-811)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.from-1)\ \ #### fn [from](https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from)\ (value: [Vec](https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html "struct alloc::vec::Vec")\ ) -> Self\ \ Converts to this type from the input type.\ \ [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/mutable.rs.html#1089-1095)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#impl-FromIterator%3CT%3E-for-MutableBuffer)\ \ ### impl [FromIterator](https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.FromIterator.html "trait core::iter::traits::collect::FromIterator")\ for [MutableBuffer](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html "struct arrow_buffer::buffer::MutableBuffer")\ \ [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/mutable.rs.html#1090-1094)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.from_iter-1)\ \ #### fn [from\_iter](https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.FromIterator.html#tymethod.from_iter)\ >(iter: I) -> Self\ \ Creates a value from an iterator. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.FromIterator.html#tymethod.from_iter)\ \ [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/mutable.rs.html#1035-1087)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#impl-FromIterator%3Cbool%3E-for-MutableBuffer)\ \ ### impl [FromIterator](https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.FromIterator.html "trait core::iter::traits::collect::FromIterator")\ <[bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html)\ \> for [MutableBuffer](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html "struct arrow_buffer::buffer::MutableBuffer")\ \ Creating a `MutableBuffer` instance by setting bits according to the boolean values\ \ [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/mutable.rs.html#1036-1086)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.from_iter)\ \ #### fn [from\_iter](https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.FromIterator.html#tymethod.from_iter)\ (iter: I) -> Self\ \ where I: [IntoIterator](https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html "trait core::iter::traits::collect::IntoIterator")\ ,\ \ Creates a value from an iterator. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.FromIterator.html#tymethod.from_iter)\ \ [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/mutable.rs.html#997-1007)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#impl-PartialEq-for-MutableBuffer)\ \ ### impl [PartialEq](https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html "trait core::cmp::PartialEq")\ for [MutableBuffer](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html "struct arrow_buffer::buffer::MutableBuffer")\ \ [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/mutable.rs.html#998-1006)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.eq)\ \ #### fn [eq](https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq)\ (&self, other: &[MutableBuffer](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html "struct arrow_buffer::buffer::MutableBuffer")\ ) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html)\ \ Tests for `self` and `other` values to be equal, and is used by `==`.\ \ 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#264)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.ne)\ \ #### fn [ne](https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne)\ (&self, other: [&Rhs](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ ) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html)\ \ Tests for `!=`. The default implementation is almost always sufficient, and should not be overridden without very good reason.\ \ [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/mutable.rs.html#1010)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#impl-Send-for-MutableBuffer)\ \ ### impl [Send](https://doc.rust-lang.org/nightly/core/marker/trait.Send.html "trait core::marker::Send")\ for [MutableBuffer](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html "struct arrow_buffer::buffer::MutableBuffer")\ \ [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/mutable.rs.html#1009)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#impl-Sync-for-MutableBuffer)\ \ ### impl [Sync](https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html "trait core::marker::Sync")\ for [MutableBuffer](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html "struct arrow_buffer::buffer::MutableBuffer")\ \ Auto Trait Implementations[§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#synthetic-implementations)\ \ -------------------------------------------------------------------------------------------------------------------------------------------\ \ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#impl-Freeze-for-MutableBuffer)\ \ ### impl ![Freeze](https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html "trait core::marker::Freeze")\ for [MutableBuffer](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html "struct arrow_buffer::buffer::MutableBuffer")\ \ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#impl-RefUnwindSafe-for-MutableBuffer)\ \ ### impl [RefUnwindSafe](https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html "trait core::panic::unwind_safe::RefUnwindSafe")\ for [MutableBuffer](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html "struct arrow_buffer::buffer::MutableBuffer")\ \ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#impl-Unpin-for-MutableBuffer)\ \ ### impl [Unpin](https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html "trait core::marker::Unpin")\ for [MutableBuffer](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html "struct arrow_buffer::buffer::MutableBuffer")\ \ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#impl-UnsafeUnpin-for-MutableBuffer)\ \ ### impl [UnsafeUnpin](https://doc.rust-lang.org/nightly/core/marker/trait.UnsafeUnpin.html "trait core::marker::UnsafeUnpin")\ for [MutableBuffer](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html "struct arrow_buffer::buffer::MutableBuffer")\ \ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#impl-UnwindSafe-for-MutableBuffer)\ \ ### impl [UnwindSafe](https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html "trait core::panic::unwind_safe::UnwindSafe")\ for [MutableBuffer](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html "struct arrow_buffer::buffer::MutableBuffer")\ \ Blanket Implementations[§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#blanket-implementations)\ \ --------------------------------------------------------------------------------------------------------------------------------------\ \ [Source](https://doc.rust-lang.org/nightly/src/core/any.rs.html#141)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#impl-Any-for-T)\ \ ### impl [Any](https://doc.rust-lang.org/nightly/core/any/trait.Any.html "trait core::any::Any")\ for T\ \ where T: 'static + ?[Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized")\ ,\ \ [Source](https://doc.rust-lang.org/nightly/src/core/any.rs.html#142)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.type_id)\ \ #### fn [type\_id](https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id)\ (&self) -> [TypeId](https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html "struct core::any::TypeId")\ \ Gets the `TypeId` of `self`. [Read more](https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id)\ \ [Source](https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#212)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#impl-Borrow%3CT%3E-for-T)\ \ ### impl [Borrow](https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html "trait core::borrow::Borrow")\ for T\ \ where T: ?[Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized")\ ,\ \ [Source](https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#214)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.borrow)\ \ #### fn [borrow](https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow)\ (&self) -> [&T](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ \ Immutably borrows from an owned value. [Read more](https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow)\ \ [Source](https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#221)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#impl-BorrowMut%3CT%3E-for-T)\ \ ### impl [BorrowMut](https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html "trait core::borrow::BorrowMut")\ for T\ \ where T: ?[Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized")\ ,\ \ [Source](https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#222)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.borrow_mut)\ \ #### fn [borrow\_mut](https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut)\ (&mut self) -> [&mut T](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ \ Mutably borrows from an owned value. [Read more](https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut)\ \ [Source](https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#785)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#impl-From%3CT%3E-for-T)\ \ ### impl [From](https://doc.rust-lang.org/nightly/core/convert/trait.From.html "trait core::convert::From")\ for T\ \ [Source](https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#788)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.from-3)\ \ #### fn [from](https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from)\ (t: T) -> T\ \ Returns the argument unchanged.\ \ [Source](https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#767-769)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#impl-Into%3CU%3E-for-T)\ \ ### impl [Into](https://doc.rust-lang.org/nightly/core/convert/trait.Into.html "trait core::convert::Into")\ for T\ \ where U: [From](https://doc.rust-lang.org/nightly/core/convert/trait.From.html "trait core::convert::From")\ ,\ \ [Source](https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#777)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.into)\ \ #### fn [into](https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into)\ (self) -> U\ \ Calls `U::from(self)`.\ \ That is, this conversion is whatever the implementation of `[From](https://doc.rust-lang.org/nightly/core/convert/trait.From.html "trait core::convert::From") for U` chooses to do.\ \ [Source](https://doc.rust-lang.org/nightly/src/core/ops/deref.rs.html#378-380)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#impl-Receiver-for-P)\ \ ### impl [Receiver](https://doc.rust-lang.org/nightly/core/ops/deref/trait.Receiver.html "trait core::ops::deref::Receiver")\ for P\ \ where P: [Deref](https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html "trait core::ops::deref::Deref")\ + ?[Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized")\ , T: ?[Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized")\ ,\ \ [Source](https://doc.rust-lang.org/nightly/src/core/ops/deref.rs.html#382)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#associatedtype.Target-1)\ \ #### type [Target](https://doc.rust-lang.org/nightly/core/ops/deref/trait.Receiver.html#associatedtype.Target)\ = T\ \ 🔬This is a nightly-only experimental API. (`arbitrary_self_types`)\ \ The target type on which the method may be called.\ \ [Source](https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#827-829)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#impl-TryFrom%3CU%3E-for-T)\ \ ### impl [TryFrom](https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html "trait core::convert::TryFrom")\ for T\ \ where U: [Into](https://doc.rust-lang.org/nightly/core/convert/trait.Into.html "trait core::convert::Into")\ ,\ \ [Source](https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#831)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#associatedtype.Error-1)\ \ #### type [Error](https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error)\ = [Infallible](https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html "enum core::convert::Infallible")\ \ The type returned in the event of a conversion error.\ \ [Source](https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#834)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.try_from)\ \ #### fn [try\_from](https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from)\ (value: U) -> [Result](https://doc.rust-lang.org/nightly/core/result/enum.Result.html "enum core::result::Result")\ >::[Error](https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error "type core::convert::TryFrom::Error")\ \>\ \ Performs the conversion.\ \ [Source](https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#811-813)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#impl-TryInto%3CU%3E-for-T)\ \ ### impl [TryInto](https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html "trait core::convert::TryInto")\ for T\ \ where U: [TryFrom](https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html "trait core::convert::TryFrom")\ ,\ \ [Source](https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#815)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#associatedtype.Error)\ \ #### type [Error](https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error)\ = >::[Error](https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error "type core::convert::TryFrom::Error")\ \ The type returned in the event of a conversion error.\ \ [Source](https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#818)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#method.try_into)\ \ #### fn [try\_into](https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into)\ (self) -> [Result](https://doc.rust-lang.org/nightly/core/result/enum.Result.html "enum core::result::Result")\ >::[Error](https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error "type core::convert::TryFrom::Error")\ \>\ \ Performs the conversion.\ \ [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/alloc/mod.rs.html#33)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.MutableBuffer.html#impl-Allocation-for-T)\ \ ### impl [Allocation](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/alloc/trait.Allocation.html "trait arrow_buffer::alloc::Allocation")\ for T\ \ where T: [RefUnwindSafe](https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html "trait core::panic::unwind_safe::RefUnwindSafe")\ + [Send](https://doc.rust-lang.org/nightly/core/marker/trait.Send.html "trait core::marker::Send")\ + [Sync](https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html "trait core::marker::Sync")\ , --- # arrow_ord::sort - Rust [Docs.rs](https://docs.rs/) * [arrow-ord-58.1.0](https://docs.rs/arrow-ord/58.1.0/arrow_ord/sort/index.html# "Ordering kernels for arrow arrays") * arrow-ord 58.1.0 * [Docs.rs crate page](https://docs.rs/crate/arrow-ord/58.1.0 "See arrow-ord in docs.rs") * [Apache-2.0](https://spdx.org/licenses/Apache-2.0) * Links * [Homepage](https://github.com/apache/arrow-rs) * [Repository](https://github.com/apache/arrow-rs) * [crates.io](https://crates.io/crates/arrow-ord "See arrow-ord in crates.io") * [Source](https://docs.rs/crate/arrow-ord/58.1.0/source/ "Browse source of arrow-ord-58.1.0") * Owners * [andygrove](https://crates.io/users/andygrove) * [kou](https://crates.io/users/kou) * [xhochy](https://crates.io/users/xhochy) * [nevi-me](https://crates.io/users/nevi-me) * [alamb](https://crates.io/users/alamb) * [tustvold](https://crates.io/users/tustvold) * Dependencies * * [arrow-array ^58.1.0 _normal_](https://docs.rs/arrow-array/^58.1.0/) * [arrow-buffer ^58.1.0 _normal_](https://docs.rs/arrow-buffer/^58.1.0/) * [arrow-data ^58.1.0 _normal_](https://docs.rs/arrow-data/^58.1.0/) * [arrow-schema ^58.1.0 _normal_](https://docs.rs/arrow-schema/^58.1.0/) * [arrow-select ^58.1.0 _normal_](https://docs.rs/arrow-select/^58.1.0/) * [half ^2.1 _dev_](https://docs.rs/half/^2.1/) * [rand ^0.9 _dev_](https://docs.rs/rand/^0.9/) * Versions * [**100%** of the crate is documented](https://docs.rs/crate/arrow-ord/58.1.0) * [Platform](https://docs.rs/arrow-ord/58.1.0/arrow_ord/sort/index.html#) * [aarch64-apple-darwin](https://docs.rs/crate/arrow-ord/58.1.0/target-redirect/aarch64-apple-darwin/arrow_ord/sort/) * [aarch64-unknown-linux-gnu](https://docs.rs/crate/arrow-ord/58.1.0/target-redirect/aarch64-unknown-linux-gnu/arrow_ord/sort/) * [i686-pc-windows-msvc](https://docs.rs/crate/arrow-ord/58.1.0/target-redirect/i686-pc-windows-msvc/arrow_ord/sort/) * [x86\_64-pc-windows-msvc](https://docs.rs/crate/arrow-ord/58.1.0/target-redirect/x86_64-pc-windows-msvc/arrow_ord/sort/) * [x86\_64-unknown-linux-gnu](https://docs.rs/crate/arrow-ord/58.1.0/target-redirect/arrow_ord/sort/) * [Feature flags](https://docs.rs/crate/arrow-ord/58.1.0/features "Browse available feature flags of arrow-ord-58.1.0") * [docs.rs](https://docs.rs/arrow-ord/58.1.0/arrow_ord/sort/index.html#) * [About docs.rs](https://docs.rs/about) * [Badges](https://docs.rs/about/badges) * [Builds](https://docs.rs/about/builds) * [Metadata](https://docs.rs/about/metadata) * [Shorthand URLs](https://docs.rs/about/redirections) * [Download](https://docs.rs/about/download) * [Rustdoc JSON](https://docs.rs/about/rustdoc-json) * [Build queue](https://docs.rs/releases/queue) * [Privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#docs.rs) * [Rust](https://docs.rs/arrow-ord/58.1.0/arrow_ord/sort/index.html#) * [Rust website](https://www.rust-lang.org/) * [The Book](https://doc.rust-lang.org/book/) * [Standard Library API Reference](https://doc.rust-lang.org/std/) * [Rust by Example](https://doc.rust-lang.org/rust-by-example/) * [The Cargo Guide](https://doc.rust-lang.org/cargo/guide/) * [Clippy Documentation](https://doc.rust-lang.org/nightly/clippy) [Skip to main content](https://docs.rs/arrow-ord/58.1.0/arrow_ord/sort/index.html#main-content) [Module sort](https://docs.rs/arrow-ord/58.1.0/arrow_ord/sort/index.html#) --------------------------------------------------------------------------- [arrow\_ord](https://docs.rs/arrow-ord/58.1.0/arrow_ord/index.html) Module sort Copy item path ========================== [Source](https://docs.rs/arrow-ord/58.1.0/src/arrow_ord/sort.rs.html#18-5285) Expand description Defines sort kernel for `ArrayRef` Structs[§](https://docs.rs/arrow-ord/58.1.0/arrow_ord/sort/index.html#structs) ------------------------------------------------------------------------------- [FixedLexicographicalComparator](https://docs.rs/arrow-ord/58.1.0/arrow_ord/sort/struct.FixedLexicographicalComparator.html "struct arrow_ord::sort::FixedLexicographicalComparator") A lexicographical comparator that wraps given array data (columns) and can lexicographically compare data at given two indices. This version of the comparator is for compile-time constant number of columns. The lifetime is the same at the data wrapped. [LexicographicalComparator](https://docs.rs/arrow-ord/58.1.0/arrow_ord/sort/struct.LexicographicalComparator.html "struct arrow_ord::sort::LexicographicalComparator") A lexicographical comparator that wraps given array data (columns) and can lexicographically compare data at given two indices. The lifetime is the same at the data wrapped. [SortColumn](https://docs.rs/arrow-ord/58.1.0/arrow_ord/sort/struct.SortColumn.html "struct arrow_ord::sort::SortColumn") One column to be used in lexicographical sort [SortOptions](https://docs.rs/arrow-ord/58.1.0/arrow_ord/sort/struct.SortOptions.html "struct arrow_ord::sort::SortOptions") Options that define the sort order of a given column Functions[§](https://docs.rs/arrow-ord/58.1.0/arrow_ord/sort/index.html#functions) ----------------------------------------------------------------------------------- [lexsort](https://docs.rs/arrow-ord/58.1.0/arrow_ord/sort/fn.lexsort.html "fn arrow_ord::sort::lexsort") Sort a list of `ArrayRef` using `SortOptions` provided for each array. [lexsort\_to\_indices](https://docs.rs/arrow-ord/58.1.0/arrow_ord/sort/fn.lexsort_to_indices.html "fn arrow_ord::sort::lexsort_to_indices") Sort elements lexicographically from a list of `ArrayRef` into an unsigned integer (`UInt32Array`) of indices. [partial\_sort](https://docs.rs/arrow-ord/58.1.0/arrow_ord/sort/fn.partial_sort.html "fn arrow_ord::sort::partial_sort") It’s unstable\_sort, may not preserve the order of equal elements [partition\_validity](https://docs.rs/arrow-ord/58.1.0/arrow_ord/sort/fn.partition_validity.html "fn arrow_ord::sort::partition_validity") Partition indices of an Arrow array into two categories: [sort](https://docs.rs/arrow-ord/58.1.0/arrow_ord/sort/fn.sort.html "fn arrow_ord::sort::sort") Sort the `ArrayRef` using `SortOptions`. [sort\_limit](https://docs.rs/arrow-ord/58.1.0/arrow_ord/sort/fn.sort_limit.html "fn arrow_ord::sort::sort_limit") Sort the `ArrayRef` partially. [sort\_to\_indices](https://docs.rs/arrow-ord/58.1.0/arrow_ord/sort/fn.sort_to_indices.html "fn arrow_ord::sort::sort_to_indices") Sort elements from `ArrayRef` into an unsigned integer (`UInt32Array`) of indices. Floats are sorted using IEEE 754 totalOrder. `limit` is an option for [partial\_sort](https://docs.rs/arrow-ord/58.1.0/arrow_ord/sort/fn.partial_sort.html "fn arrow_ord::sort::partial_sort") . --- # SchemaRef in arrow_schema - Rust [Docs.rs](https://docs.rs/) * [arrow-schema-58.1.0](https://docs.rs/arrow-schema/58.1.0/arrow_schema/type.SchemaRef.html# "Defines the logical types for arrow arrays") * arrow-schema 58.1.0 * [Docs.rs crate page](https://docs.rs/crate/arrow-schema/58.1.0 "See arrow-schema in docs.rs") * [Apache-2.0](https://spdx.org/licenses/Apache-2.0) * Links * [Homepage](https://github.com/apache/arrow-rs) * [Repository](https://github.com/apache/arrow-rs) * [crates.io](https://crates.io/crates/arrow-schema "See arrow-schema in crates.io") * [Source](https://docs.rs/crate/arrow-schema/58.1.0/source/ "Browse source of arrow-schema-58.1.0") * Owners * [andygrove](https://crates.io/users/andygrove) * [xhochy](https://crates.io/users/xhochy) * [nevi-me](https://crates.io/users/nevi-me) * [alamb](https://crates.io/users/alamb) * [tustvold](https://crates.io/users/tustvold) * Dependencies * * [bitflags ^2.0.0 _normal_ _optional_](https://docs.rs/bitflags/^2.0.0/) * [serde ^1.0 _normal_ _optional_](https://docs.rs/serde/^1.0/) * [serde\_core ^1.0 _normal_ _optional_](https://docs.rs/serde_core/^1.0/) * [serde\_json ^1.0 _normal_ _optional_](https://docs.rs/serde_json/^1.0/) * [criterion ^0.8.0 _dev_](https://docs.rs/criterion/^0.8.0/) * [insta ^1.46.3 _dev_](https://docs.rs/insta/^1.46.3/) * [postcard ^1.0.10 _dev_](https://docs.rs/postcard/^1.0.10/) * Versions * [**100%** of the crate is documented](https://docs.rs/crate/arrow-schema/58.1.0) * [Platform](https://docs.rs/arrow-schema/58.1.0/arrow_schema/type.SchemaRef.html#) * [aarch64-apple-darwin](https://docs.rs/crate/arrow-schema/58.1.0/target-redirect/aarch64-apple-darwin/arrow_schema/type.SchemaRef.html) * [aarch64-unknown-linux-gnu](https://docs.rs/crate/arrow-schema/58.1.0/target-redirect/aarch64-unknown-linux-gnu/arrow_schema/type.SchemaRef.html) * [i686-pc-windows-msvc](https://docs.rs/crate/arrow-schema/58.1.0/target-redirect/i686-pc-windows-msvc/arrow_schema/type.SchemaRef.html) * [x86\_64-pc-windows-msvc](https://docs.rs/crate/arrow-schema/58.1.0/target-redirect/x86_64-pc-windows-msvc/arrow_schema/type.SchemaRef.html) * [x86\_64-unknown-linux-gnu](https://docs.rs/crate/arrow-schema/58.1.0/target-redirect/arrow_schema/type.SchemaRef.html) * [Feature flags](https://docs.rs/crate/arrow-schema/58.1.0/features "Browse available feature flags of arrow-schema-58.1.0") * [docs.rs](https://docs.rs/arrow-schema/58.1.0/arrow_schema/type.SchemaRef.html#) * [About docs.rs](https://docs.rs/about) * [Badges](https://docs.rs/about/badges) * [Builds](https://docs.rs/about/builds) * [Metadata](https://docs.rs/about/metadata) * [Shorthand URLs](https://docs.rs/about/redirections) * [Download](https://docs.rs/about/download) * [Rustdoc JSON](https://docs.rs/about/rustdoc-json) * [Build queue](https://docs.rs/releases/queue) * [Privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#docs.rs) * [Rust](https://docs.rs/arrow-schema/58.1.0/arrow_schema/type.SchemaRef.html#) * [Rust website](https://www.rust-lang.org/) * [The Book](https://doc.rust-lang.org/book/) * [Standard Library API Reference](https://doc.rust-lang.org/std/) * [Rust by Example](https://doc.rust-lang.org/rust-by-example/) * [The Cargo Guide](https://doc.rust-lang.org/cargo/guide/) * [Clippy Documentation](https://doc.rust-lang.org/nightly/clippy) [Skip to main content](https://docs.rs/arrow-schema/58.1.0/arrow_schema/type.SchemaRef.html#main-content) [SchemaRef](https://docs.rs/arrow-schema/58.1.0/arrow_schema/type.SchemaRef.html#) ----------------------------------------------------------------------------------- [arrow\_schema](https://docs.rs/arrow-schema/58.1.0/arrow_schema/index.html) Type Alias SchemaRef Copy item path =================================== [Source](https://docs.rs/arrow-schema/58.1.0/src/arrow_schema/schema.rs.html#179) pub type SchemaRef = Arc; Expand description A reference-counted reference to a [`Schema`](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Schema.html "struct arrow_schema::Schema") . Aliased Type[§](https://docs.rs/arrow-schema/58.1.0/arrow_schema/type.SchemaRef.html#aliased-type) --------------------------------------------------------------------------------------------------- pub struct SchemaRef { /* private fields */ } --- # zip in arrow_select::zip - Rust [Docs.rs](https://docs.rs/) * [arrow-select-58.1.0](https://docs.rs/arrow-select/58.1.0/arrow_select/zip/fn.zip.html# "Selection kernels for arrow arrays") * arrow-select 58.1.0 * [Docs.rs crate page](https://docs.rs/crate/arrow-select/58.1.0 "See arrow-select in docs.rs") * [Apache-2.0](https://spdx.org/licenses/Apache-2.0) * Links * [Homepage](https://github.com/apache/arrow-rs) * [Repository](https://github.com/apache/arrow-rs) * [crates.io](https://crates.io/crates/arrow-select "See arrow-select in crates.io") * [Source](https://docs.rs/crate/arrow-select/58.1.0/source/ "Browse source of arrow-select-58.1.0") * Owners * [kou](https://crates.io/users/kou) * [kszucs](https://crates.io/users/kszucs) * [xhochy](https://crates.io/users/xhochy) * [nevi-me](https://crates.io/users/nevi-me) * [alamb](https://crates.io/users/alamb) * [tustvold](https://crates.io/users/tustvold) * Dependencies * * [ahash ^0.8 _normal_](https://docs.rs/ahash/^0.8/) * [arrow-array ^58.1.0 _normal_](https://docs.rs/arrow-array/^58.1.0/) * [arrow-buffer ^58.1.0 _normal_](https://docs.rs/arrow-buffer/^58.1.0/) * [arrow-data ^58.1.0 _normal_](https://docs.rs/arrow-data/^58.1.0/) * [arrow-schema ^58.1.0 _normal_](https://docs.rs/arrow-schema/^58.1.0/) * [num-traits ^0.2.19 _normal_](https://docs.rs/num-traits/^0.2.19/) * [rand ^0.9 _dev_](https://docs.rs/rand/^0.9/) * Versions * [**100%** of the crate is documented](https://docs.rs/crate/arrow-select/58.1.0) * [Platform](https://docs.rs/arrow-select/58.1.0/arrow_select/zip/fn.zip.html#) * [aarch64-apple-darwin](https://docs.rs/crate/arrow-select/58.1.0/target-redirect/aarch64-apple-darwin/arrow_select/zip/fn.zip.html) * [aarch64-unknown-linux-gnu](https://docs.rs/crate/arrow-select/58.1.0/target-redirect/aarch64-unknown-linux-gnu/arrow_select/zip/fn.zip.html) * [i686-pc-windows-msvc](https://docs.rs/crate/arrow-select/58.1.0/target-redirect/i686-pc-windows-msvc/arrow_select/zip/fn.zip.html) * [x86\_64-pc-windows-msvc](https://docs.rs/crate/arrow-select/58.1.0/target-redirect/x86_64-pc-windows-msvc/arrow_select/zip/fn.zip.html) * [x86\_64-unknown-linux-gnu](https://docs.rs/crate/arrow-select/58.1.0/target-redirect/arrow_select/zip/fn.zip.html) * [Feature flags](https://docs.rs/crate/arrow-select/58.1.0/features "Browse available feature flags of arrow-select-58.1.0") * [docs.rs](https://docs.rs/arrow-select/58.1.0/arrow_select/zip/fn.zip.html#) * [About docs.rs](https://docs.rs/about) * [Badges](https://docs.rs/about/badges) * [Builds](https://docs.rs/about/builds) * [Metadata](https://docs.rs/about/metadata) * [Shorthand URLs](https://docs.rs/about/redirections) * [Download](https://docs.rs/about/download) * [Rustdoc JSON](https://docs.rs/about/rustdoc-json) * [Build queue](https://docs.rs/releases/queue) * [Privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#docs.rs) * [Rust](https://docs.rs/arrow-select/58.1.0/arrow_select/zip/fn.zip.html#) * [Rust website](https://www.rust-lang.org/) * [The Book](https://doc.rust-lang.org/book/) * [Standard Library API Reference](https://doc.rust-lang.org/std/) * [Rust by Example](https://doc.rust-lang.org/rust-by-example/) * [The Cargo Guide](https://doc.rust-lang.org/cargo/guide/) * [Clippy Documentation](https://doc.rust-lang.org/nightly/clippy) [Skip to main content](https://docs.rs/arrow-select/58.1.0/arrow_select/zip/fn.zip.html#main-content) [zip](https://docs.rs/arrow-select/58.1.0/arrow_select/zip/fn.zip.html#) ------------------------------------------------------------------------- [arrow\_select](https://docs.rs/arrow-select/58.1.0/arrow_select/index.html) ::[zip](https://docs.rs/arrow-select/58.1.0/arrow_select/zip/index.html) Function zip Copy item path =========================== [Source](https://docs.rs/arrow-select/58.1.0/src/arrow_select/zip.rs.html#99-146) pub fn zip( mask: &BooleanArray, truthy: &dyn Datum, falsy: &dyn Datum, ) -> Result Expand description Zip two arrays by some boolean mask. * Where `mask` is `true`, values of `truthy` are taken * Where `mask` is `false` or `NULL`, values of `falsy` are taken [§](https://docs.rs/arrow-select/58.1.0/arrow_select/zip/fn.zip.html#example-zip-two-arrays) Example: `zip` two arrays ---------------------------------------------------------------------------------------------------------------------- // mask: [true, true, false, NULL, true] let mask = BooleanArray::from(vec![\ Some(true), Some(true), Some(false), None, Some(true)\ ]); // truthy array: [1, NULL, 3, 4, 5] let truthy = Int32Array::from(vec![\ Some(1), None, Some(3), Some(4), Some(5)\ ]); // falsy array: [10, 20, 30, 40, 50] let falsy = Int32Array::from(vec![\ Some(10), Some(20), Some(30), Some(40), Some(50)\ ]); // zip with this mask select the first, second and last value from `truthy` // and the third and fourth value from `falsy` let result = zip(&mask, &truthy, &falsy).unwrap(); // Expected: [1, NULL, 30, 40, 5] let expected: ArrayRef = Arc::new(Int32Array::from(vec![\ Some(1), None, Some(30), Some(40), Some(5)\ ])); assert_eq!(&result, &expected); [§](https://docs.rs/arrow-select/58.1.0/arrow_select/zip/fn.zip.html#example-zip-and-array-with-a-scalar) Example: `zip` and array with a scalar ------------------------------------------------------------------------------------------------------------------------------------------------ Use `zip` to replace certain values in an array with a scalar // mask: [true, true, false, NULL, true] let mask = BooleanArray::from(vec![\ Some(true), Some(true), Some(false), None, Some(true)\ ]); // array: [1, NULL, 3, 4, 5] let arr = Int32Array::from(vec![\ Some(1), None, Some(3), Some(4), Some(5)\ ]); // scalar: 42 let scalar = Int32Array::new_scalar(42); // zip the array with the mask select the first, second and last value from `arr` // and fill the third and fourth value with the scalar 42 let result = zip(&mask, &arr, &scalar).unwrap(); // Expected: [1, NULL, 42, 42, 5] let expected: ArrayRef = Arc::new(Int32Array::from(vec![\ Some(1), None, Some(42), Some(42), Some(5)\ ])); assert_eq!(&result, &expected); --- # MemoryPool in arrow_buffer - Rust [Docs.rs](https://docs.rs/) * [arrow-buffer-58.1.0](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/trait.MemoryPool.html# "Buffer abstractions for Apache Arrow") * arrow-buffer 58.1.0 * [Docs.rs crate page](https://docs.rs/crate/arrow-buffer/58.1.0 "See arrow-buffer in docs.rs") * [Apache-2.0](https://spdx.org/licenses/Apache-2.0) * Links * [Homepage](https://github.com/apache/arrow-rs) * [Repository](https://github.com/apache/arrow-rs) * [crates.io](https://crates.io/crates/arrow-buffer "See arrow-buffer in crates.io") * [Source](https://docs.rs/crate/arrow-buffer/58.1.0/source/ "Browse source of arrow-buffer-58.1.0") * Owners * [andygrove](https://crates.io/users/andygrove) * [kou](https://crates.io/users/kou) * [kszucs](https://crates.io/users/kszucs) * [xhochy](https://crates.io/users/xhochy) * [nevi-me](https://crates.io/users/nevi-me) * [alamb](https://crates.io/users/alamb) * [tustvold](https://crates.io/users/tustvold) * Dependencies * * [bytes ^1.4 _normal_](https://docs.rs/bytes/^1.4/) * [half ^2.1 _normal_](https://docs.rs/half/^2.1/) * [num-bigint ^0.4.6 _normal_](https://docs.rs/num-bigint/^0.4.6/) * [num-traits ^0.2.19 _normal_](https://docs.rs/num-traits/^0.2.19/) * [criterion ^0.8.0 _dev_](https://docs.rs/criterion/^0.8.0/) * [rand ^0.9 _dev_](https://docs.rs/rand/^0.9/) * Versions * [**100%** of the crate is documented](https://docs.rs/crate/arrow-buffer/58.1.0) * [Platform](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/trait.MemoryPool.html#) * [aarch64-apple-darwin](https://docs.rs/crate/arrow-buffer/58.1.0/target-redirect/aarch64-apple-darwin/arrow_buffer/trait.MemoryPool.html) * [aarch64-unknown-linux-gnu](https://docs.rs/crate/arrow-buffer/58.1.0/target-redirect/aarch64-unknown-linux-gnu/arrow_buffer/trait.MemoryPool.html) * [i686-pc-windows-msvc](https://docs.rs/crate/arrow-buffer/58.1.0/target-redirect/i686-pc-windows-msvc/arrow_buffer/trait.MemoryPool.html) * [x86\_64-pc-windows-msvc](https://docs.rs/crate/arrow-buffer/58.1.0/target-redirect/x86_64-pc-windows-msvc/arrow_buffer/trait.MemoryPool.html) * [x86\_64-unknown-linux-gnu](https://docs.rs/crate/arrow-buffer/58.1.0/target-redirect/arrow_buffer/trait.MemoryPool.html) * [Feature flags](https://docs.rs/crate/arrow-buffer/58.1.0/features "Browse available feature flags of arrow-buffer-58.1.0") * [docs.rs](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/trait.MemoryPool.html#) * [About docs.rs](https://docs.rs/about) * [Badges](https://docs.rs/about/badges) * [Builds](https://docs.rs/about/builds) * [Metadata](https://docs.rs/about/metadata) * [Shorthand URLs](https://docs.rs/about/redirections) * [Download](https://docs.rs/about/download) * [Rustdoc JSON](https://docs.rs/about/rustdoc-json) * [Build queue](https://docs.rs/releases/queue) * [Privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#docs.rs) * [Rust](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/trait.MemoryPool.html#) * [Rust website](https://www.rust-lang.org/) * [The Book](https://doc.rust-lang.org/book/) * [Standard Library API Reference](https://doc.rust-lang.org/std/) * [Rust by Example](https://doc.rust-lang.org/rust-by-example/) * [The Cargo Guide](https://doc.rust-lang.org/cargo/guide/) * [Clippy Documentation](https://doc.rust-lang.org/nightly/clippy) [Skip to main content](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/trait.MemoryPool.html#main-content) [MemoryPool](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/trait.MemoryPool.html#) -------------------------------------------------------------------------------------- [arrow\_buffer](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/index.html) Trait MemoryPool Copy item path =============================== [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/pool.rs.html#73-89) pub trait MemoryPool: Debug + Send + Sync { // Required methods fn reserve(&self, size: usize) -> Box; fn available(&self) -> isize; fn used(&self) -> usize; fn capacity(&self) -> usize; } Available on **crate feature `pool`** only. Expand description A pool of memory that can be reserved and released. This is used to accurately track memory usage when buffers are shared between multiple arrays or other data structures. For example, assume we have two arrays that share underlying buffer. It’s hard to tell how much memory is used by them because we can’t tell if the buffer is shared or not. Array A Array B ┌────────────┐ ┌────────────┐ │ slices... │ │ slices... │ │────────────│ │────────────│ │ Arc │ │ Arc │ (shared buffer) └─────▲──────┘ └───────▲────┘ │ │ │ Bytes │ │ ┌─────────────┐ │ │ │ data... │ │ │ │─────────────│ │ └──│ Memory │──┘ (tracked with a memory pool) │ Reservation │ └─────────────┘ With a memory pool, we can count the memory usage by the shared buffer directly. Required Methods[§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/trait.MemoryPool.html#required-methods) ------------------------------------------------------------------------------------------------------------- [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/pool.rs.html#77) #### fn [reserve](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/trait.MemoryPool.html#tymethod.reserve) (&self, size: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) ) -> [Box](https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html "struct alloc::boxed::Box") Reserves memory from the pool. Infallible. Returns a reservation of the requested size. [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/pool.rs.html#82) #### fn [available](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/trait.MemoryPool.html#tymethod.available) (&self) -> [isize](https://doc.rust-lang.org/nightly/std/primitive.isize.html) Returns the current available memory in the pool. The pool may be overfilled, so this method might return a negative value. [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/pool.rs.html#85) #### fn [used](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/trait.MemoryPool.html#tymethod.used) (&self) -> [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) Returns the current used memory from the pool. [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/pool.rs.html#88) #### fn [capacity](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/trait.MemoryPool.html#tymethod.capacity) (&self) -> [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) Returns the maximum memory that can be reserved from the pool. Implementors[§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/trait.MemoryPool.html#implementors) ----------------------------------------------------------------------------------------------------- [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/pool.rs.html#102-122) [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/trait.MemoryPool.html#impl-MemoryPool-for-TrackingMemoryPool) ### impl [MemoryPool](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/trait.MemoryPool.html "trait arrow_buffer::MemoryPool") for [TrackingMemoryPool](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/struct.TrackingMemoryPool.html "struct arrow_buffer::TrackingMemoryPool") --- # arrow_schema::extension - Rust [Docs.rs](https://docs.rs/) * [arrow-schema-58.1.0](https://docs.rs/arrow-schema/58.1.0/arrow_schema/extension/index.html# "Defines the logical types for arrow arrays") * arrow-schema 58.1.0 * [Docs.rs crate page](https://docs.rs/crate/arrow-schema/58.1.0 "See arrow-schema in docs.rs") * [Apache-2.0](https://spdx.org/licenses/Apache-2.0) * Links * [Homepage](https://github.com/apache/arrow-rs) * [Repository](https://github.com/apache/arrow-rs) * [crates.io](https://crates.io/crates/arrow-schema "See arrow-schema in crates.io") * [Source](https://docs.rs/crate/arrow-schema/58.1.0/source/ "Browse source of arrow-schema-58.1.0") * Owners * [andygrove](https://crates.io/users/andygrove) * [xhochy](https://crates.io/users/xhochy) * [nevi-me](https://crates.io/users/nevi-me) * [alamb](https://crates.io/users/alamb) * [tustvold](https://crates.io/users/tustvold) * Dependencies * * [bitflags ^2.0.0 _normal_ _optional_](https://docs.rs/bitflags/^2.0.0/) * [serde ^1.0 _normal_ _optional_](https://docs.rs/serde/^1.0/) * [serde\_core ^1.0 _normal_ _optional_](https://docs.rs/serde_core/^1.0/) * [serde\_json ^1.0 _normal_ _optional_](https://docs.rs/serde_json/^1.0/) * [criterion ^0.8.0 _dev_](https://docs.rs/criterion/^0.8.0/) * [insta ^1.46.3 _dev_](https://docs.rs/insta/^1.46.3/) * [postcard ^1.0.10 _dev_](https://docs.rs/postcard/^1.0.10/) * Versions * [**100%** of the crate is documented](https://docs.rs/crate/arrow-schema/58.1.0) * [Platform](https://docs.rs/arrow-schema/58.1.0/arrow_schema/extension/index.html#) * [aarch64-apple-darwin](https://docs.rs/crate/arrow-schema/58.1.0/target-redirect/aarch64-apple-darwin/arrow_schema/extension/) * [aarch64-unknown-linux-gnu](https://docs.rs/crate/arrow-schema/58.1.0/target-redirect/aarch64-unknown-linux-gnu/arrow_schema/extension/) * [i686-pc-windows-msvc](https://docs.rs/crate/arrow-schema/58.1.0/target-redirect/i686-pc-windows-msvc/arrow_schema/extension/) * [x86\_64-pc-windows-msvc](https://docs.rs/crate/arrow-schema/58.1.0/target-redirect/x86_64-pc-windows-msvc/arrow_schema/extension/) * [x86\_64-unknown-linux-gnu](https://docs.rs/crate/arrow-schema/58.1.0/target-redirect/arrow_schema/extension/) * [Feature flags](https://docs.rs/crate/arrow-schema/58.1.0/features "Browse available feature flags of arrow-schema-58.1.0") * [docs.rs](https://docs.rs/arrow-schema/58.1.0/arrow_schema/extension/index.html#) * [About docs.rs](https://docs.rs/about) * [Badges](https://docs.rs/about/badges) * [Builds](https://docs.rs/about/builds) * [Metadata](https://docs.rs/about/metadata) * [Shorthand URLs](https://docs.rs/about/redirections) * [Download](https://docs.rs/about/download) * [Rustdoc JSON](https://docs.rs/about/rustdoc-json) * [Build queue](https://docs.rs/releases/queue) * [Privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#docs.rs) * [Rust](https://docs.rs/arrow-schema/58.1.0/arrow_schema/extension/index.html#) * [Rust website](https://www.rust-lang.org/) * [The Book](https://doc.rust-lang.org/book/) * [Standard Library API Reference](https://doc.rust-lang.org/std/) * [Rust by Example](https://doc.rust-lang.org/rust-by-example/) * [The Cargo Guide](https://doc.rust-lang.org/cargo/guide/) * [Clippy Documentation](https://doc.rust-lang.org/nightly/clippy) [Skip to main content](https://docs.rs/arrow-schema/58.1.0/arrow_schema/extension/index.html#main-content) [Module extension](https://docs.rs/arrow-schema/58.1.0/arrow_schema/extension/index.html#) ------------------------------------------------------------------------------------------- [arrow\_schema](https://docs.rs/arrow-schema/58.1.0/arrow_schema/index.html) Module extension Copy item path =============================== [Source](https://docs.rs/arrow-schema/58.1.0/src/arrow_schema/extension/mod.rs.html#18-301) Expand description Extension types. Structs[§](https://docs.rs/arrow-schema/58.1.0/arrow_schema/extension/index.html#structs) ------------------------------------------------------------------------------------------ [Bool8](https://docs.rs/arrow-schema/58.1.0/arrow_schema/extension/struct.Bool8.html "struct arrow_schema::extension::Bool8") The extension type for `8-bit Boolean`. [FixedShapeTensor](https://docs.rs/arrow-schema/58.1.0/arrow_schema/extension/struct.FixedShapeTensor.html "struct arrow_schema::extension::FixedShapeTensor") The extension type for fixed shape tensor. [FixedShapeTensorMetadata](https://docs.rs/arrow-schema/58.1.0/arrow_schema/extension/struct.FixedShapeTensorMetadata.html "struct arrow_schema::extension::FixedShapeTensorMetadata") Extension type metadata for [`FixedShapeTensor`](https://docs.rs/arrow-schema/58.1.0/arrow_schema/extension/struct.FixedShapeTensor.html "struct arrow_schema::extension::FixedShapeTensor") . [Json](https://docs.rs/arrow-schema/58.1.0/arrow_schema/extension/struct.Json.html "struct arrow_schema::extension::Json") The extension type for `JSON`. [JsonMetadata](https://docs.rs/arrow-schema/58.1.0/arrow_schema/extension/struct.JsonMetadata.html "struct arrow_schema::extension::JsonMetadata") Extension type metadata for [`Json`](https://docs.rs/arrow-schema/58.1.0/arrow_schema/extension/struct.Json.html "struct arrow_schema::extension::Json") . [Opaque](https://docs.rs/arrow-schema/58.1.0/arrow_schema/extension/struct.Opaque.html "struct arrow_schema::extension::Opaque") The extension type for `Opaque`. [OpaqueMetadata](https://docs.rs/arrow-schema/58.1.0/arrow_schema/extension/struct.OpaqueMetadata.html "struct arrow_schema::extension::OpaqueMetadata") Extension type metadata for [`Opaque`](https://docs.rs/arrow-schema/58.1.0/arrow_schema/extension/struct.Opaque.html "struct arrow_schema::extension::Opaque") . [TimestampWithOffset](https://docs.rs/arrow-schema/58.1.0/arrow_schema/extension/struct.TimestampWithOffset.html "struct arrow_schema::extension::TimestampWithOffset") The extension type for `TimestampWithOffset`. [Uuid](https://docs.rs/arrow-schema/58.1.0/arrow_schema/extension/struct.Uuid.html "struct arrow_schema::extension::Uuid") The extension type for `UUID`. [VariableShapeTensor](https://docs.rs/arrow-schema/58.1.0/arrow_schema/extension/struct.VariableShapeTensor.html "struct arrow_schema::extension::VariableShapeTensor") The extension type for `VariableShapeTensor`. [VariableShapeTensorMetadata](https://docs.rs/arrow-schema/58.1.0/arrow_schema/extension/struct.VariableShapeTensorMetadata.html "struct arrow_schema::extension::VariableShapeTensorMetadata") Extension type metadata for [`VariableShapeTensor`](https://docs.rs/arrow-schema/58.1.0/arrow_schema/extension/struct.VariableShapeTensor.html "struct arrow_schema::extension::VariableShapeTensor") . Enums[§](https://docs.rs/arrow-schema/58.1.0/arrow_schema/extension/index.html#enums) -------------------------------------------------------------------------------------- [CanonicalExtensionType](https://docs.rs/arrow-schema/58.1.0/arrow_schema/extension/enum.CanonicalExtensionType.html "enum arrow_schema::extension::CanonicalExtensionType") `canonical_extension_types` Canonical extension types. Constants[§](https://docs.rs/arrow-schema/58.1.0/arrow_schema/extension/index.html#constants) ---------------------------------------------------------------------------------------------- [EXTENSION\_TYPE\_METADATA\_KEY](https://docs.rs/arrow-schema/58.1.0/arrow_schema/extension/constant.EXTENSION_TYPE_METADATA_KEY.html "constant arrow_schema::extension::EXTENSION_TYPE_METADATA_KEY") The metadata key for a serialized representation of the [`ExtensionType`](https://docs.rs/arrow-schema/58.1.0/arrow_schema/extension/trait.ExtensionType.html "trait arrow_schema::extension::ExtensionType") necessary to reconstruct the custom type. [EXTENSION\_TYPE\_NAME\_KEY](https://docs.rs/arrow-schema/58.1.0/arrow_schema/extension/constant.EXTENSION_TYPE_NAME_KEY.html "constant arrow_schema::extension::EXTENSION_TYPE_NAME_KEY") The metadata key for the string name identifying an [`ExtensionType`](https://docs.rs/arrow-schema/58.1.0/arrow_schema/extension/trait.ExtensionType.html "trait arrow_schema::extension::ExtensionType") . Traits[§](https://docs.rs/arrow-schema/58.1.0/arrow_schema/extension/index.html#traits) ---------------------------------------------------------------------------------------- [ExtensionType](https://docs.rs/arrow-schema/58.1.0/arrow_schema/extension/trait.ExtensionType.html "trait arrow_schema::extension::ExtensionType") Extension types. --- # List of all items in this crate [Docs.rs](https://docs.rs/) * [arrow-ipc-58.1.0](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/all.html# "Support for the Arrow IPC format") * arrow-ipc 58.1.0 * [Docs.rs crate page](https://docs.rs/crate/arrow-ipc/58.1.0 "See arrow-ipc in docs.rs") * [Apache-2.0](https://spdx.org/licenses/Apache-2.0) * Links * [Homepage](https://github.com/apache/arrow-rs) * [Repository](https://github.com/apache/arrow-rs) * [crates.io](https://crates.io/crates/arrow-ipc "See arrow-ipc in crates.io") * [Source](https://docs.rs/crate/arrow-ipc/58.1.0/source/ "Browse source of arrow-ipc-58.1.0") * Owners * [kou](https://crates.io/users/kou) * [xhochy](https://crates.io/users/xhochy) * [nevi-me](https://crates.io/users/nevi-me) * [alamb](https://crates.io/users/alamb) * [tustvold](https://crates.io/users/tustvold) * Dependencies * * [arrow-array ^58.1.0 _normal_](https://docs.rs/arrow-array/^58.1.0/) * [arrow-buffer ^58.1.0 _normal_](https://docs.rs/arrow-buffer/^58.1.0/) * [arrow-data ^58.1.0 _normal_](https://docs.rs/arrow-data/^58.1.0/) * [arrow-schema ^58.1.0 _normal_](https://docs.rs/arrow-schema/^58.1.0/) * [arrow-select ^58.1.0 _normal_](https://docs.rs/arrow-select/^58.1.0/) * [flatbuffers ^25.2.10 _normal_](https://docs.rs/flatbuffers/^25.2.10/) * [lz4\_flex ^0.13 _normal_ _optional_](https://docs.rs/lz4_flex/^0.13/) * [zstd ^0.13.0 _normal_ _optional_](https://docs.rs/zstd/^0.13.0/) * [bytes ^1.9 _dev_](https://docs.rs/bytes/^1.9/) * [criterion ^0.8.0 _dev_](https://docs.rs/criterion/^0.8.0/) * [memmap2 ^0.9.3 _dev_](https://docs.rs/memmap2/^0.9.3/) * [tempfile ^3.3 _dev_](https://docs.rs/tempfile/^3.3/) * [tokio ^1.43.0 _dev_](https://docs.rs/tokio/^1.43.0/) * Versions * [**100%** of the crate is documented](https://docs.rs/crate/arrow-ipc/58.1.0) * [Platform](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/all.html#) * [x86\_64-unknown-linux-gnu](https://docs.rs/crate/arrow-ipc/58.1.0/target-redirect/arrow_ipc/all.html) * [Feature flags](https://docs.rs/crate/arrow-ipc/58.1.0/features "Browse available feature flags of arrow-ipc-58.1.0") * [docs.rs](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/all.html#) * [About docs.rs](https://docs.rs/about) * [Badges](https://docs.rs/about/badges) * [Builds](https://docs.rs/about/builds) * [Metadata](https://docs.rs/about/metadata) * [Shorthand URLs](https://docs.rs/about/redirections) * [Download](https://docs.rs/about/download) * [Rustdoc JSON](https://docs.rs/about/rustdoc-json) * [Build queue](https://docs.rs/releases/queue) * [Privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#docs.rs) * [Rust](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/all.html#) * [Rust website](https://www.rust-lang.org/) * [The Book](https://doc.rust-lang.org/book/) * [Standard Library API Reference](https://doc.rust-lang.org/std/) * [Rust by Example](https://doc.rust-lang.org/rust-by-example/) * [The Cargo Guide](https://doc.rust-lang.org/cargo/guide/) * [Clippy Documentation](https://doc.rust-lang.org/nightly/clippy) [Skip to main content](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/all.html#main-content) [All](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/all.html#) ------------------------------------------------------------ List of all items ================= ### Structs * [convert::IpcSchemaEncoder](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/convert/struct.IpcSchemaEncoder.html) * [convert::MessageBuffer](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/convert/struct.MessageBuffer.html) * [gen::File::Block](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/File/struct.Block.html) * [gen::File::Footer](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/File/struct.Footer.html) * [gen::File::FooterArgs](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/File/struct.FooterArgs.html) * [gen::File::FooterBuilder](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/File/struct.FooterBuilder.html) * [gen::Message::BodyCompression](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Message/struct.BodyCompression.html) * [gen::Message::BodyCompressionArgs](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Message/struct.BodyCompressionArgs.html) * [gen::Message::BodyCompressionBuilder](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Message/struct.BodyCompressionBuilder.html) * [gen::Message::BodyCompressionMethod](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Message/struct.BodyCompressionMethod.html) * [gen::Message::CompressionType](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Message/struct.CompressionType.html) * [gen::Message::DictionaryBatch](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Message/struct.DictionaryBatch.html) * [gen::Message::DictionaryBatchArgs](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Message/struct.DictionaryBatchArgs.html) * [gen::Message::DictionaryBatchBuilder](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Message/struct.DictionaryBatchBuilder.html) * [gen::Message::FieldNode](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Message/struct.FieldNode.html) * [gen::Message::Message](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Message/struct.Message.html) * [gen::Message::MessageArgs](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Message/struct.MessageArgs.html) * [gen::Message::MessageBuilder](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Message/struct.MessageBuilder.html) * [gen::Message::MessageHeader](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Message/struct.MessageHeader.html) * [gen::Message::MessageHeaderUnionTableOffset](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Message/struct.MessageHeaderUnionTableOffset.html) * [gen::Message::RecordBatch](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Message/struct.RecordBatch.html) * [gen::Message::RecordBatchArgs](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Message/struct.RecordBatchArgs.html) * [gen::Message::RecordBatchBuilder](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Message/struct.RecordBatchBuilder.html) * [gen::Schema::Binary](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/struct.Binary.html) * [gen::Schema::BinaryArgs](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/struct.BinaryArgs.html) * [gen::Schema::BinaryBuilder](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/struct.BinaryBuilder.html) * [gen::Schema::BinaryView](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/struct.BinaryView.html) * [gen::Schema::BinaryViewArgs](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/struct.BinaryViewArgs.html) * [gen::Schema::BinaryViewBuilder](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/struct.BinaryViewBuilder.html) * [gen::Schema::Bool](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/struct.Bool.html) * [gen::Schema::BoolArgs](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/struct.BoolArgs.html) * [gen::Schema::BoolBuilder](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/struct.BoolBuilder.html) * [gen::Schema::Buffer](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/struct.Buffer.html) * [gen::Schema::Date](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/struct.Date.html) * [gen::Schema::DateArgs](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/struct.DateArgs.html) * [gen::Schema::DateBuilder](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/struct.DateBuilder.html) * [gen::Schema::DateUnit](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/struct.DateUnit.html) * [gen::Schema::Decimal](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/struct.Decimal.html) * [gen::Schema::DecimalArgs](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/struct.DecimalArgs.html) * [gen::Schema::DecimalBuilder](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/struct.DecimalBuilder.html) * [gen::Schema::DictionaryEncoding](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/struct.DictionaryEncoding.html) * [gen::Schema::DictionaryEncodingArgs](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/struct.DictionaryEncodingArgs.html) * [gen::Schema::DictionaryEncodingBuilder](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/struct.DictionaryEncodingBuilder.html) * [gen::Schema::DictionaryKind](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/struct.DictionaryKind.html) * [gen::Schema::Duration](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/struct.Duration.html) * [gen::Schema::DurationArgs](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/struct.DurationArgs.html) * [gen::Schema::DurationBuilder](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/struct.DurationBuilder.html) * [gen::Schema::Endianness](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/struct.Endianness.html) * [gen::Schema::Feature](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/struct.Feature.html) * [gen::Schema::Field](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/struct.Field.html) * [gen::Schema::FieldArgs](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/struct.FieldArgs.html) * [gen::Schema::FieldBuilder](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/struct.FieldBuilder.html) * [gen::Schema::FixedSizeBinary](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/struct.FixedSizeBinary.html) * [gen::Schema::FixedSizeBinaryArgs](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/struct.FixedSizeBinaryArgs.html) * [gen::Schema::FixedSizeBinaryBuilder](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/struct.FixedSizeBinaryBuilder.html) * [gen::Schema::FixedSizeList](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/struct.FixedSizeList.html) * [gen::Schema::FixedSizeListArgs](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/struct.FixedSizeListArgs.html) * [gen::Schema::FixedSizeListBuilder](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/struct.FixedSizeListBuilder.html) * [gen::Schema::FloatingPoint](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/struct.FloatingPoint.html) * [gen::Schema::FloatingPointArgs](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/struct.FloatingPointArgs.html) * [gen::Schema::FloatingPointBuilder](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/struct.FloatingPointBuilder.html) * [gen::Schema::Int](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/struct.Int.html) * [gen::Schema::IntArgs](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/struct.IntArgs.html) * [gen::Schema::IntBuilder](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/struct.IntBuilder.html) * [gen::Schema::Interval](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/struct.Interval.html) * [gen::Schema::IntervalArgs](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/struct.IntervalArgs.html) * [gen::Schema::IntervalBuilder](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/struct.IntervalBuilder.html) * [gen::Schema::IntervalUnit](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/struct.IntervalUnit.html) * [gen::Schema::KeyValue](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/struct.KeyValue.html) * [gen::Schema::KeyValueArgs](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/struct.KeyValueArgs.html) * [gen::Schema::KeyValueBuilder](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/struct.KeyValueBuilder.html) * [gen::Schema::LargeBinary](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/struct.LargeBinary.html) * [gen::Schema::LargeBinaryArgs](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/struct.LargeBinaryArgs.html) * [gen::Schema::LargeBinaryBuilder](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/struct.LargeBinaryBuilder.html) * [gen::Schema::LargeList](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/struct.LargeList.html) * [gen::Schema::LargeListArgs](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/struct.LargeListArgs.html) * [gen::Schema::LargeListBuilder](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/struct.LargeListBuilder.html) * [gen::Schema::LargeListView](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/struct.LargeListView.html) * [gen::Schema::LargeListViewArgs](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/struct.LargeListViewArgs.html) * [gen::Schema::LargeListViewBuilder](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/struct.LargeListViewBuilder.html) * [gen::Schema::LargeUtf8](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/struct.LargeUtf8.html) * [gen::Schema::LargeUtf8Args](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/struct.LargeUtf8Args.html) * [gen::Schema::LargeUtf8Builder](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/struct.LargeUtf8Builder.html) * [gen::Schema::List](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/struct.List.html) * [gen::Schema::ListArgs](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/struct.ListArgs.html) * [gen::Schema::ListBuilder](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/struct.ListBuilder.html) * [gen::Schema::ListView](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/struct.ListView.html) * [gen::Schema::ListViewArgs](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/struct.ListViewArgs.html) * [gen::Schema::ListViewBuilder](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/struct.ListViewBuilder.html) * [gen::Schema::Map](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/struct.Map.html) * [gen::Schema::MapArgs](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/struct.MapArgs.html) * [gen::Schema::MapBuilder](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/struct.MapBuilder.html) * [gen::Schema::MetadataVersion](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/struct.MetadataVersion.html) * [gen::Schema::Null](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/struct.Null.html) * [gen::Schema::NullArgs](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/struct.NullArgs.html) * [gen::Schema::NullBuilder](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/struct.NullBuilder.html) * [gen::Schema::Precision](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/struct.Precision.html) * [gen::Schema::RunEndEncoded](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/struct.RunEndEncoded.html) * [gen::Schema::RunEndEncodedArgs](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/struct.RunEndEncodedArgs.html) * [gen::Schema::RunEndEncodedBuilder](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/struct.RunEndEncodedBuilder.html) * [gen::Schema::Schema](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/struct.Schema.html) * [gen::Schema::SchemaArgs](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/struct.SchemaArgs.html) * [gen::Schema::SchemaBuilder](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/struct.SchemaBuilder.html) * [gen::Schema::Struct\_](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/struct.Struct_.html) * [gen::Schema::Struct\_Args](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/struct.Struct_Args.html) * [gen::Schema::Struct\_Builder](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/struct.Struct_Builder.html) * [gen::Schema::Time](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/struct.Time.html) * [gen::Schema::TimeArgs](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/struct.TimeArgs.html) * [gen::Schema::TimeBuilder](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/struct.TimeBuilder.html) * [gen::Schema::TimeUnit](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/struct.TimeUnit.html) * [gen::Schema::Timestamp](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/struct.Timestamp.html) * [gen::Schema::TimestampArgs](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/struct.TimestampArgs.html) * [gen::Schema::TimestampBuilder](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/struct.TimestampBuilder.html) * [gen::Schema::Type](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/struct.Type.html) * [gen::Schema::TypeUnionTableOffset](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/struct.TypeUnionTableOffset.html) * [gen::Schema::Union](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/struct.Union.html) * [gen::Schema::UnionArgs](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/struct.UnionArgs.html) * [gen::Schema::UnionBuilder](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/struct.UnionBuilder.html) * [gen::Schema::UnionMode](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/struct.UnionMode.html) * [gen::Schema::Utf8](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/struct.Utf8.html) * [gen::Schema::Utf8Args](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/struct.Utf8Args.html) * [gen::Schema::Utf8Builder](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/struct.Utf8Builder.html) * [gen::Schema::Utf8View](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/struct.Utf8View.html) * [gen::Schema::Utf8ViewArgs](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/struct.Utf8ViewArgs.html) * [gen::Schema::Utf8ViewBuilder](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/struct.Utf8ViewBuilder.html) * [gen::SparseTensor::SparseMatrixCompressedAxis](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/SparseTensor/struct.SparseMatrixCompressedAxis.html) * [gen::SparseTensor::SparseMatrixIndexCSX](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/SparseTensor/struct.SparseMatrixIndexCSX.html) * [gen::SparseTensor::SparseMatrixIndexCSXArgs](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/SparseTensor/struct.SparseMatrixIndexCSXArgs.html) * [gen::SparseTensor::SparseMatrixIndexCSXBuilder](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/SparseTensor/struct.SparseMatrixIndexCSXBuilder.html) * [gen::SparseTensor::SparseTensor](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/SparseTensor/struct.SparseTensor.html) * [gen::SparseTensor::SparseTensorArgs](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/SparseTensor/struct.SparseTensorArgs.html) * [gen::SparseTensor::SparseTensorBuilder](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/SparseTensor/struct.SparseTensorBuilder.html) * [gen::SparseTensor::SparseTensorIndex](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/SparseTensor/struct.SparseTensorIndex.html) * [gen::SparseTensor::SparseTensorIndexCOO](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/SparseTensor/struct.SparseTensorIndexCOO.html) * [gen::SparseTensor::SparseTensorIndexCOOArgs](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/SparseTensor/struct.SparseTensorIndexCOOArgs.html) * [gen::SparseTensor::SparseTensorIndexCOOBuilder](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/SparseTensor/struct.SparseTensorIndexCOOBuilder.html) * [gen::SparseTensor::SparseTensorIndexCSF](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/SparseTensor/struct.SparseTensorIndexCSF.html) * [gen::SparseTensor::SparseTensorIndexCSFArgs](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/SparseTensor/struct.SparseTensorIndexCSFArgs.html) * [gen::SparseTensor::SparseTensorIndexCSFBuilder](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/SparseTensor/struct.SparseTensorIndexCSFBuilder.html) * [gen::SparseTensor::SparseTensorIndexUnionTableOffset](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/SparseTensor/struct.SparseTensorIndexUnionTableOffset.html) * [gen::Tensor::Tensor](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Tensor/struct.Tensor.html) * [gen::Tensor::TensorArgs](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Tensor/struct.TensorArgs.html) * [gen::Tensor::TensorBuilder](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Tensor/struct.TensorBuilder.html) * [gen::Tensor::TensorDim](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Tensor/struct.TensorDim.html) * [gen::Tensor::TensorDimArgs](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Tensor/struct.TensorDimArgs.html) * [gen::Tensor::TensorDimBuilder](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Tensor/struct.TensorDimBuilder.html) * [reader::FileDecoder](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileDecoder.html) * [reader::FileReader](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html) * [reader::FileReaderBuilder](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReaderBuilder.html) * [reader::RecordBatchDecoder](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.RecordBatchDecoder.html) * [reader::StreamDecoder](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamDecoder.html) * [reader::StreamReader](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html) * [writer::CompressionContext](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/writer/struct.CompressionContext.html) * [writer::DictionaryTracker](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/writer/struct.DictionaryTracker.html) * [writer::EncodedData](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/writer/struct.EncodedData.html) * [writer::FileWriter](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/writer/struct.FileWriter.html) * [writer::IpcDataGenerator](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/writer/struct.IpcDataGenerator.html) * [writer::IpcWriteOptions](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/writer/struct.IpcWriteOptions.html) * [writer::StreamWriter](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/writer/struct.StreamWriter.html) ### Enums * [gen::File::FooterOffset](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/File/enum.FooterOffset.html) * [gen::Message::BodyCompressionOffset](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Message/enum.BodyCompressionOffset.html) * [gen::Message::DictionaryBatchOffset](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Message/enum.DictionaryBatchOffset.html) * [gen::Message::MessageOffset](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Message/enum.MessageOffset.html) * [gen::Message::RecordBatchOffset](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Message/enum.RecordBatchOffset.html) * [gen::Schema::BinaryOffset](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/enum.BinaryOffset.html) * [gen::Schema::BinaryViewOffset](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/enum.BinaryViewOffset.html) * [gen::Schema::BoolOffset](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/enum.BoolOffset.html) * [gen::Schema::DateOffset](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/enum.DateOffset.html) * [gen::Schema::DecimalOffset](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/enum.DecimalOffset.html) * [gen::Schema::DictionaryEncodingOffset](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/enum.DictionaryEncodingOffset.html) * [gen::Schema::DurationOffset](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/enum.DurationOffset.html) * [gen::Schema::FieldOffset](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/enum.FieldOffset.html) * [gen::Schema::FixedSizeBinaryOffset](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/enum.FixedSizeBinaryOffset.html) * [gen::Schema::FixedSizeListOffset](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/enum.FixedSizeListOffset.html) * [gen::Schema::FloatingPointOffset](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/enum.FloatingPointOffset.html) * [gen::Schema::IntOffset](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/enum.IntOffset.html) * [gen::Schema::IntervalOffset](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/enum.IntervalOffset.html) * [gen::Schema::KeyValueOffset](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/enum.KeyValueOffset.html) * [gen::Schema::LargeBinaryOffset](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/enum.LargeBinaryOffset.html) * [gen::Schema::LargeListOffset](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/enum.LargeListOffset.html) * [gen::Schema::LargeListViewOffset](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/enum.LargeListViewOffset.html) * [gen::Schema::LargeUtf8Offset](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/enum.LargeUtf8Offset.html) * [gen::Schema::ListOffset](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/enum.ListOffset.html) * [gen::Schema::ListViewOffset](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/enum.ListViewOffset.html) * [gen::Schema::MapOffset](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/enum.MapOffset.html) * [gen::Schema::NullOffset](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/enum.NullOffset.html) * [gen::Schema::RunEndEncodedOffset](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/enum.RunEndEncodedOffset.html) * [gen::Schema::SchemaOffset](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/enum.SchemaOffset.html) * [gen::Schema::Struct\_Offset](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/enum.Struct_Offset.html) * [gen::Schema::TimeOffset](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/enum.TimeOffset.html) * [gen::Schema::TimestampOffset](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/enum.TimestampOffset.html) * [gen::Schema::UnionOffset](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/enum.UnionOffset.html) * [gen::Schema::Utf8Offset](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/enum.Utf8Offset.html) * [gen::Schema::Utf8ViewOffset](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/enum.Utf8ViewOffset.html) * [gen::SparseTensor::SparseMatrixIndexCSXOffset](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/SparseTensor/enum.SparseMatrixIndexCSXOffset.html) * [gen::SparseTensor::SparseTensorIndexCOOOffset](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/SparseTensor/enum.SparseTensorIndexCOOOffset.html) * [gen::SparseTensor::SparseTensorIndexCSFOffset](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/SparseTensor/enum.SparseTensorIndexCSFOffset.html) * [gen::SparseTensor::SparseTensorOffset](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/SparseTensor/enum.SparseTensorOffset.html) * [gen::Tensor::TensorDimOffset](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Tensor/enum.TensorDimOffset.html) * [gen::Tensor::TensorOffset](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Tensor/enum.TensorOffset.html) * [writer::DictionaryHandling](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/writer/enum.DictionaryHandling.html) * [writer::DictionaryUpdate](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/writer/enum.DictionaryUpdate.html) ### Functions * [convert::fb\_to\_schema](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/convert/fn.fb_to_schema.html) * [convert::metadata\_to\_fb](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/convert/fn.metadata_to_fb.html) * [convert::schema\_to\_fb\_offset](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/convert/fn.schema_to_fb_offset.html) * [convert::try\_schema\_from\_flatbuffer\_bytes](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/convert/fn.try_schema_from_flatbuffer_bytes.html) * [convert::try\_schema\_from\_ipc\_buffer](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/convert/fn.try_schema_from_ipc_buffer.html) * [gen::File::finish\_footer\_buffer](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/File/fn.finish_footer_buffer.html) * [gen::File::finish\_size\_prefixed\_footer\_buffer](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/File/fn.finish_size_prefixed_footer_buffer.html) * [gen::File::root\_as\_footer](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/File/fn.root_as_footer.html) * [gen::File::root\_as\_footer\_unchecked](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/File/fn.root_as_footer_unchecked.html) * [gen::File::root\_as\_footer\_with\_opts](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/File/fn.root_as_footer_with_opts.html) * [gen::File::size\_prefixed\_root\_as\_footer](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/File/fn.size_prefixed_root_as_footer.html) * [gen::File::size\_prefixed\_root\_as\_footer\_unchecked](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/File/fn.size_prefixed_root_as_footer_unchecked.html) * [gen::File::size\_prefixed\_root\_as\_footer\_with\_opts](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/File/fn.size_prefixed_root_as_footer_with_opts.html) * [gen::Message::finish\_message\_buffer](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Message/fn.finish_message_buffer.html) * [gen::Message::finish\_size\_prefixed\_message\_buffer](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Message/fn.finish_size_prefixed_message_buffer.html) * [gen::Message::root\_as\_message](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Message/fn.root_as_message.html) * [gen::Message::root\_as\_message\_unchecked](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Message/fn.root_as_message_unchecked.html) * [gen::Message::root\_as\_message\_with\_opts](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Message/fn.root_as_message_with_opts.html) * [gen::Message::size\_prefixed\_root\_as\_message](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Message/fn.size_prefixed_root_as_message.html) * [gen::Message::size\_prefixed\_root\_as\_message\_unchecked](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Message/fn.size_prefixed_root_as_message_unchecked.html) * [gen::Message::size\_prefixed\_root\_as\_message\_with\_opts](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Message/fn.size_prefixed_root_as_message_with_opts.html) * [gen::Schema::finish\_schema\_buffer](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/fn.finish_schema_buffer.html) * [gen::Schema::finish\_size\_prefixed\_schema\_buffer](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/fn.finish_size_prefixed_schema_buffer.html) * [gen::Schema::root\_as\_schema](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/fn.root_as_schema.html) * [gen::Schema::root\_as\_schema\_unchecked](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/fn.root_as_schema_unchecked.html) * [gen::Schema::root\_as\_schema\_with\_opts](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/fn.root_as_schema_with_opts.html) * [gen::Schema::size\_prefixed\_root\_as\_schema](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/fn.size_prefixed_root_as_schema.html) * [gen::Schema::size\_prefixed\_root\_as\_schema\_unchecked](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/fn.size_prefixed_root_as_schema_unchecked.html) * [gen::Schema::size\_prefixed\_root\_as\_schema\_with\_opts](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/fn.size_prefixed_root_as_schema_with_opts.html) * [gen::SparseTensor::finish\_size\_prefixed\_sparse\_tensor\_buffer](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/SparseTensor/fn.finish_size_prefixed_sparse_tensor_buffer.html) * [gen::SparseTensor::finish\_sparse\_tensor\_buffer](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/SparseTensor/fn.finish_sparse_tensor_buffer.html) * [gen::SparseTensor::root\_as\_sparse\_tensor](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/SparseTensor/fn.root_as_sparse_tensor.html) * [gen::SparseTensor::root\_as\_sparse\_tensor\_unchecked](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/SparseTensor/fn.root_as_sparse_tensor_unchecked.html) * [gen::SparseTensor::root\_as\_sparse\_tensor\_with\_opts](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/SparseTensor/fn.root_as_sparse_tensor_with_opts.html) * [gen::SparseTensor::size\_prefixed\_root\_as\_sparse\_tensor](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/SparseTensor/fn.size_prefixed_root_as_sparse_tensor.html) * [gen::SparseTensor::size\_prefixed\_root\_as\_sparse\_tensor\_unchecked](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/SparseTensor/fn.size_prefixed_root_as_sparse_tensor_unchecked.html) * [gen::SparseTensor::size\_prefixed\_root\_as\_sparse\_tensor\_with\_opts](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/SparseTensor/fn.size_prefixed_root_as_sparse_tensor_with_opts.html) * [gen::Tensor::finish\_size\_prefixed\_tensor\_buffer](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Tensor/fn.finish_size_prefixed_tensor_buffer.html) * [gen::Tensor::finish\_tensor\_buffer](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Tensor/fn.finish_tensor_buffer.html) * [gen::Tensor::root\_as\_tensor](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Tensor/fn.root_as_tensor.html) * [gen::Tensor::root\_as\_tensor\_unchecked](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Tensor/fn.root_as_tensor_unchecked.html) * [gen::Tensor::root\_as\_tensor\_with\_opts](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Tensor/fn.root_as_tensor_with_opts.html) * [gen::Tensor::size\_prefixed\_root\_as\_tensor](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Tensor/fn.size_prefixed_root_as_tensor.html) * [gen::Tensor::size\_prefixed\_root\_as\_tensor\_unchecked](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Tensor/fn.size_prefixed_root_as_tensor_unchecked.html) * [gen::Tensor::size\_prefixed\_root\_as\_tensor\_with\_opts](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Tensor/fn.size_prefixed_root_as_tensor_with_opts.html) * [reader::read\_dictionary](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/fn.read_dictionary.html) * [reader::read\_footer\_length](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/fn.read_footer_length.html) * [reader::read\_record\_batch](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/fn.read_record_batch.html) * [writer::write\_message](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/writer/fn.write_message.html) ### Constants * [gen::Message::ENUM\_MAX\_BODY\_COMPRESSION\_METHOD](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Message/constant.ENUM_MAX_BODY_COMPRESSION_METHOD.html) * [gen::Message::ENUM\_MAX\_COMPRESSION\_TYPE](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Message/constant.ENUM_MAX_COMPRESSION_TYPE.html) * [gen::Message::ENUM\_MAX\_MESSAGE\_HEADER](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Message/constant.ENUM_MAX_MESSAGE_HEADER.html) * [gen::Message::ENUM\_MIN\_BODY\_COMPRESSION\_METHOD](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Message/constant.ENUM_MIN_BODY_COMPRESSION_METHOD.html) * [gen::Message::ENUM\_MIN\_COMPRESSION\_TYPE](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Message/constant.ENUM_MIN_COMPRESSION_TYPE.html) * [gen::Message::ENUM\_MIN\_MESSAGE\_HEADER](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Message/constant.ENUM_MIN_MESSAGE_HEADER.html) * [gen::Message::ENUM\_VALUES\_BODY\_COMPRESSION\_METHOD](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Message/constant.ENUM_VALUES_BODY_COMPRESSION_METHOD.html) * [gen::Message::ENUM\_VALUES\_COMPRESSION\_TYPE](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Message/constant.ENUM_VALUES_COMPRESSION_TYPE.html) * [gen::Message::ENUM\_VALUES\_MESSAGE\_HEADER](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Message/constant.ENUM_VALUES_MESSAGE_HEADER.html) * [gen::Schema::ENUM\_MAX\_DATE\_UNIT](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/constant.ENUM_MAX_DATE_UNIT.html) * [gen::Schema::ENUM\_MAX\_DICTIONARY\_KIND](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/constant.ENUM_MAX_DICTIONARY_KIND.html) * [gen::Schema::ENUM\_MAX\_ENDIANNESS](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/constant.ENUM_MAX_ENDIANNESS.html) * [gen::Schema::ENUM\_MAX\_FEATURE](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/constant.ENUM_MAX_FEATURE.html) * [gen::Schema::ENUM\_MAX\_INTERVAL\_UNIT](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/constant.ENUM_MAX_INTERVAL_UNIT.html) * [gen::Schema::ENUM\_MAX\_METADATA\_VERSION](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/constant.ENUM_MAX_METADATA_VERSION.html) * [gen::Schema::ENUM\_MAX\_PRECISION](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/constant.ENUM_MAX_PRECISION.html) * [gen::Schema::ENUM\_MAX\_TIME\_UNIT](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/constant.ENUM_MAX_TIME_UNIT.html) * [gen::Schema::ENUM\_MAX\_TYPE](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/constant.ENUM_MAX_TYPE.html) * [gen::Schema::ENUM\_MAX\_UNION\_MODE](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/constant.ENUM_MAX_UNION_MODE.html) * [gen::Schema::ENUM\_MIN\_DATE\_UNIT](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/constant.ENUM_MIN_DATE_UNIT.html) * [gen::Schema::ENUM\_MIN\_DICTIONARY\_KIND](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/constant.ENUM_MIN_DICTIONARY_KIND.html) * [gen::Schema::ENUM\_MIN\_ENDIANNESS](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/constant.ENUM_MIN_ENDIANNESS.html) * [gen::Schema::ENUM\_MIN\_FEATURE](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/constant.ENUM_MIN_FEATURE.html) * [gen::Schema::ENUM\_MIN\_INTERVAL\_UNIT](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/constant.ENUM_MIN_INTERVAL_UNIT.html) * [gen::Schema::ENUM\_MIN\_METADATA\_VERSION](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/constant.ENUM_MIN_METADATA_VERSION.html) * [gen::Schema::ENUM\_MIN\_PRECISION](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/constant.ENUM_MIN_PRECISION.html) * [gen::Schema::ENUM\_MIN\_TIME\_UNIT](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/constant.ENUM_MIN_TIME_UNIT.html) * [gen::Schema::ENUM\_MIN\_TYPE](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/constant.ENUM_MIN_TYPE.html) * [gen::Schema::ENUM\_MIN\_UNION\_MODE](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/constant.ENUM_MIN_UNION_MODE.html) * [gen::Schema::ENUM\_VALUES\_DATE\_UNIT](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/constant.ENUM_VALUES_DATE_UNIT.html) * [gen::Schema::ENUM\_VALUES\_DICTIONARY\_KIND](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/constant.ENUM_VALUES_DICTIONARY_KIND.html) * [gen::Schema::ENUM\_VALUES\_ENDIANNESS](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/constant.ENUM_VALUES_ENDIANNESS.html) * [gen::Schema::ENUM\_VALUES\_FEATURE](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/constant.ENUM_VALUES_FEATURE.html) * [gen::Schema::ENUM\_VALUES\_INTERVAL\_UNIT](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/constant.ENUM_VALUES_INTERVAL_UNIT.html) * [gen::Schema::ENUM\_VALUES\_METADATA\_VERSION](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/constant.ENUM_VALUES_METADATA_VERSION.html) * [gen::Schema::ENUM\_VALUES\_PRECISION](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/constant.ENUM_VALUES_PRECISION.html) * [gen::Schema::ENUM\_VALUES\_TIME\_UNIT](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/constant.ENUM_VALUES_TIME_UNIT.html) * [gen::Schema::ENUM\_VALUES\_TYPE](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/constant.ENUM_VALUES_TYPE.html) * [gen::Schema::ENUM\_VALUES\_UNION\_MODE](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/Schema/constant.ENUM_VALUES_UNION_MODE.html) * [gen::SparseTensor::ENUM\_MAX\_SPARSE\_MATRIX\_COMPRESSED\_AXIS](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/SparseTensor/constant.ENUM_MAX_SPARSE_MATRIX_COMPRESSED_AXIS.html) * [gen::SparseTensor::ENUM\_MAX\_SPARSE\_TENSOR\_INDEX](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/SparseTensor/constant.ENUM_MAX_SPARSE_TENSOR_INDEX.html) * [gen::SparseTensor::ENUM\_MIN\_SPARSE\_MATRIX\_COMPRESSED\_AXIS](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/SparseTensor/constant.ENUM_MIN_SPARSE_MATRIX_COMPRESSED_AXIS.html) * [gen::SparseTensor::ENUM\_MIN\_SPARSE\_TENSOR\_INDEX](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/SparseTensor/constant.ENUM_MIN_SPARSE_TENSOR_INDEX.html) * [gen::SparseTensor::ENUM\_VALUES\_SPARSE\_MATRIX\_COMPRESSED\_AXIS](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/SparseTensor/constant.ENUM_VALUES_SPARSE_MATRIX_COMPRESSED_AXIS.html) * [gen::SparseTensor::ENUM\_VALUES\_SPARSE\_TENSOR\_INDEX](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/gen/SparseTensor/constant.ENUM_VALUES_SPARSE_TENSOR_INDEX.html) --- # List of all items in this crate [Docs.rs](https://docs.rs/) * [arrow-schema-58.1.0](https://docs.rs/arrow-schema/58.1.0/arrow_schema/all.html# "Defines the logical types for arrow arrays") * arrow-schema 58.1.0 * [Docs.rs crate page](https://docs.rs/crate/arrow-schema/58.1.0 "See arrow-schema in docs.rs") * [Apache-2.0](https://spdx.org/licenses/Apache-2.0) * Links * [Homepage](https://github.com/apache/arrow-rs) * [Repository](https://github.com/apache/arrow-rs) * [crates.io](https://crates.io/crates/arrow-schema "See arrow-schema in crates.io") * [Source](https://docs.rs/crate/arrow-schema/58.1.0/source/ "Browse source of arrow-schema-58.1.0") * Owners * [andygrove](https://crates.io/users/andygrove) * [xhochy](https://crates.io/users/xhochy) * [nevi-me](https://crates.io/users/nevi-me) * [alamb](https://crates.io/users/alamb) * [tustvold](https://crates.io/users/tustvold) * Dependencies * * [bitflags ^2.0.0 _normal_ _optional_](https://docs.rs/bitflags/^2.0.0/) * [serde ^1.0 _normal_ _optional_](https://docs.rs/serde/^1.0/) * [serde\_core ^1.0 _normal_ _optional_](https://docs.rs/serde_core/^1.0/) * [serde\_json ^1.0 _normal_ _optional_](https://docs.rs/serde_json/^1.0/) * [criterion ^0.8.0 _dev_](https://docs.rs/criterion/^0.8.0/) * [insta ^1.46.3 _dev_](https://docs.rs/insta/^1.46.3/) * [postcard ^1.0.10 _dev_](https://docs.rs/postcard/^1.0.10/) * Versions * [**100%** of the crate is documented](https://docs.rs/crate/arrow-schema/58.1.0) * [Platform](https://docs.rs/arrow-schema/58.1.0/arrow_schema/all.html#) * [aarch64-apple-darwin](https://docs.rs/crate/arrow-schema/58.1.0/target-redirect/aarch64-apple-darwin/arrow_schema/all.html) * [aarch64-unknown-linux-gnu](https://docs.rs/crate/arrow-schema/58.1.0/target-redirect/aarch64-unknown-linux-gnu/arrow_schema/all.html) * [i686-pc-windows-msvc](https://docs.rs/crate/arrow-schema/58.1.0/target-redirect/i686-pc-windows-msvc/arrow_schema/all.html) * [x86\_64-pc-windows-msvc](https://docs.rs/crate/arrow-schema/58.1.0/target-redirect/x86_64-pc-windows-msvc/arrow_schema/all.html) * [x86\_64-unknown-linux-gnu](https://docs.rs/crate/arrow-schema/58.1.0/target-redirect/arrow_schema/all.html) * [Feature flags](https://docs.rs/crate/arrow-schema/58.1.0/features "Browse available feature flags of arrow-schema-58.1.0") * [docs.rs](https://docs.rs/arrow-schema/58.1.0/arrow_schema/all.html#) * [About docs.rs](https://docs.rs/about) * [Badges](https://docs.rs/about/badges) * [Builds](https://docs.rs/about/builds) * [Metadata](https://docs.rs/about/metadata) * [Shorthand URLs](https://docs.rs/about/redirections) * [Download](https://docs.rs/about/download) * [Rustdoc JSON](https://docs.rs/about/rustdoc-json) * [Build queue](https://docs.rs/releases/queue) * [Privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#docs.rs) * [Rust](https://docs.rs/arrow-schema/58.1.0/arrow_schema/all.html#) * [Rust website](https://www.rust-lang.org/) * [The Book](https://doc.rust-lang.org/book/) * [Standard Library API Reference](https://doc.rust-lang.org/std/) * [Rust by Example](https://doc.rust-lang.org/rust-by-example/) * [The Cargo Guide](https://doc.rust-lang.org/cargo/guide/) * [Clippy Documentation](https://doc.rust-lang.org/nightly/clippy) [Skip to main content](https://docs.rs/arrow-schema/58.1.0/arrow_schema/all.html#main-content) [All](https://docs.rs/arrow-schema/58.1.0/arrow_schema/all.html#) ------------------------------------------------------------------ List of all items ================= ### Structs * [Field](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html) * [Fields](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Fields.html) * [Schema](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Schema.html) * [SchemaBuilder](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.SchemaBuilder.html) * [SortOptions](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.SortOptions.html) * [UnionFields](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.UnionFields.html) * [extension::Bool8](https://docs.rs/arrow-schema/58.1.0/arrow_schema/extension/struct.Bool8.html) * [extension::FixedShapeTensor](https://docs.rs/arrow-schema/58.1.0/arrow_schema/extension/struct.FixedShapeTensor.html) * [extension::FixedShapeTensorMetadata](https://docs.rs/arrow-schema/58.1.0/arrow_schema/extension/struct.FixedShapeTensorMetadata.html) * [extension::Json](https://docs.rs/arrow-schema/58.1.0/arrow_schema/extension/struct.Json.html) * [extension::JsonMetadata](https://docs.rs/arrow-schema/58.1.0/arrow_schema/extension/struct.JsonMetadata.html) * [extension::Opaque](https://docs.rs/arrow-schema/58.1.0/arrow_schema/extension/struct.Opaque.html) * [extension::OpaqueMetadata](https://docs.rs/arrow-schema/58.1.0/arrow_schema/extension/struct.OpaqueMetadata.html) * [extension::TimestampWithOffset](https://docs.rs/arrow-schema/58.1.0/arrow_schema/extension/struct.TimestampWithOffset.html) * [extension::Uuid](https://docs.rs/arrow-schema/58.1.0/arrow_schema/extension/struct.Uuid.html) * [extension::VariableShapeTensor](https://docs.rs/arrow-schema/58.1.0/arrow_schema/extension/struct.VariableShapeTensor.html) * [extension::VariableShapeTensorMetadata](https://docs.rs/arrow-schema/58.1.0/arrow_schema/extension/struct.VariableShapeTensorMetadata.html) * [ffi::FFI\_ArrowSchema](https://docs.rs/arrow-schema/58.1.0/arrow_schema/ffi/struct.FFI_ArrowSchema.html) * [ffi::Flags](https://docs.rs/arrow-schema/58.1.0/arrow_schema/ffi/struct.Flags.html) ### Enums * [ArrowError](https://docs.rs/arrow-schema/58.1.0/arrow_schema/enum.ArrowError.html) * [DataType](https://docs.rs/arrow-schema/58.1.0/arrow_schema/enum.DataType.html) * [IntervalUnit](https://docs.rs/arrow-schema/58.1.0/arrow_schema/enum.IntervalUnit.html) * [TimeUnit](https://docs.rs/arrow-schema/58.1.0/arrow_schema/enum.TimeUnit.html) * [UnionMode](https://docs.rs/arrow-schema/58.1.0/arrow_schema/enum.UnionMode.html) * [extension::CanonicalExtensionType](https://docs.rs/arrow-schema/58.1.0/arrow_schema/extension/enum.CanonicalExtensionType.html) ### Traits * [extension::ExtensionType](https://docs.rs/arrow-schema/58.1.0/arrow_schema/extension/trait.ExtensionType.html) ### Type Aliases * [FieldRef](https://docs.rs/arrow-schema/58.1.0/arrow_schema/type.FieldRef.html) * [SchemaRef](https://docs.rs/arrow-schema/58.1.0/arrow_schema/type.SchemaRef.html) ### Constants * [DECIMAL128\_MAX\_PRECISION](https://docs.rs/arrow-schema/58.1.0/arrow_schema/constant.DECIMAL128_MAX_PRECISION.html) * [DECIMAL128\_MAX\_SCALE](https://docs.rs/arrow-schema/58.1.0/arrow_schema/constant.DECIMAL128_MAX_SCALE.html) * [DECIMAL256\_MAX\_PRECISION](https://docs.rs/arrow-schema/58.1.0/arrow_schema/constant.DECIMAL256_MAX_PRECISION.html) * [DECIMAL256\_MAX\_SCALE](https://docs.rs/arrow-schema/58.1.0/arrow_schema/constant.DECIMAL256_MAX_SCALE.html) * [DECIMAL32\_DEFAULT\_SCALE](https://docs.rs/arrow-schema/58.1.0/arrow_schema/constant.DECIMAL32_DEFAULT_SCALE.html) * [DECIMAL32\_MAX\_PRECISION](https://docs.rs/arrow-schema/58.1.0/arrow_schema/constant.DECIMAL32_MAX_PRECISION.html) * [DECIMAL32\_MAX\_SCALE](https://docs.rs/arrow-schema/58.1.0/arrow_schema/constant.DECIMAL32_MAX_SCALE.html) * [DECIMAL64\_DEFAULT\_SCALE](https://docs.rs/arrow-schema/58.1.0/arrow_schema/constant.DECIMAL64_DEFAULT_SCALE.html) * [DECIMAL64\_MAX\_PRECISION](https://docs.rs/arrow-schema/58.1.0/arrow_schema/constant.DECIMAL64_MAX_PRECISION.html) * [DECIMAL64\_MAX\_SCALE](https://docs.rs/arrow-schema/58.1.0/arrow_schema/constant.DECIMAL64_MAX_SCALE.html) * [DECIMAL\_DEFAULT\_SCALE](https://docs.rs/arrow-schema/58.1.0/arrow_schema/constant.DECIMAL_DEFAULT_SCALE.html) * [extension::EXTENSION\_TYPE\_METADATA\_KEY](https://docs.rs/arrow-schema/58.1.0/arrow_schema/extension/constant.EXTENSION_TYPE_METADATA_KEY.html) * [extension::EXTENSION\_TYPE\_NAME\_KEY](https://docs.rs/arrow-schema/58.1.0/arrow_schema/extension/constant.EXTENSION_TYPE_NAME_KEY.html) --- # ArrayAccessor in arrow::array - Rust [Docs.rs](https://docs.rs/) * [arrow-58.1.0](https://docs.rs/arrow/58.1.0/arrow/array/trait.ArrayAccessor.html# "Rust implementation of Apache Arrow") * arrow 58.1.0 * [Docs.rs crate page](https://docs.rs/crate/arrow/58.1.0 "See arrow in docs.rs") * [Apache-2.0](https://spdx.org/licenses/Apache-2.0) * Links * [Homepage](https://github.com/apache/arrow-rs) * [Repository](https://github.com/apache/arrow-rs) * [crates.io](https://crates.io/crates/arrow "See arrow in crates.io") * [Source](https://docs.rs/crate/arrow/58.1.0/source/ "Browse source of arrow-58.1.0") * Owners * [andygrove](https://crates.io/users/andygrove) * [kou](https://crates.io/users/kou) * [kszucs](https://crates.io/users/kszucs) * [xhochy](https://crates.io/users/xhochy) * [nevi-me](https://crates.io/users/nevi-me) * [alamb](https://crates.io/users/alamb) * [tustvold](https://crates.io/users/tustvold) * Dependencies * * [arrow-arith ^58.1.0 _normal_](https://docs.rs/arrow-arith/^58.1.0/) * [arrow-array ^58.1.0 _normal_](https://docs.rs/arrow-array/^58.1.0/) * [arrow-buffer ^58.1.0 _normal_](https://docs.rs/arrow-buffer/^58.1.0/) * [arrow-cast ^58.1.0 _normal_](https://docs.rs/arrow-cast/^58.1.0/) * [arrow-csv ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-csv/^58.1.0/) * [arrow-data ^58.1.0 _normal_](https://docs.rs/arrow-data/^58.1.0/) * [arrow-ipc ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-ipc/^58.1.0/) * [arrow-json ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-json/^58.1.0/) * [arrow-ord ^58.1.0 _normal_](https://docs.rs/arrow-ord/^58.1.0/) * [arrow-pyarrow ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-pyarrow/^58.1.0/) * [arrow-row ^58.1.0 _normal_](https://docs.rs/arrow-row/^58.1.0/) * [arrow-schema ^58.1.0 _normal_](https://docs.rs/arrow-schema/^58.1.0/) * [arrow-select ^58.1.0 _normal_](https://docs.rs/arrow-select/^58.1.0/) * [arrow-string ^58.1.0 _normal_](https://docs.rs/arrow-string/^58.1.0/) * [half ^2.1 _normal_ _optional_](https://docs.rs/half/^2.1/) * [rand ^0.9 _normal_ _optional_](https://docs.rs/rand/^0.9/) * [bytes ^1.9 _dev_](https://docs.rs/bytes/^1.9/) * [chrono ^0.4.40 _dev_](https://docs.rs/chrono/^0.4.40/) * [criterion ^0.8.0 _dev_](https://docs.rs/criterion/^0.8.0/) * [half ^2.1 _dev_](https://docs.rs/half/^2.1/) * [memmap2 ^0.9.3 _dev_](https://docs.rs/memmap2/^0.9.3/) * [rand ^0.9 _dev_](https://docs.rs/rand/^0.9/) * [serde ^1.0 _dev_](https://docs.rs/serde/^1.0/) * Versions * [**100%** of the crate is documented](https://docs.rs/crate/arrow/58.1.0) * [Platform](https://docs.rs/arrow/58.1.0/arrow/array/trait.ArrayAccessor.html#) * [x86\_64-unknown-linux-gnu](https://docs.rs/crate/arrow/58.1.0/target-redirect/arrow/array/trait.ArrayAccessor.html) * [Feature flags](https://docs.rs/crate/arrow/58.1.0/features "Browse available feature flags of arrow-58.1.0") * [docs.rs](https://docs.rs/arrow/58.1.0/arrow/array/trait.ArrayAccessor.html#) * [About docs.rs](https://docs.rs/about) * [Badges](https://docs.rs/about/badges) * [Builds](https://docs.rs/about/builds) * [Metadata](https://docs.rs/about/metadata) * [Shorthand URLs](https://docs.rs/about/redirections) * [Download](https://docs.rs/about/download) * [Rustdoc JSON](https://docs.rs/about/rustdoc-json) * [Build queue](https://docs.rs/releases/queue) * [Privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#docs.rs) * [Rust](https://docs.rs/arrow/58.1.0/arrow/array/trait.ArrayAccessor.html#) * [Rust website](https://www.rust-lang.org/) * [The Book](https://doc.rust-lang.org/book/) * [Standard Library API Reference](https://doc.rust-lang.org/std/) * [Rust by Example](https://doc.rust-lang.org/rust-by-example/) * [The Cargo Guide](https://doc.rust-lang.org/cargo/guide/) * [Clippy Documentation](https://doc.rust-lang.org/nightly/clippy) [Skip to main content](https://docs.rs/arrow/58.1.0/arrow/array/trait.ArrayAccessor.html#main-content) [ArrayAccessor](https://docs.rs/arrow/58.1.0/arrow/array/trait.ArrayAccessor.html#) ------------------------------------------------------------------------------------ [arrow](https://docs.rs/arrow/58.1.0/arrow/index.html) ::[array](https://docs.rs/arrow/58.1.0/arrow/array/index.html) Trait ArrayAccessor Copy item path ================================== [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/mod.rs.html#671) pub trait ArrayAccessor: Array { type Item: Send + Sync; // Required methods fn value(&self, index: usize) -> Self::Item; unsafe fn value_unchecked(&self, index: usize) -> Self::Item; } Expand description A generic trait for accessing the values of an [`Array`](https://docs.rs/arrow/58.1.0/arrow/array/trait.Array.html "trait arrow::array::Array") This trait helps write specialized implementations of algorithms for different array types. Specialized implementations allow the compiler to optimize the code for the specific array type, which can lead to significant performance improvements. [§](https://docs.rs/arrow/58.1.0/arrow/array/trait.ArrayAccessor.html#example) Example -------------------------------------------------------------------------------------- For example, to write three different implementations of a string length function for [`StringArray`](https://docs.rs/arrow/58.1.0/arrow/array/type.StringArray.html "type arrow::array::StringArray") , [`LargeStringArray`](https://docs.rs/arrow/58.1.0/arrow/array/type.LargeStringArray.html "type arrow::array::LargeStringArray") , and [`StringViewArray`](https://docs.rs/arrow/58.1.0/arrow/array/type.StringViewArray.html "type arrow::array::StringViewArray") , you can write /// This function takes a dynamically typed `ArrayRef` and calls /// calls one of three specialized implementations fn character_length(arg: ArrayRef) -> Result { match arg.data_type() { DataType::Utf8 => { // downcast the ArrayRef to a StringArray and call the specialized implementation let string_array = arg.as_string::(); character_length_general::(string_array) } DataType::LargeUtf8 => { character_length_general::(arg.as_string::()) } DataType::Utf8View => { character_length_general::(arg.as_string_view()) } _ => Err(ArrowError::InvalidArgumentError("Unsupported data type".to_string())), } } /// A generic implementation of the character_length function /// This function uses the `ArrayAccessor` trait to access the values of the array /// so the compiler can generated specialized implementations for different array types /// /// Returns a new array with the length of each string in the input array /// * Int32Array for Utf8 and Utf8View arrays (lengths are 32-bit integers) /// * Int64Array for LargeUtf8 arrays (lengths are 64-bit integers) /// /// This is generic on the type of the primitive array (different string arrays have /// different lengths) and the type of the array accessor (different string arrays /// have different ways to access the values) fn character_length_general<'a, T: ArrowPrimitiveType, V: ArrayAccessor>( array: V, ) -> Result where T::Native: OffsetSizeTrait, { let iter = ArrayIter::new(array); // Create a Int32Array / Int64Array with the length of each string let result = iter .map(|string| { string.map(|string: &str| { T::Native::from_usize(string.chars().count()) .expect("should not fail as string.chars will always return integer") }) }) .collect::>(); /// Return the result as a new ArrayRef (dynamically typed) Ok(Arc::new(result) as ArrayRef) } [§](https://docs.rs/arrow/58.1.0/arrow/array/trait.ArrayAccessor.html#validity) Validity ---------------------------------------------------------------------------------------- An [`ArrayAccessor`](https://docs.rs/arrow/58.1.0/arrow/array/trait.ArrayAccessor.html "trait arrow::array::ArrayAccessor") must always return a well-defined value for an index that is within the bounds `0..Array::len`, including for null indexes where [`Array::is_null`](https://docs.rs/arrow/58.1.0/arrow/array/trait.Array.html#method.is_null "method arrow::array::Array::is_null") is true. The value at null indexes is unspecified, and implementations must not rely on a specific value such as [`Default::default`](https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default "associated function core::default::Default::default") being returned, however, it must not be undefined Required Associated Types[§](https://docs.rs/arrow/58.1.0/arrow/array/trait.ArrayAccessor.html#required-associated-types) -------------------------------------------------------------------------------------------------------------------------- [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/mod.rs.html#673) #### type [Item](https://docs.rs/arrow/58.1.0/arrow/array/trait.ArrayAccessor.html#associatedtype.Item) : [Send](https://doc.rust-lang.org/nightly/core/marker/trait.Send.html "trait core::marker::Send") + [Sync](https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html "trait core::marker::Sync") The Arrow type of the element being accessed. Required Methods[§](https://docs.rs/arrow/58.1.0/arrow/array/trait.ArrayAccessor.html#required-methods) -------------------------------------------------------------------------------------------------------- [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/mod.rs.html#678) #### fn [value](https://docs.rs/arrow/58.1.0/arrow/array/trait.ArrayAccessor.html#tymethod.value) (&self, index: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) ) -> Self::[Item](https://docs.rs/arrow/58.1.0/arrow/array/trait.ArrayAccessor.html#associatedtype.Item "type arrow::array::ArrayAccessor::Item") Returns the element at index `i` ##### [§](https://docs.rs/arrow/58.1.0/arrow/array/trait.ArrayAccessor.html#panics) Panics Panics if the value is outside the bounds of the array [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/mod.rs.html#683) #### unsafe fn [value\_unchecked](https://docs.rs/arrow/58.1.0/arrow/array/trait.ArrayAccessor.html#tymethod.value_unchecked) (&self, index: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) ) -> Self::[Item](https://docs.rs/arrow/58.1.0/arrow/array/trait.ArrayAccessor.html#associatedtype.Item "type arrow::array::ArrayAccessor::Item") Returns the element at index `i` ##### [§](https://docs.rs/arrow/58.1.0/arrow/array/trait.ArrayAccessor.html#safety) Safety Caller is responsible for ensuring that the index is within the bounds of the array Implementors[§](https://docs.rs/arrow/58.1.0/arrow/array/trait.ArrayAccessor.html#implementors) ------------------------------------------------------------------------------------------------ [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/boolean_array.rs.html#443) [§](https://docs.rs/arrow/58.1.0/arrow/array/trait.ArrayAccessor.html#impl-ArrayAccessor-for-%26BooleanArray) ### impl [ArrayAccessor](https://docs.rs/arrow/58.1.0/arrow/array/trait.ArrayAccessor.html "trait arrow::array::ArrayAccessor") for &[BooleanArray](https://docs.rs/arrow/58.1.0/arrow/array/struct.BooleanArray.html "struct arrow::array::BooleanArray") [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/boolean_array.rs.html#444) [§](https://docs.rs/arrow/58.1.0/arrow/array/trait.ArrayAccessor.html#associatedtype.Item-1) #### type [Item](https://docs.rs/arrow/58.1.0/arrow/array/trait.ArrayAccessor.html#associatedtype.Item) = [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/fixed_size_list_array.rs.html#575) [§](https://docs.rs/arrow/58.1.0/arrow/array/trait.ArrayAccessor.html#impl-ArrayAccessor-for-%26FixedSizeListArray) ### impl [ArrayAccessor](https://docs.rs/arrow/58.1.0/arrow/array/trait.ArrayAccessor.html "trait arrow::array::ArrayAccessor") for &[FixedSizeListArray](https://docs.rs/arrow/58.1.0/arrow/array/struct.FixedSizeListArray.html "struct arrow::array::FixedSizeListArray") [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/fixed_size_list_array.rs.html#576) [§](https://docs.rs/arrow/58.1.0/arrow/array/trait.ArrayAccessor.html#associatedtype.Item-2) #### type [Item](https://docs.rs/arrow/58.1.0/arrow/array/trait.ArrayAccessor.html#associatedtype.Item) = [Arc](https://doc.rust-lang.org/nightly/alloc/sync/struct.Arc.html "struct alloc::sync::Arc") [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/map_array.rs.html#444) [§](https://docs.rs/arrow/58.1.0/arrow/array/trait.ArrayAccessor.html#impl-ArrayAccessor-for-%26MapArray) ### impl [ArrayAccessor](https://docs.rs/arrow/58.1.0/arrow/array/trait.ArrayAccessor.html "trait arrow::array::ArrayAccessor") for &[MapArray](https://docs.rs/arrow/58.1.0/arrow/array/struct.MapArray.html "struct arrow::array::MapArray") [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/map_array.rs.html#445) [§](https://docs.rs/arrow/58.1.0/arrow/array/trait.ArrayAccessor.html#associatedtype.Item-3) #### type [Item](https://docs.rs/arrow/58.1.0/arrow/array/trait.ArrayAccessor.html#associatedtype.Item) = [StructArray](https://docs.rs/arrow/58.1.0/arrow/array/struct.StructArray.html "struct arrow::array::StructArray") [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/fixed_size_list_array.rs.html#553) [§](https://docs.rs/arrow/58.1.0/arrow/array/trait.ArrayAccessor.html#impl-ArrayAccessor-for-FixedSizeListArray) ### impl [ArrayAccessor](https://docs.rs/arrow/58.1.0/arrow/array/trait.ArrayAccessor.html "trait arrow::array::ArrayAccessor") for [FixedSizeListArray](https://docs.rs/arrow/58.1.0/arrow/array/struct.FixedSizeListArray.html "struct arrow::array::FixedSizeListArray") [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/fixed_size_list_array.rs.html#554) [§](https://docs.rs/arrow/58.1.0/arrow/array/trait.ArrayAccessor.html#associatedtype.Item-4) #### type [Item](https://docs.rs/arrow/58.1.0/arrow/array/trait.ArrayAccessor.html#associatedtype.Item) = [Arc](https://doc.rust-lang.org/nightly/alloc/sync/struct.Arc.html "struct alloc::sync::Arc") [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/fixed_size_binary_array.rs.html#675) [§](https://docs.rs/arrow/58.1.0/arrow/array/trait.ArrayAccessor.html#impl-ArrayAccessor-for-%26FixedSizeBinaryArray) ### impl<'a> [ArrayAccessor](https://docs.rs/arrow/58.1.0/arrow/array/trait.ArrayAccessor.html "trait arrow::array::ArrayAccessor") for &'a [FixedSizeBinaryArray](https://docs.rs/arrow/58.1.0/arrow/array/struct.FixedSizeBinaryArray.html "struct arrow::array::FixedSizeBinaryArray") [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/fixed_size_binary_array.rs.html#676) [§](https://docs.rs/arrow/58.1.0/arrow/array/trait.ArrayAccessor.html#associatedtype.Item-5) #### type [Item](https://docs.rs/arrow/58.1.0/arrow/array/trait.ArrayAccessor.html#associatedtype.Item) = &'a \[[u8](https://doc.rust-lang.org/nightly/std/primitive.u8.html)\ \] [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/dictionary_array.rs.html#940-945) [§](https://docs.rs/arrow/58.1.0/arrow/array/trait.ArrayAccessor.html#impl-ArrayAccessor-for-TypedDictionaryArray%3C'a,+K,+V%3E) ### impl<'a, K, V> [ArrayAccessor](https://docs.rs/arrow/58.1.0/arrow/array/trait.ArrayAccessor.html "trait arrow::array::ArrayAccessor") for [TypedDictionaryArray](https://docs.rs/arrow/58.1.0/arrow/array/struct.TypedDictionaryArray.html "struct arrow::array::TypedDictionaryArray") <'a, K, V> where K: [ArrowDictionaryKeyType](https://docs.rs/arrow/58.1.0/arrow/datatypes/trait.ArrowDictionaryKeyType.html "trait arrow::datatypes::ArrowDictionaryKeyType") , V: [Sync](https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html "trait core::marker::Sync") + [Send](https://doc.rust-lang.org/nightly/core/marker/trait.Send.html "trait core::marker::Send") , [&'a V](https://doc.rust-lang.org/nightly/std/primitive.reference.html) : [ArrayAccessor](https://docs.rs/arrow/58.1.0/arrow/array/trait.ArrayAccessor.html "trait arrow::array::ArrayAccessor") , <[&'a V](https://doc.rust-lang.org/nightly/std/primitive.reference.html) as [ArrayAccessor](https://docs.rs/arrow/58.1.0/arrow/array/trait.ArrayAccessor.html "trait arrow::array::ArrayAccessor") \>::[Item](https://docs.rs/arrow/58.1.0/arrow/array/trait.ArrayAccessor.html#associatedtype.Item "type arrow::array::ArrayAccessor::Item") : [Default](https://doc.rust-lang.org/nightly/core/default/trait.Default.html "trait core::default::Default") , [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/dictionary_array.rs.html#947) [§](https://docs.rs/arrow/58.1.0/arrow/array/trait.ArrayAccessor.html#associatedtype.Item-6) #### type [Item](https://docs.rs/arrow/58.1.0/arrow/array/trait.ArrayAccessor.html#associatedtype.Item) = <[&'a V](https://doc.rust-lang.org/nightly/std/primitive.reference.html) as [ArrayAccessor](https://docs.rs/arrow/58.1.0/arrow/array/trait.ArrayAccessor.html "trait arrow::array::ArrayAccessor") \>::[Item](https://docs.rs/arrow/58.1.0/arrow/array/trait.ArrayAccessor.html#associatedtype.Item "type arrow::array::ArrayAccessor::Item") [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/run_array.rs.html#686-691) [§](https://docs.rs/arrow/58.1.0/arrow/array/trait.ArrayAccessor.html#impl-ArrayAccessor-for-TypedRunArray%3C'a,+R,+V%3E) ### impl<'a, R, V> [ArrayAccessor](https://docs.rs/arrow/58.1.0/arrow/array/trait.ArrayAccessor.html "trait arrow::array::ArrayAccessor") for [TypedRunArray](https://docs.rs/arrow/58.1.0/arrow/array/struct.TypedRunArray.html "struct arrow::array::TypedRunArray") <'a, R, V> where R: [RunEndIndexType](https://docs.rs/arrow/58.1.0/arrow/datatypes/trait.RunEndIndexType.html "trait arrow::datatypes::RunEndIndexType") , V: [Sync](https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html "trait core::marker::Sync") + [Send](https://doc.rust-lang.org/nightly/core/marker/trait.Send.html "trait core::marker::Send") , [&'a V](https://doc.rust-lang.org/nightly/std/primitive.reference.html) : [ArrayAccessor](https://docs.rs/arrow/58.1.0/arrow/array/trait.ArrayAccessor.html "trait arrow::array::ArrayAccessor") , <[&'a V](https://doc.rust-lang.org/nightly/std/primitive.reference.html) as [ArrayAccessor](https://docs.rs/arrow/58.1.0/arrow/array/trait.ArrayAccessor.html "trait arrow::array::ArrayAccessor") \>::[Item](https://docs.rs/arrow/58.1.0/arrow/array/trait.ArrayAccessor.html#associatedtype.Item "type arrow::array::ArrayAccessor::Item") : [Default](https://doc.rust-lang.org/nightly/core/default/trait.Default.html "trait core::default::Default") , [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/run_array.rs.html#693) [§](https://docs.rs/arrow/58.1.0/arrow/array/trait.ArrayAccessor.html#associatedtype.Item-7) #### type [Item](https://docs.rs/arrow/58.1.0/arrow/array/trait.ArrayAccessor.html#associatedtype.Item) = <[&'a V](https://doc.rust-lang.org/nightly/std/primitive.reference.html) as [ArrayAccessor](https://docs.rs/arrow/58.1.0/arrow/array/trait.ArrayAccessor.html "trait arrow::array::ArrayAccessor") \>::[Item](https://docs.rs/arrow/58.1.0/arrow/array/trait.ArrayAccessor.html#associatedtype.Item "type arrow::array::ArrayAccessor::Item") [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/byte_array.rs.html#539) [§](https://docs.rs/arrow/58.1.0/arrow/array/trait.ArrayAccessor.html#impl-ArrayAccessor-for-%26GenericByteArray%3CT%3E) ### impl<'a, T> [ArrayAccessor](https://docs.rs/arrow/58.1.0/arrow/array/trait.ArrayAccessor.html "trait arrow::array::ArrayAccessor") for &'a [GenericByteArray](https://docs.rs/arrow/58.1.0/arrow/array/struct.GenericByteArray.html "struct arrow::array::GenericByteArray") where T: [ByteArrayType](https://docs.rs/arrow/58.1.0/arrow/datatypes/trait.ByteArrayType.html "trait arrow::datatypes::ByteArrayType") , [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/byte_array.rs.html#540) [§](https://docs.rs/arrow/58.1.0/arrow/array/trait.ArrayAccessor.html#associatedtype.Item-8) #### type [Item](https://docs.rs/arrow/58.1.0/arrow/array/trait.ArrayAccessor.html#associatedtype.Item) = &'a ::[Native](https://docs.rs/arrow/58.1.0/arrow/datatypes/trait.ByteArrayType.html#associatedtype.Native "type arrow::datatypes::ByteArrayType::Native") [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/byte_view_array.rs.html#913) [§](https://docs.rs/arrow/58.1.0/arrow/array/trait.ArrayAccessor.html#impl-ArrayAccessor-for-%26GenericByteViewArray%3CT%3E) ### impl<'a, T> [ArrayAccessor](https://docs.rs/arrow/58.1.0/arrow/array/trait.ArrayAccessor.html "trait arrow::array::ArrayAccessor") for &'a [GenericByteViewArray](https://docs.rs/arrow/58.1.0/arrow/array/struct.GenericByteViewArray.html "struct arrow::array::GenericByteViewArray") where T: [ByteViewType](https://docs.rs/arrow/58.1.0/arrow/datatypes/trait.ByteViewType.html "trait arrow::datatypes::ByteViewType") + ?[Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/byte_view_array.rs.html#914) [§](https://docs.rs/arrow/58.1.0/arrow/array/trait.ArrayAccessor.html#associatedtype.Item-9) #### type [Item](https://docs.rs/arrow/58.1.0/arrow/array/trait.ArrayAccessor.html#associatedtype.Item) = &'a ::[Native](https://docs.rs/arrow/58.1.0/arrow/datatypes/trait.ByteViewType.html#associatedtype.Native "type arrow::datatypes::ByteViewType::Native") [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/list_array.rs.html#647) [§](https://docs.rs/arrow/58.1.0/arrow/array/trait.ArrayAccessor.html#impl-ArrayAccessor-for-%26GenericListArray%3COffsetSize%3E) ### impl [ArrayAccessor](https://docs.rs/arrow/58.1.0/arrow/array/trait.ArrayAccessor.html "trait arrow::array::ArrayAccessor") for &[GenericListArray](https://docs.rs/arrow/58.1.0/arrow/array/struct.GenericListArray.html "struct arrow::array::GenericListArray") where OffsetSize: [OffsetSizeTrait](https://docs.rs/arrow/58.1.0/arrow/array/trait.OffsetSizeTrait.html "trait arrow::array::OffsetSizeTrait") , [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/list_array.rs.html#648) [§](https://docs.rs/arrow/58.1.0/arrow/array/trait.ArrayAccessor.html#associatedtype.Item-10) #### type [Item](https://docs.rs/arrow/58.1.0/arrow/array/trait.ArrayAccessor.html#associatedtype.Item) = [Arc](https://doc.rust-lang.org/nightly/alloc/sync/struct.Arc.html "struct alloc::sync::Arc") [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/list_view_array.rs.html#406) [§](https://docs.rs/arrow/58.1.0/arrow/array/trait.ArrayAccessor.html#impl-ArrayAccessor-for-%26GenericListViewArray%3COffsetSize%3E) ### impl [ArrayAccessor](https://docs.rs/arrow/58.1.0/arrow/array/trait.ArrayAccessor.html "trait arrow::array::ArrayAccessor") for &[GenericListViewArray](https://docs.rs/arrow/58.1.0/arrow/array/struct.GenericListViewArray.html "struct arrow::array::GenericListViewArray") where OffsetSize: [OffsetSizeTrait](https://docs.rs/arrow/58.1.0/arrow/array/trait.OffsetSizeTrait.html "trait arrow::array::OffsetSizeTrait") , [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/list_view_array.rs.html#407) [§](https://docs.rs/arrow/58.1.0/arrow/array/trait.ArrayAccessor.html#associatedtype.Item-11) #### type [Item](https://docs.rs/arrow/58.1.0/arrow/array/trait.ArrayAccessor.html#associatedtype.Item) = [Arc](https://doc.rust-lang.org/nightly/alloc/sync/struct.Arc.html "struct alloc::sync::Arc") [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/primitive_array.rs.html#1259) [§](https://docs.rs/arrow/58.1.0/arrow/array/trait.ArrayAccessor.html#impl-ArrayAccessor-for-%26PrimitiveArray%3CT%3E) ### impl [ArrayAccessor](https://docs.rs/arrow/58.1.0/arrow/array/trait.ArrayAccessor.html "trait arrow::array::ArrayAccessor") for &[PrimitiveArray](https://docs.rs/arrow/58.1.0/arrow/array/struct.PrimitiveArray.html "struct arrow::array::PrimitiveArray") where T: [ArrowPrimitiveType](https://docs.rs/arrow/58.1.0/arrow/array/trait.ArrowPrimitiveType.html "trait arrow::array::ArrowPrimitiveType") , [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/array/primitive_array.rs.html#1260) [§](https://docs.rs/arrow/58.1.0/arrow/array/trait.ArrayAccessor.html#associatedtype.Item-12) #### type [Item](https://docs.rs/arrow/58.1.0/arrow/array/trait.ArrayAccessor.html#associatedtype.Item) = ::[Native](https://docs.rs/arrow/58.1.0/arrow/array/trait.ArrowPrimitiveType.html#associatedtype.Native "type arrow::array::ArrowPrimitiveType::Native") --- # arrow::temporal_conversions - Rust [Docs.rs](https://docs.rs/) * [arrow-58.1.0](https://docs.rs/arrow/58.1.0/arrow/temporal_conversions/index.html# "Rust implementation of Apache Arrow") * arrow 58.1.0 * [Docs.rs crate page](https://docs.rs/crate/arrow/58.1.0 "See arrow in docs.rs") * [Apache-2.0](https://spdx.org/licenses/Apache-2.0) * Links * [Homepage](https://github.com/apache/arrow-rs) * [Repository](https://github.com/apache/arrow-rs) * [crates.io](https://crates.io/crates/arrow "See arrow in crates.io") * [Source](https://docs.rs/crate/arrow/58.1.0/source/ "Browse source of arrow-58.1.0") * Owners * [andygrove](https://crates.io/users/andygrove) * [kou](https://crates.io/users/kou) * [kszucs](https://crates.io/users/kszucs) * [xhochy](https://crates.io/users/xhochy) * [nevi-me](https://crates.io/users/nevi-me) * [alamb](https://crates.io/users/alamb) * [tustvold](https://crates.io/users/tustvold) * Dependencies * * [arrow-arith ^58.1.0 _normal_](https://docs.rs/arrow-arith/^58.1.0/) * [arrow-array ^58.1.0 _normal_](https://docs.rs/arrow-array/^58.1.0/) * [arrow-buffer ^58.1.0 _normal_](https://docs.rs/arrow-buffer/^58.1.0/) * [arrow-cast ^58.1.0 _normal_](https://docs.rs/arrow-cast/^58.1.0/) * [arrow-csv ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-csv/^58.1.0/) * [arrow-data ^58.1.0 _normal_](https://docs.rs/arrow-data/^58.1.0/) * [arrow-ipc ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-ipc/^58.1.0/) * [arrow-json ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-json/^58.1.0/) * [arrow-ord ^58.1.0 _normal_](https://docs.rs/arrow-ord/^58.1.0/) * [arrow-pyarrow ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-pyarrow/^58.1.0/) * [arrow-row ^58.1.0 _normal_](https://docs.rs/arrow-row/^58.1.0/) * [arrow-schema ^58.1.0 _normal_](https://docs.rs/arrow-schema/^58.1.0/) * [arrow-select ^58.1.0 _normal_](https://docs.rs/arrow-select/^58.1.0/) * [arrow-string ^58.1.0 _normal_](https://docs.rs/arrow-string/^58.1.0/) * [half ^2.1 _normal_ _optional_](https://docs.rs/half/^2.1/) * [rand ^0.9 _normal_ _optional_](https://docs.rs/rand/^0.9/) * [bytes ^1.9 _dev_](https://docs.rs/bytes/^1.9/) * [chrono ^0.4.40 _dev_](https://docs.rs/chrono/^0.4.40/) * [criterion ^0.8.0 _dev_](https://docs.rs/criterion/^0.8.0/) * [half ^2.1 _dev_](https://docs.rs/half/^2.1/) * [memmap2 ^0.9.3 _dev_](https://docs.rs/memmap2/^0.9.3/) * [rand ^0.9 _dev_](https://docs.rs/rand/^0.9/) * [serde ^1.0 _dev_](https://docs.rs/serde/^1.0/) * Versions * [**100%** of the crate is documented](https://docs.rs/crate/arrow/58.1.0) * [Platform](https://docs.rs/arrow/58.1.0/arrow/temporal_conversions/index.html#) * [x86\_64-unknown-linux-gnu](https://docs.rs/crate/arrow/58.1.0/target-redirect/arrow/temporal_conversions/) * [Feature flags](https://docs.rs/crate/arrow/58.1.0/features "Browse available feature flags of arrow-58.1.0") * [docs.rs](https://docs.rs/arrow/58.1.0/arrow/temporal_conversions/index.html#) * [About docs.rs](https://docs.rs/about) * [Badges](https://docs.rs/about/badges) * [Builds](https://docs.rs/about/builds) * [Metadata](https://docs.rs/about/metadata) * [Shorthand URLs](https://docs.rs/about/redirections) * [Download](https://docs.rs/about/download) * [Rustdoc JSON](https://docs.rs/about/rustdoc-json) * [Build queue](https://docs.rs/releases/queue) * [Privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#docs.rs) * [Rust](https://docs.rs/arrow/58.1.0/arrow/temporal_conversions/index.html#) * [Rust website](https://www.rust-lang.org/) * [The Book](https://doc.rust-lang.org/book/) * [Standard Library API Reference](https://doc.rust-lang.org/std/) * [Rust by Example](https://doc.rust-lang.org/rust-by-example/) * [The Cargo Guide](https://doc.rust-lang.org/cargo/guide/) * [Clippy Documentation](https://doc.rust-lang.org/nightly/clippy) [Skip to main content](https://docs.rs/arrow/58.1.0/arrow/temporal_conversions/index.html#main-content) [Module temporal\_conversions](https://docs.rs/arrow/58.1.0/arrow/temporal_conversions/index.html#) ---------------------------------------------------------------------------------------------------- [arrow](https://docs.rs/arrow/58.1.0/arrow/index.html) Module temporal\_conversions Copy item path =========================================== [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/lib.rs.html#260) Expand description Conversion methods for dates and times. Constants[§](https://docs.rs/arrow/58.1.0/arrow/temporal_conversions/index.html#constants) ------------------------------------------------------------------------------------------- [MICROSECONDS](https://docs.rs/arrow/58.1.0/arrow/temporal_conversions/constant.MICROSECONDS.html "constant arrow::temporal_conversions::MICROSECONDS") Number of microseconds in a second [MICROSECONDS\_IN\_DAY](https://docs.rs/arrow/58.1.0/arrow/temporal_conversions/constant.MICROSECONDS_IN_DAY.html "constant arrow::temporal_conversions::MICROSECONDS_IN_DAY") Number of microseconds in a day [MILLISECONDS](https://docs.rs/arrow/58.1.0/arrow/temporal_conversions/constant.MILLISECONDS.html "constant arrow::temporal_conversions::MILLISECONDS") Number of milliseconds in a second [MILLISECONDS\_IN\_DAY](https://docs.rs/arrow/58.1.0/arrow/temporal_conversions/constant.MILLISECONDS_IN_DAY.html "constant arrow::temporal_conversions::MILLISECONDS_IN_DAY") Number of milliseconds in a day [NANOSECONDS](https://docs.rs/arrow/58.1.0/arrow/temporal_conversions/constant.NANOSECONDS.html "constant arrow::temporal_conversions::NANOSECONDS") Number of nanoseconds in a second [NANOSECONDS\_IN\_DAY](https://docs.rs/arrow/58.1.0/arrow/temporal_conversions/constant.NANOSECONDS_IN_DAY.html "constant arrow::temporal_conversions::NANOSECONDS_IN_DAY") Number of nanoseconds in a day [SECONDS\_IN\_DAY](https://docs.rs/arrow/58.1.0/arrow/temporal_conversions/constant.SECONDS_IN_DAY.html "constant arrow::temporal_conversions::SECONDS_IN_DAY") Number of seconds in a day [UNIX\_EPOCH\_DAY](https://docs.rs/arrow/58.1.0/arrow/temporal_conversions/constant.UNIX_EPOCH_DAY.html "constant arrow::temporal_conversions::UNIX_EPOCH_DAY") Constant from chrono crate Functions[§](https://docs.rs/arrow/58.1.0/arrow/temporal_conversions/index.html#functions) ------------------------------------------------------------------------------------------- [as\_date](https://docs.rs/arrow/58.1.0/arrow/temporal_conversions/fn.as_date.html "fn arrow::temporal_conversions::as_date") Converts an [`ArrowPrimitiveType`](https://docs.rs/arrow/58.1.0/arrow/array/trait.ArrowPrimitiveType.html "trait arrow::array::ArrowPrimitiveType") to [`NaiveDate`](https://docs.rs/chrono/0.4.44/x86_64-unknown-linux-gnu/chrono/naive/date/struct.NaiveDate.html "struct chrono::naive::date::NaiveDate") [as\_datetime](https://docs.rs/arrow/58.1.0/arrow/temporal_conversions/fn.as_datetime.html "fn arrow::temporal_conversions::as_datetime") Converts an [`ArrowPrimitiveType`](https://docs.rs/arrow/58.1.0/arrow/array/trait.ArrowPrimitiveType.html "trait arrow::array::ArrowPrimitiveType") to [`NaiveDateTime`](https://docs.rs/chrono/0.4.44/x86_64-unknown-linux-gnu/chrono/naive/datetime/struct.NaiveDateTime.html "struct chrono::naive::datetime::NaiveDateTime") [as\_datetime\_with\_timezone](https://docs.rs/arrow/58.1.0/arrow/temporal_conversions/fn.as_datetime_with_timezone.html "fn arrow::temporal_conversions::as_datetime_with_timezone") Converts an [`ArrowPrimitiveType`](https://docs.rs/arrow/58.1.0/arrow/array/trait.ArrowPrimitiveType.html "trait arrow::array::ArrowPrimitiveType") to [`DateTime`](https://docs.rs/chrono/0.4.44/x86_64-unknown-linux-gnu/chrono/datetime/struct.DateTime.html "struct chrono::datetime::DateTime") [as\_duration](https://docs.rs/arrow/58.1.0/arrow/temporal_conversions/fn.as_duration.html "fn arrow::temporal_conversions::as_duration") Converts an [`ArrowPrimitiveType`](https://docs.rs/arrow/58.1.0/arrow/array/trait.ArrowPrimitiveType.html "trait arrow::array::ArrowPrimitiveType") to [`Duration`](https://docs.rs/chrono/0.4.44/x86_64-unknown-linux-gnu/chrono/type.Duration.html "type chrono::Duration") [as\_time](https://docs.rs/arrow/58.1.0/arrow/temporal_conversions/fn.as_time.html "fn arrow::temporal_conversions::as_time") Converts an [`ArrowPrimitiveType`](https://docs.rs/arrow/58.1.0/arrow/array/trait.ArrowPrimitiveType.html "trait arrow::array::ArrowPrimitiveType") to [`NaiveTime`](https://docs.rs/chrono/0.4.44/x86_64-unknown-linux-gnu/chrono/naive/time/struct.NaiveTime.html "struct chrono::naive::time::NaiveTime") [date32\_to\_datetime](https://docs.rs/arrow/58.1.0/arrow/temporal_conversions/fn.date32_to_datetime.html "fn arrow::temporal_conversions::date32_to_datetime") converts a `i32` representing a `date32` to [`NaiveDateTime`](https://docs.rs/chrono/0.4.44/x86_64-unknown-linux-gnu/chrono/naive/datetime/struct.NaiveDateTime.html "struct chrono::naive::datetime::NaiveDateTime") [date64\_to\_datetime](https://docs.rs/arrow/58.1.0/arrow/temporal_conversions/fn.date64_to_datetime.html "fn arrow::temporal_conversions::date64_to_datetime") converts a `i64` representing a `date64` to [`NaiveDateTime`](https://docs.rs/chrono/0.4.44/x86_64-unknown-linux-gnu/chrono/naive/datetime/struct.NaiveDateTime.html "struct chrono::naive::datetime::NaiveDateTime") [duration\_ms\_to\_duration](https://docs.rs/arrow/58.1.0/arrow/temporal_conversions/fn.duration_ms_to_duration.html "fn arrow::temporal_conversions::duration_ms_to_duration") Deprecated converts a `i64` representing a `duration(ms)` to [`Duration`](https://docs.rs/chrono/0.4.44/x86_64-unknown-linux-gnu/chrono/type.Duration.html "type chrono::Duration") [duration\_ns\_to\_duration](https://docs.rs/arrow/58.1.0/arrow/temporal_conversions/fn.duration_ns_to_duration.html "fn arrow::temporal_conversions::duration_ns_to_duration") converts a `i64` representing a `duration(ns)` to [`Duration`](https://docs.rs/chrono/0.4.44/x86_64-unknown-linux-gnu/chrono/type.Duration.html "type chrono::Duration") [duration\_s\_to\_duration](https://docs.rs/arrow/58.1.0/arrow/temporal_conversions/fn.duration_s_to_duration.html "fn arrow::temporal_conversions::duration_s_to_duration") Deprecated converts a `i64` representing a `duration(s)` to [`Duration`](https://docs.rs/chrono/0.4.44/x86_64-unknown-linux-gnu/chrono/type.Duration.html "type chrono::Duration") [duration\_us\_to\_duration](https://docs.rs/arrow/58.1.0/arrow/temporal_conversions/fn.duration_us_to_duration.html "fn arrow::temporal_conversions::duration_us_to_duration") converts a `i64` representing a `duration(us)` to [`Duration`](https://docs.rs/chrono/0.4.44/x86_64-unknown-linux-gnu/chrono/type.Duration.html "type chrono::Duration") [time32ms\_to\_time](https://docs.rs/arrow/58.1.0/arrow/temporal_conversions/fn.time32ms_to_time.html "fn arrow::temporal_conversions::time32ms_to_time") converts a `i32` representing a `time32(ms)` to [`NaiveDateTime`](https://docs.rs/chrono/0.4.44/x86_64-unknown-linux-gnu/chrono/naive/datetime/struct.NaiveDateTime.html "struct chrono::naive::datetime::NaiveDateTime") [time32s\_to\_time](https://docs.rs/arrow/58.1.0/arrow/temporal_conversions/fn.time32s_to_time.html "fn arrow::temporal_conversions::time32s_to_time") converts a `i32` representing a `time32(s)` to [`NaiveDateTime`](https://docs.rs/chrono/0.4.44/x86_64-unknown-linux-gnu/chrono/naive/datetime/struct.NaiveDateTime.html "struct chrono::naive::datetime::NaiveDateTime") [time64ns\_to\_time](https://docs.rs/arrow/58.1.0/arrow/temporal_conversions/fn.time64ns_to_time.html "fn arrow::temporal_conversions::time64ns_to_time") converts a `i64` representing a `time64(ns)` to [`NaiveDateTime`](https://docs.rs/chrono/0.4.44/x86_64-unknown-linux-gnu/chrono/naive/datetime/struct.NaiveDateTime.html "struct chrono::naive::datetime::NaiveDateTime") [time64us\_to\_time](https://docs.rs/arrow/58.1.0/arrow/temporal_conversions/fn.time64us_to_time.html "fn arrow::temporal_conversions::time64us_to_time") converts a `i64` representing a `time64(us)` to [`NaiveDateTime`](https://docs.rs/chrono/0.4.44/x86_64-unknown-linux-gnu/chrono/naive/datetime/struct.NaiveDateTime.html "struct chrono::naive::datetime::NaiveDateTime") [time\_to\_time32ms](https://docs.rs/arrow/58.1.0/arrow/temporal_conversions/fn.time_to_time32ms.html "fn arrow::temporal_conversions::time_to_time32ms") converts [`NaiveTime`](https://docs.rs/chrono/0.4.44/x86_64-unknown-linux-gnu/chrono/naive/time/struct.NaiveTime.html "struct chrono::naive::time::NaiveTime") to a `i32` representing a `time32(ms)` [time\_to\_time32s](https://docs.rs/arrow/58.1.0/arrow/temporal_conversions/fn.time_to_time32s.html "fn arrow::temporal_conversions::time_to_time32s") converts [`NaiveTime`](https://docs.rs/chrono/0.4.44/x86_64-unknown-linux-gnu/chrono/naive/time/struct.NaiveTime.html "struct chrono::naive::time::NaiveTime") to a `i32` representing a `time32(s)` [time\_to\_time64ns](https://docs.rs/arrow/58.1.0/arrow/temporal_conversions/fn.time_to_time64ns.html "fn arrow::temporal_conversions::time_to_time64ns") converts [`NaiveTime`](https://docs.rs/chrono/0.4.44/x86_64-unknown-linux-gnu/chrono/naive/time/struct.NaiveTime.html "struct chrono::naive::time::NaiveTime") to a `i64` representing a `time64(ns)` [time\_to\_time64us](https://docs.rs/arrow/58.1.0/arrow/temporal_conversions/fn.time_to_time64us.html "fn arrow::temporal_conversions::time_to_time64us") converts [`NaiveTime`](https://docs.rs/chrono/0.4.44/x86_64-unknown-linux-gnu/chrono/naive/time/struct.NaiveTime.html "struct chrono::naive::time::NaiveTime") to a `i64` representing a `time64(us)` [timestamp\_ms\_to\_datetime](https://docs.rs/arrow/58.1.0/arrow/temporal_conversions/fn.timestamp_ms_to_datetime.html "fn arrow::temporal_conversions::timestamp_ms_to_datetime") converts a `i64` representing a `timestamp(ms)` to [`NaiveDateTime`](https://docs.rs/chrono/0.4.44/x86_64-unknown-linux-gnu/chrono/naive/datetime/struct.NaiveDateTime.html "struct chrono::naive::datetime::NaiveDateTime") [timestamp\_ns\_to\_datetime](https://docs.rs/arrow/58.1.0/arrow/temporal_conversions/fn.timestamp_ns_to_datetime.html "fn arrow::temporal_conversions::timestamp_ns_to_datetime") converts a `i64` representing a `timestamp(ns)` to [`NaiveDateTime`](https://docs.rs/chrono/0.4.44/x86_64-unknown-linux-gnu/chrono/naive/datetime/struct.NaiveDateTime.html "struct chrono::naive::datetime::NaiveDateTime") [timestamp\_s\_to\_date](https://docs.rs/arrow/58.1.0/arrow/temporal_conversions/fn.timestamp_s_to_date.html "fn arrow::temporal_conversions::timestamp_s_to_date") Similar to timestamp\_s\_to\_datetime but only compute `date` [timestamp\_s\_to\_datetime](https://docs.rs/arrow/58.1.0/arrow/temporal_conversions/fn.timestamp_s_to_datetime.html "fn arrow::temporal_conversions::timestamp_s_to_datetime") converts a `i64` representing a `timestamp(s)` to [`NaiveDateTime`](https://docs.rs/chrono/0.4.44/x86_64-unknown-linux-gnu/chrono/naive/datetime/struct.NaiveDateTime.html "struct chrono::naive::datetime::NaiveDateTime") [timestamp\_s\_to\_time](https://docs.rs/arrow/58.1.0/arrow/temporal_conversions/fn.timestamp_s_to_time.html "fn arrow::temporal_conversions::timestamp_s_to_time") Similar to timestamp\_s\_to\_datetime but only compute `time` [timestamp\_us\_to\_datetime](https://docs.rs/arrow/58.1.0/arrow/temporal_conversions/fn.timestamp_us_to_datetime.html "fn arrow::temporal_conversions::timestamp_us_to_datetime") converts a `i64` representing a `timestamp(us)` to [`NaiveDateTime`](https://docs.rs/chrono/0.4.44/x86_64-unknown-linux-gnu/chrono/naive/datetime/struct.NaiveDateTime.html "struct chrono::naive::datetime::NaiveDateTime") [try\_duration\_ms\_to\_duration](https://docs.rs/arrow/58.1.0/arrow/temporal_conversions/fn.try_duration_ms_to_duration.html "fn arrow::temporal_conversions::try_duration_ms_to_duration") converts a `i64` representing a `duration(ms)` to [`Option`](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") [try\_duration\_s\_to\_duration](https://docs.rs/arrow/58.1.0/arrow/temporal_conversions/fn.try_duration_s_to_duration.html "fn arrow::temporal_conversions::try_duration_s_to_duration") converts a `i64` representing a `duration(s)` to [`Option`](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") --- # java_lang - Rust [Docs.rs](https://docs.rs/) * [java-lang-0.1.0](https://docs.rs/java-lang/latest/java_lang/# "用于rust的java语法解析器。根据Java 23 规范实现。") * java-lang 0.1.0 * [Permalink](https://docs.rs/java-lang/0.1.0/java_lang/ "Get a link to this specific version") * [Docs.rs crate page](https://docs.rs/crate/java-lang/latest "See java-lang in docs.rs") * [Apache-2.0](https://spdx.org/licenses/Apache-2.0) * Links * [Repository](https://github.com/mzdk100/java-lang.git) * [crates.io](https://crates.io/crates/java-lang "See java-lang in crates.io") * [Source](https://docs.rs/crate/java-lang/latest/source/ "Browse source of java-lang-0.1.0") * Owners * [mzdk100](https://crates.io/users/mzdk100) * Dependencies * * [nom ^8.0.0 _normal_](https://docs.rs/nom/^8.0.0/) * [anyhow ^1.0.95 _dev_](https://docs.rs/anyhow/^1.0.95/) * Versions * [**62.61%** of the crate is documented](https://docs.rs/crate/java-lang/latest) * [Platform](https://docs.rs/java-lang/latest/java_lang/#) * [aarch64-apple-darwin](https://docs.rs/crate/java-lang/latest/target-redirect/aarch64-apple-darwin/java_lang/) * [aarch64-unknown-linux-gnu](https://docs.rs/crate/java-lang/latest/target-redirect/aarch64-unknown-linux-gnu/java_lang/) * [i686-pc-windows-msvc](https://docs.rs/crate/java-lang/latest/target-redirect/i686-pc-windows-msvc/java_lang/) * [x86\_64-pc-windows-msvc](https://docs.rs/crate/java-lang/latest/target-redirect/x86_64-pc-windows-msvc/java_lang/) * [x86\_64-unknown-linux-gnu](https://docs.rs/crate/java-lang/latest/target-redirect/java_lang/) * [Feature flags](https://docs.rs/crate/java-lang/latest/features "Browse available feature flags of java-lang-0.1.0") * [docs.rs](https://docs.rs/java-lang/latest/java_lang/#) * [About docs.rs](https://docs.rs/about) * [Badges](https://docs.rs/about/badges) * [Builds](https://docs.rs/about/builds) * [Metadata](https://docs.rs/about/metadata) * [Shorthand URLs](https://docs.rs/about/redirections) * [Download](https://docs.rs/about/download) * [Rustdoc JSON](https://docs.rs/about/rustdoc-json) * [Build queue](https://docs.rs/releases/queue) * [Privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#docs.rs) * [Rust](https://docs.rs/java-lang/latest/java_lang/#) * [Rust website](https://www.rust-lang.org/) * [The Book](https://doc.rust-lang.org/book/) * [Standard Library API Reference](https://doc.rust-lang.org/std/) * [Rust by Example](https://doc.rust-lang.org/rust-by-example/) * [The Cargo Guide](https://doc.rust-lang.org/cargo/guide/) * [Clippy Documentation](https://doc.rust-lang.org/nightly/clippy) [Crate java\_lang](https://docs.rs/java-lang/latest/java_lang/#) ----------------------------------------------------------------- Crate java\_lang Copy item path =============================== [Source](https://docs.rs/java-lang/latest/src/java_lang/lib.rs.html#1-6) Macros[§](https://docs.rs/java-lang/latest/java_lang/#macros) -------------------------------------------------------------- [ts](https://docs.rs/java-lang/latest/java_lang/macro.ts.html "macro java_lang::ts") Structs[§](https://docs.rs/java-lang/latest/java_lang/#structs) ---------------------------------------------------------------- [Annotation](https://docs.rs/java-lang/latest/java_lang/struct.Annotation.html "struct java_lang::Annotation") [AnnotationDeclaration](https://docs.rs/java-lang/latest/java_lang/struct.AnnotationDeclaration.html "struct java_lang::AnnotationDeclaration") [ClassDeclaration](https://docs.rs/java-lang/latest/java_lang/struct.ClassDeclaration.html "struct java_lang::ClassDeclaration") [DocumentationComment](https://docs.rs/java-lang/latest/java_lang/struct.DocumentationComment.html "struct java_lang::DocumentationComment") Java中的文档注释 [EnumDeclaration](https://docs.rs/java-lang/latest/java_lang/struct.EnumDeclaration.html "struct java_lang::EnumDeclaration") [InterfaceDeclaration](https://docs.rs/java-lang/latest/java_lang/struct.InterfaceDeclaration.html "struct java_lang::InterfaceDeclaration") [ModuleDeclaration](https://docs.rs/java-lang/latest/java_lang/struct.ModuleDeclaration.html "struct java_lang::ModuleDeclaration") ModuleDeclaration表示Java程序中的模块声明。 它包括模块的名称、注解、指令以及是否为开放模块。 [ModuleDirective](https://docs.rs/java-lang/latest/java_lang/struct.ModuleDirective.html "struct java_lang::ModuleDirective") [PackageDeclaration](https://docs.rs/java-lang/latest/java_lang/struct.PackageDeclaration.html "struct java_lang::PackageDeclaration") PackageDeclaration表示Java程序中的包声明。 它包括包的名称、修饰符和文档注释。 [TokenStream](https://docs.rs/java-lang/latest/java_lang/struct.TokenStream.html "struct java_lang::TokenStream") Enums[§](https://docs.rs/java-lang/latest/java_lang/#enums) ------------------------------------------------------------ [CompilationUnitDeclaration](https://docs.rs/java-lang/latest/java_lang/enum.CompilationUnitDeclaration.html "enum java_lang::CompilationUnitDeclaration") CompilationUnitDeclaration表示一个编译单元,它是Java程序语法语法的终极符号。 它可以是普通编译单元或模块编译单元。 [ImportDeclaration](https://docs.rs/java-lang/latest/java_lang/enum.ImportDeclaration.html "enum java_lang::ImportDeclaration") ImportDeclaration 枚举表示Java中的导入声明。 [Token](https://docs.rs/java-lang/latest/java_lang/enum.Token.html "enum java_lang::Token") [TopLevelClassOrInterfaceDeclaration](https://docs.rs/java-lang/latest/java_lang/enum.TopLevelClassOrInterfaceDeclaration.html "enum java_lang::TopLevelClassOrInterfaceDeclaration") TopLevelClassOrInterfaceDeclaration表示Java程序中的顶层类或接口声明。 它可以是类声明或接口声明。 Traits[§](https://docs.rs/java-lang/latest/java_lang/#traits) -------------------------------------------------------------- [AnnotationMethod](https://docs.rs/java-lang/latest/java_lang/trait.AnnotationMethod.html "trait java_lang::AnnotationMethod") [ArrayCreator](https://docs.rs/java-lang/latest/java_lang/trait.ArrayCreator.html "trait java_lang::ArrayCreator") [ArrayInitializer](https://docs.rs/java-lang/latest/java_lang/trait.ArrayInitializer.html "trait java_lang::ArrayInitializer") [ArraySelector](https://docs.rs/java-lang/latest/java_lang/trait.ArraySelector.html "trait java_lang::ArraySelector") [AssertStatement](https://docs.rs/java-lang/latest/java_lang/trait.AssertStatement.html "trait java_lang::AssertStatement") [Assignment](https://docs.rs/java-lang/latest/java_lang/trait.Assignment.html "trait java_lang::Assignment") [BasicType](https://docs.rs/java-lang/latest/java_lang/trait.BasicType.html "trait java_lang::BasicType") [BinaryOperation](https://docs.rs/java-lang/latest/java_lang/trait.BinaryOperation.html "trait java_lang::BinaryOperation") [BlockStatement](https://docs.rs/java-lang/latest/java_lang/trait.BlockStatement.html "trait java_lang::BlockStatement") [BreakStatement](https://docs.rs/java-lang/latest/java_lang/trait.BreakStatement.html "trait java_lang::BreakStatement") [Cast](https://docs.rs/java-lang/latest/java_lang/trait.Cast.html "trait java_lang::Cast") [CatchClause](https://docs.rs/java-lang/latest/java_lang/trait.CatchClause.html "trait java_lang::CatchClause") [CatchClauseParameter](https://docs.rs/java-lang/latest/java_lang/trait.CatchClauseParameter.html "trait java_lang::CatchClauseParameter") [ClassCreator](https://docs.rs/java-lang/latest/java_lang/trait.ClassCreator.html "trait java_lang::ClassCreator") [ClassReference](https://docs.rs/java-lang/latest/java_lang/trait.ClassReference.html "trait java_lang::ClassReference") [ConstantDeclaration](https://docs.rs/java-lang/latest/java_lang/trait.ConstantDeclaration.html "trait java_lang::ConstantDeclaration") [ConstructorDeclaration](https://docs.rs/java-lang/latest/java_lang/trait.ConstructorDeclaration.html "trait java_lang::ConstructorDeclaration") [ContinueStatement](https://docs.rs/java-lang/latest/java_lang/trait.ContinueStatement.html "trait java_lang::ContinueStatement") [Creator](https://docs.rs/java-lang/latest/java_lang/trait.Creator.html "trait java_lang::Creator") [DoStatement](https://docs.rs/java-lang/latest/java_lang/trait.DoStatement.html "trait java_lang::DoStatement") [ElementArrayValue](https://docs.rs/java-lang/latest/java_lang/trait.ElementArrayValue.html "trait java_lang::ElementArrayValue") [ElementValuePair](https://docs.rs/java-lang/latest/java_lang/trait.ElementValuePair.html "trait java_lang::ElementValuePair") [EnhancedForControl](https://docs.rs/java-lang/latest/java_lang/trait.EnhancedForControl.html "trait java_lang::EnhancedForControl") [EnumBody](https://docs.rs/java-lang/latest/java_lang/trait.EnumBody.html "trait java_lang::EnumBody") [EnumConstantDeclaration](https://docs.rs/java-lang/latest/java_lang/trait.EnumConstantDeclaration.html "trait java_lang::EnumConstantDeclaration") [ExplicitConstructorInvocation](https://docs.rs/java-lang/latest/java_lang/trait.ExplicitConstructorInvocation.html "trait java_lang::ExplicitConstructorInvocation") [Expression](https://docs.rs/java-lang/latest/java_lang/trait.Expression.html "trait java_lang::Expression") [FieldDeclaration](https://docs.rs/java-lang/latest/java_lang/trait.FieldDeclaration.html "trait java_lang::FieldDeclaration") member [ForControl](https://docs.rs/java-lang/latest/java_lang/trait.ForControl.html "trait java_lang::ForControl") [ForStatement](https://docs.rs/java-lang/latest/java_lang/trait.ForStatement.html "trait java_lang::ForStatement") [FormalParameter](https://docs.rs/java-lang/latest/java_lang/trait.FormalParameter.html "trait java_lang::FormalParameter") [IfStatement](https://docs.rs/java-lang/latest/java_lang/trait.IfStatement.html "trait java_lang::IfStatement") [InferredFormalParameter](https://docs.rs/java-lang/latest/java_lang/trait.InferredFormalParameter.html "trait java_lang::InferredFormalParameter") [InnerClassCreator](https://docs.rs/java-lang/latest/java_lang/trait.InnerClassCreator.html "trait java_lang::InnerClassCreator") [Invocation](https://docs.rs/java-lang/latest/java_lang/trait.Invocation.html "trait java_lang::Invocation") [LambdaExpression](https://docs.rs/java-lang/latest/java_lang/trait.LambdaExpression.html "trait java_lang::LambdaExpression") [Literal](https://docs.rs/java-lang/latest/java_lang/trait.Literal.html "trait java_lang::Literal") [LocalVariableDeclaration](https://docs.rs/java-lang/latest/java_lang/trait.LocalVariableDeclaration.html "trait java_lang::LocalVariableDeclaration") [MemberReference](https://docs.rs/java-lang/latest/java_lang/trait.MemberReference.html "trait java_lang::MemberReference") [MethodDeclaration](https://docs.rs/java-lang/latest/java_lang/trait.MethodDeclaration.html "trait java_lang::MethodDeclaration") member [MethodInvocation](https://docs.rs/java-lang/latest/java_lang/trait.MethodInvocation.html "trait java_lang::MethodInvocation") [MethodReference](https://docs.rs/java-lang/latest/java_lang/trait.MethodReference.html "trait java_lang::MethodReference") [Primary](https://docs.rs/java-lang/latest/java_lang/trait.Primary.html "trait java_lang::Primary") [ReferenceType](https://docs.rs/java-lang/latest/java_lang/trait.ReferenceType.html "trait java_lang::ReferenceType") [ReturnStatement](https://docs.rs/java-lang/latest/java_lang/trait.ReturnStatement.html "trait java_lang::ReturnStatement") [StatementExpression](https://docs.rs/java-lang/latest/java_lang/trait.StatementExpression.html "trait java_lang::StatementExpression") [SuperConstructorInvocation](https://docs.rs/java-lang/latest/java_lang/trait.SuperConstructorInvocation.html "trait java_lang::SuperConstructorInvocation") [SuperMemberReference](https://docs.rs/java-lang/latest/java_lang/trait.SuperMemberReference.html "trait java_lang::SuperMemberReference") [SuperMethodInvocation](https://docs.rs/java-lang/latest/java_lang/trait.SuperMethodInvocation.html "trait java_lang::SuperMethodInvocation") [SwitchStatement](https://docs.rs/java-lang/latest/java_lang/trait.SwitchStatement.html "trait java_lang::SwitchStatement") [SwitchStatementCase](https://docs.rs/java-lang/latest/java_lang/trait.SwitchStatementCase.html "trait java_lang::SwitchStatementCase") [SynchronizedStatement](https://docs.rs/java-lang/latest/java_lang/trait.SynchronizedStatement.html "trait java_lang::SynchronizedStatement") [TernaryExpression](https://docs.rs/java-lang/latest/java_lang/trait.TernaryExpression.html "trait java_lang::TernaryExpression") [This](https://docs.rs/java-lang/latest/java_lang/trait.This.html "trait java_lang::This") [ThrowStatement](https://docs.rs/java-lang/latest/java_lang/trait.ThrowStatement.html "trait java_lang::ThrowStatement") [TryResource](https://docs.rs/java-lang/latest/java_lang/trait.TryResource.html "trait java_lang::TryResource") [TryStatement](https://docs.rs/java-lang/latest/java_lang/trait.TryStatement.html "trait java_lang::TryStatement") [TypeArgument](https://docs.rs/java-lang/latest/java_lang/trait.TypeArgument.html "trait java_lang::TypeArgument") [TypeParameter](https://docs.rs/java-lang/latest/java_lang/trait.TypeParameter.html "trait java_lang::TypeParameter") [VariableDeclaration](https://docs.rs/java-lang/latest/java_lang/trait.VariableDeclaration.html "trait java_lang::VariableDeclaration") [VariableDeclarator](https://docs.rs/java-lang/latest/java_lang/trait.VariableDeclarator.html "trait java_lang::VariableDeclarator") [VoidClassReference](https://docs.rs/java-lang/latest/java_lang/trait.VoidClassReference.html "trait java_lang::VoidClassReference") [WhileStatement](https://docs.rs/java-lang/latest/java_lang/trait.WhileStatement.html "trait java_lang::WhileStatement") Functions[§](https://docs.rs/java-lang/latest/java_lang/#functions) -------------------------------------------------------------------- [compilation\_unit\_declaration](https://docs.rs/java-lang/latest/java_lang/fn.compilation_unit_declaration.html "fn java_lang::compilation_unit_declaration") 解析编译单元声明从给定的标记流中。 [import\_declaration](https://docs.rs/java-lang/latest/java_lang/fn.import_declaration.html "fn java_lang::import_declaration") 解析导入声明 [import\_declarations](https://docs.rs/java-lang/latest/java_lang/fn.import_declarations.html "fn java_lang::import_declarations") 解析导入声明列表 [one\_token](https://docs.rs/java-lang/latest/java_lang/fn.one_token.html "fn java_lang::one_token") [package\_declaration](https://docs.rs/java-lang/latest/java_lang/fn.package_declaration.html "fn java_lang::package_declaration") 解析包声明从给定的标记流中。 [parse](https://docs.rs/java-lang/latest/java_lang/fn.parse.html "fn java_lang::parse") --- # List of all items in this crate [Docs.rs](https://docs.rs/) * [java-lang-0.1.0](https://docs.rs/java-lang/latest/java_lang/all.html# "用于rust的java语法解析器。根据Java 23 规范实现。") * java-lang 0.1.0 * [Permalink](https://docs.rs/java-lang/0.1.0/java_lang/all.html "Get a link to this specific version") * [Docs.rs crate page](https://docs.rs/crate/java-lang/latest "See java-lang in docs.rs") * [Apache-2.0](https://spdx.org/licenses/Apache-2.0) * Links * [Repository](https://github.com/mzdk100/java-lang.git) * [crates.io](https://crates.io/crates/java-lang "See java-lang in crates.io") * [Source](https://docs.rs/crate/java-lang/latest/source/ "Browse source of java-lang-0.1.0") * Owners * [mzdk100](https://crates.io/users/mzdk100) * Dependencies * * [nom ^8.0.0 _normal_](https://docs.rs/nom/^8.0.0/) * [anyhow ^1.0.95 _dev_](https://docs.rs/anyhow/^1.0.95/) * Versions * [**62.61%** of the crate is documented](https://docs.rs/crate/java-lang/latest) * [Platform](https://docs.rs/java-lang/latest/java_lang/all.html#) * [aarch64-apple-darwin](https://docs.rs/crate/java-lang/latest/target-redirect/aarch64-apple-darwin/java_lang/all.html) * [aarch64-unknown-linux-gnu](https://docs.rs/crate/java-lang/latest/target-redirect/aarch64-unknown-linux-gnu/java_lang/all.html) * [i686-pc-windows-msvc](https://docs.rs/crate/java-lang/latest/target-redirect/i686-pc-windows-msvc/java_lang/all.html) * [x86\_64-pc-windows-msvc](https://docs.rs/crate/java-lang/latest/target-redirect/x86_64-pc-windows-msvc/java_lang/all.html) * [x86\_64-unknown-linux-gnu](https://docs.rs/crate/java-lang/latest/target-redirect/java_lang/all.html) * [Feature flags](https://docs.rs/crate/java-lang/latest/features "Browse available feature flags of java-lang-0.1.0") * [docs.rs](https://docs.rs/java-lang/latest/java_lang/all.html#) * [About docs.rs](https://docs.rs/about) * [Badges](https://docs.rs/about/badges) * [Builds](https://docs.rs/about/builds) * [Metadata](https://docs.rs/about/metadata) * [Shorthand URLs](https://docs.rs/about/redirections) * [Download](https://docs.rs/about/download) * [Rustdoc JSON](https://docs.rs/about/rustdoc-json) * [Build queue](https://docs.rs/releases/queue) * [Privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#docs.rs) * [Rust](https://docs.rs/java-lang/latest/java_lang/all.html#) * [Rust website](https://www.rust-lang.org/) * [The Book](https://doc.rust-lang.org/book/) * [Standard Library API Reference](https://doc.rust-lang.org/std/) * [Rust by Example](https://doc.rust-lang.org/rust-by-example/) * [The Cargo Guide](https://doc.rust-lang.org/cargo/guide/) * [Clippy Documentation](https://doc.rust-lang.org/nightly/clippy) [All](https://docs.rs/java-lang/latest/java_lang/all.html#) ------------------------------------------------------------ List of all items ================= ### Structs * [Annotation](https://docs.rs/java-lang/latest/java_lang/struct.Annotation.html) * [AnnotationDeclaration](https://docs.rs/java-lang/latest/java_lang/struct.AnnotationDeclaration.html) * [ClassDeclaration](https://docs.rs/java-lang/latest/java_lang/struct.ClassDeclaration.html) * [DocumentationComment](https://docs.rs/java-lang/latest/java_lang/struct.DocumentationComment.html) * [EnumDeclaration](https://docs.rs/java-lang/latest/java_lang/struct.EnumDeclaration.html) * [InterfaceDeclaration](https://docs.rs/java-lang/latest/java_lang/struct.InterfaceDeclaration.html) * [ModuleDeclaration](https://docs.rs/java-lang/latest/java_lang/struct.ModuleDeclaration.html) * [ModuleDirective](https://docs.rs/java-lang/latest/java_lang/struct.ModuleDirective.html) * [PackageDeclaration](https://docs.rs/java-lang/latest/java_lang/struct.PackageDeclaration.html) * [TokenStream](https://docs.rs/java-lang/latest/java_lang/struct.TokenStream.html) ### Enums * [CompilationUnitDeclaration](https://docs.rs/java-lang/latest/java_lang/enum.CompilationUnitDeclaration.html) * [ImportDeclaration](https://docs.rs/java-lang/latest/java_lang/enum.ImportDeclaration.html) * [Token](https://docs.rs/java-lang/latest/java_lang/enum.Token.html) * [TopLevelClassOrInterfaceDeclaration](https://docs.rs/java-lang/latest/java_lang/enum.TopLevelClassOrInterfaceDeclaration.html) ### Traits * [AnnotationMethod](https://docs.rs/java-lang/latest/java_lang/trait.AnnotationMethod.html) * [ArrayCreator](https://docs.rs/java-lang/latest/java_lang/trait.ArrayCreator.html) * [ArrayInitializer](https://docs.rs/java-lang/latest/java_lang/trait.ArrayInitializer.html) * [ArraySelector](https://docs.rs/java-lang/latest/java_lang/trait.ArraySelector.html) * [AssertStatement](https://docs.rs/java-lang/latest/java_lang/trait.AssertStatement.html) * [Assignment](https://docs.rs/java-lang/latest/java_lang/trait.Assignment.html) * [BasicType](https://docs.rs/java-lang/latest/java_lang/trait.BasicType.html) * [BinaryOperation](https://docs.rs/java-lang/latest/java_lang/trait.BinaryOperation.html) * [BlockStatement](https://docs.rs/java-lang/latest/java_lang/trait.BlockStatement.html) * [BreakStatement](https://docs.rs/java-lang/latest/java_lang/trait.BreakStatement.html) * [Cast](https://docs.rs/java-lang/latest/java_lang/trait.Cast.html) * [CatchClause](https://docs.rs/java-lang/latest/java_lang/trait.CatchClause.html) * [CatchClauseParameter](https://docs.rs/java-lang/latest/java_lang/trait.CatchClauseParameter.html) * [ClassCreator](https://docs.rs/java-lang/latest/java_lang/trait.ClassCreator.html) * [ClassReference](https://docs.rs/java-lang/latest/java_lang/trait.ClassReference.html) * [ConstantDeclaration](https://docs.rs/java-lang/latest/java_lang/trait.ConstantDeclaration.html) * [ConstructorDeclaration](https://docs.rs/java-lang/latest/java_lang/trait.ConstructorDeclaration.html) * [ContinueStatement](https://docs.rs/java-lang/latest/java_lang/trait.ContinueStatement.html) * [Creator](https://docs.rs/java-lang/latest/java_lang/trait.Creator.html) * [DoStatement](https://docs.rs/java-lang/latest/java_lang/trait.DoStatement.html) * [ElementArrayValue](https://docs.rs/java-lang/latest/java_lang/trait.ElementArrayValue.html) * [ElementValuePair](https://docs.rs/java-lang/latest/java_lang/trait.ElementValuePair.html) * [EnhancedForControl](https://docs.rs/java-lang/latest/java_lang/trait.EnhancedForControl.html) * [EnumBody](https://docs.rs/java-lang/latest/java_lang/trait.EnumBody.html) * [EnumConstantDeclaration](https://docs.rs/java-lang/latest/java_lang/trait.EnumConstantDeclaration.html) * [ExplicitConstructorInvocation](https://docs.rs/java-lang/latest/java_lang/trait.ExplicitConstructorInvocation.html) * [Expression](https://docs.rs/java-lang/latest/java_lang/trait.Expression.html) * [FieldDeclaration](https://docs.rs/java-lang/latest/java_lang/trait.FieldDeclaration.html) * [ForControl](https://docs.rs/java-lang/latest/java_lang/trait.ForControl.html) * [ForStatement](https://docs.rs/java-lang/latest/java_lang/trait.ForStatement.html) * [FormalParameter](https://docs.rs/java-lang/latest/java_lang/trait.FormalParameter.html) * [IfStatement](https://docs.rs/java-lang/latest/java_lang/trait.IfStatement.html) * [InferredFormalParameter](https://docs.rs/java-lang/latest/java_lang/trait.InferredFormalParameter.html) * [InnerClassCreator](https://docs.rs/java-lang/latest/java_lang/trait.InnerClassCreator.html) * [Invocation](https://docs.rs/java-lang/latest/java_lang/trait.Invocation.html) * [LambdaExpression](https://docs.rs/java-lang/latest/java_lang/trait.LambdaExpression.html) * [Literal](https://docs.rs/java-lang/latest/java_lang/trait.Literal.html) * [LocalVariableDeclaration](https://docs.rs/java-lang/latest/java_lang/trait.LocalVariableDeclaration.html) * [MemberReference](https://docs.rs/java-lang/latest/java_lang/trait.MemberReference.html) * [MethodDeclaration](https://docs.rs/java-lang/latest/java_lang/trait.MethodDeclaration.html) * [MethodInvocation](https://docs.rs/java-lang/latest/java_lang/trait.MethodInvocation.html) * [MethodReference](https://docs.rs/java-lang/latest/java_lang/trait.MethodReference.html) * [Primary](https://docs.rs/java-lang/latest/java_lang/trait.Primary.html) * [ReferenceType](https://docs.rs/java-lang/latest/java_lang/trait.ReferenceType.html) * [ReturnStatement](https://docs.rs/java-lang/latest/java_lang/trait.ReturnStatement.html) * [StatementExpression](https://docs.rs/java-lang/latest/java_lang/trait.StatementExpression.html) * [SuperConstructorInvocation](https://docs.rs/java-lang/latest/java_lang/trait.SuperConstructorInvocation.html) * [SuperMemberReference](https://docs.rs/java-lang/latest/java_lang/trait.SuperMemberReference.html) * [SuperMethodInvocation](https://docs.rs/java-lang/latest/java_lang/trait.SuperMethodInvocation.html) * [SwitchStatement](https://docs.rs/java-lang/latest/java_lang/trait.SwitchStatement.html) * [SwitchStatementCase](https://docs.rs/java-lang/latest/java_lang/trait.SwitchStatementCase.html) * [SynchronizedStatement](https://docs.rs/java-lang/latest/java_lang/trait.SynchronizedStatement.html) * [TernaryExpression](https://docs.rs/java-lang/latest/java_lang/trait.TernaryExpression.html) * [This](https://docs.rs/java-lang/latest/java_lang/trait.This.html) * [ThrowStatement](https://docs.rs/java-lang/latest/java_lang/trait.ThrowStatement.html) * [TryResource](https://docs.rs/java-lang/latest/java_lang/trait.TryResource.html) * [TryStatement](https://docs.rs/java-lang/latest/java_lang/trait.TryStatement.html) * [TypeArgument](https://docs.rs/java-lang/latest/java_lang/trait.TypeArgument.html) * [TypeParameter](https://docs.rs/java-lang/latest/java_lang/trait.TypeParameter.html) * [VariableDeclaration](https://docs.rs/java-lang/latest/java_lang/trait.VariableDeclaration.html) * [VariableDeclarator](https://docs.rs/java-lang/latest/java_lang/trait.VariableDeclarator.html) * [VoidClassReference](https://docs.rs/java-lang/latest/java_lang/trait.VoidClassReference.html) * [WhileStatement](https://docs.rs/java-lang/latest/java_lang/trait.WhileStatement.html) ### Macros * [ts](https://docs.rs/java-lang/latest/java_lang/macro.ts.html) ### Functions * [compilation\_unit\_declaration](https://docs.rs/java-lang/latest/java_lang/fn.compilation_unit_declaration.html) * [import\_declaration](https://docs.rs/java-lang/latest/java_lang/fn.import_declaration.html) * [import\_declarations](https://docs.rs/java-lang/latest/java_lang/fn.import_declarations.html) * [one\_token](https://docs.rs/java-lang/latest/java_lang/fn.one_token.html) * [package\_declaration](https://docs.rs/java-lang/latest/java_lang/fn.package_declaration.html) * [parse](https://docs.rs/java-lang/latest/java_lang/fn.parse.html) --- # arrow 53.2.0 - Docs.rs [Docs.rs](https://docs.rs/) * [arrow-53.2.0](https://docs.rs/crate/arrow/53.2.0 "Rust implementation of Apache Arrow") * [Platform](https://docs.rs/crate/arrow/53.2.0#) * [x86\_64-unknown-linux-gnu](https://docs.rs/arrow/53.2.0/arrow/) * [Feature flags](https://docs.rs/crate/arrow/53.2.0/features "Browse available feature flags of arrow-53.2.0") * [docs.rs](https://docs.rs/crate/arrow/53.2.0#) * [About docs.rs](https://docs.rs/about) * [Badges](https://docs.rs/about/badges) * [Builds](https://docs.rs/about/builds) * [Metadata](https://docs.rs/about/metadata) * [Shorthand URLs](https://docs.rs/about/redirections) * [Download](https://docs.rs/about/download) * [Rustdoc JSON](https://docs.rs/about/rustdoc-json) * [Build queue](https://docs.rs/releases/queue) * [Privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#docs.rs) * [Rust](https://docs.rs/crate/arrow/53.2.0#) * [Rust website](https://www.rust-lang.org/) * [The Book](https://doc.rust-lang.org/book/) * [Standard Library API Reference](https://doc.rust-lang.org/std/) * [Rust by Example](https://doc.rust-lang.org/rust-by-example/) * [The Cargo Guide](https://doc.rust-lang.org/cargo/guide/) * [Clippy Documentation](https://doc.rust-lang.org/nightly/clippy) arrow 53.2.0 ============ Rust implementation of Apache Arrow * [Crate](https://docs.rs/crate/arrow/53.2.0) * [Source](https://docs.rs/crate/arrow/53.2.0/source/) * [Builds](https://docs.rs/crate/arrow/53.2.0/builds) * [Feature flags](https://docs.rs/crate/arrow/53.2.0/features) [Documentation](https://docs.rs/arrow/53.2.0/arrow/) * Coverage * **100%** **72** out of **72** items documented**2** out of **38** items with examples * Size * Source code size: 495.16 kB This is the summed size of all the files inside the crates.io package for this release. * Documentation size: 24.3 MB This is the summed size of all files generated by rustdoc for all configured targets * Ø build duration * this release: 52s Average build duration of **successful** builds. * all releases: 1m 2s Average build duration of **successful** builds in releases after 2024-10-23. * Links * [Homepage](https://github.com/apache/arrow-rs) * [apache/arrow-rs \ 3416 1135 543](https://github.com/apache/arrow-rs) * [crates.io](https://crates.io/crates/arrow "See arrow on crates.io") * Dependencies * * [arrow-arith ^53.2.0 _normal_](https://docs.rs/crate/arrow-arith/^53.2.0) * [arrow-array ^53.2.0 _normal_](https://docs.rs/crate/arrow-array/^53.2.0) * [arrow-buffer ^53.2.0 _normal_](https://docs.rs/crate/arrow-buffer/^53.2.0) * [arrow-cast ^53.2.0 _normal_](https://docs.rs/crate/arrow-cast/^53.2.0) * [arrow-csv ^53.2.0 _normal_ _optional_](https://docs.rs/crate/arrow-csv/^53.2.0) * [arrow-data ^53.2.0 _normal_](https://docs.rs/crate/arrow-data/^53.2.0) * [arrow-ipc ^53.2.0 _normal_ _optional_](https://docs.rs/crate/arrow-ipc/^53.2.0) * [arrow-json ^53.2.0 _normal_ _optional_](https://docs.rs/crate/arrow-json/^53.2.0) * [arrow-ord ^53.2.0 _normal_](https://docs.rs/crate/arrow-ord/^53.2.0) * [arrow-row ^53.2.0 _normal_](https://docs.rs/crate/arrow-row/^53.2.0) * [arrow-schema ^53.2.0 _normal_](https://docs.rs/crate/arrow-schema/^53.2.0) * [arrow-select ^53.2.0 _normal_](https://docs.rs/crate/arrow-select/^53.2.0) * [arrow-string ^53.2.0 _normal_](https://docs.rs/crate/arrow-string/^53.2.0) * [chrono ^0.4.34 _normal_ _optional_](https://docs.rs/crate/chrono/^0.4.34) * [pyo3 ^0.22.2 _normal_ _optional_](https://docs.rs/crate/pyo3/^0.22.2) * [rand ^0.8 _normal_ _optional_](https://docs.rs/crate/rand/^0.8) * [chrono ^0.4.34 _dev_](https://docs.rs/crate/chrono/^0.4.34) * [criterion ^0.5 _dev_](https://docs.rs/crate/criterion/^0.5) * [half ^2.1 _dev_](https://docs.rs/crate/half/^2.1) * [rand ^0.8 _dev_](https://docs.rs/crate/rand/^0.8) * [serde ^1.0 _dev_](https://docs.rs/crate/serde/^1.0) * [tempfile ^3 _dev_](https://docs.rs/crate/tempfile/^3) * Versions * * [**58.1.0** (2026-03-24)](https://docs.rs/crate/arrow/58.1.0) * [**58.0.0** (2026-02-23)](https://docs.rs/crate/arrow/58.0.0) * [**57.3.0** (2026-02-06)](https://docs.rs/crate/arrow/57.3.0) * [**57.2.0** (2026-01-11)](https://docs.rs/crate/arrow/57.2.0) * [**57.1.0** (2025-11-24)](https://docs.rs/crate/arrow/57.1.0) * [**57.0.0** (2025-10-23)](https://docs.rs/crate/arrow/57.0.0) * [**56.2.0** (2025-09-23)](https://docs.rs/crate/arrow/56.2.0) * [**56.1.0** (2025-08-25)](https://docs.rs/crate/arrow/56.1.0) * [**56.0.0** (2025-08-01)](https://docs.rs/crate/arrow/56.0.0) * [**55.2.0** (2025-06-26)](https://docs.rs/crate/arrow/55.2.0) * [**55.1.0** (2025-05-13)](https://docs.rs/crate/arrow/55.1.0) * [**55.0.0** (2025-04-11)](https://docs.rs/crate/arrow/55.0.0) * [**54.3.1** (2025-03-30)](https://docs.rs/crate/arrow/54.3.1) * [**54.3.0** (2025-03-21)](https://docs.rs/crate/arrow/54.3.0) * [**54.2.1** (2025-02-27)](https://docs.rs/crate/arrow/54.2.1) * [**54.2.0** (2025-02-16)](https://docs.rs/crate/arrow/54.2.0) * [**54.1.0** (2025-02-02)](https://docs.rs/crate/arrow/54.1.0) * [**54.0.0** (2024-12-23)](https://docs.rs/crate/arrow/54.0.0) * [**53.4.1** (2025-03-07)](https://docs.rs/crate/arrow/53.4.1) * [**53.4.0** (2025-01-18)](https://docs.rs/crate/arrow/53.4.0) * [**53.3.0** (2024-11-20)](https://docs.rs/crate/arrow/53.3.0) * [**53.2.0** (2024-10-24)](https://docs.rs/crate/arrow/53.2.0) * [**53.1.0** (2024-10-06)](https://docs.rs/crate/arrow/53.1.0) * [**53.0.0** (2024-09-03)](https://docs.rs/crate/arrow/53.0.0) * [**52.2.0** (2024-07-28)](https://docs.rs/crate/arrow/52.2.0) * [**52.1.0** (2024-07-06)](https://docs.rs/crate/arrow/52.1.0) * [**52.0.0** (2024-06-06)](https://docs.rs/crate/arrow/52.0.0) * [**51.0.0** (2024-03-18)](https://docs.rs/crate/arrow/51.0.0) * [**50.0.0** (2024-01-12)](https://docs.rs/crate/arrow/50.0.0) * [**49.0.0** (2023-11-13)](https://docs.rs/crate/arrow/49.0.0) * [**48.0.1** (2023-11-13)](https://docs.rs/crate/arrow/48.0.1) * [**48.0.0** (2023-10-23)](https://docs.rs/crate/arrow/48.0.0) * [**47.0.0** (2023-09-22)](https://docs.rs/crate/arrow/47.0.0) * [**46.0.0** (2023-08-24)](https://docs.rs/crate/arrow/46.0.0) * [**45.0.0** (2023-08-02)](https://docs.rs/crate/arrow/45.0.0) * [**44.0.0** (2023-07-18)](https://docs.rs/crate/arrow/44.0.0) * [**43.0.0** (2023-07-03)](https://docs.rs/crate/arrow/43.0.0) * [**42.0.0** (2023-06-20)](https://docs.rs/crate/arrow/42.0.0) * [**41.0.0** (2023-06-06)](https://docs.rs/crate/arrow/41.0.0) * [**40.0.0** (2023-05-22)](https://docs.rs/crate/arrow/40.0.0) * [**39.0.0** (2023-05-09)](https://docs.rs/crate/arrow/39.0.0) * [**38.0.0** (2023-04-25)](https://docs.rs/crate/arrow/38.0.0) * [**37.0.0** (2023-04-10)](https://docs.rs/crate/arrow/37.0.0) * [**36.0.0** (2023-03-28)](https://docs.rs/crate/arrow/36.0.0) * [**35.0.0** (2023-03-13)](https://docs.rs/crate/arrow/35.0.0) * [**34.0.0** (2023-02-27)](https://docs.rs/crate/arrow/34.0.0) * [**33.0.0** (2023-02-13)](https://docs.rs/crate/arrow/33.0.0) * [**32.0.0** (2023-01-30)](https://docs.rs/crate/arrow/32.0.0) * [**31.0.0** (2023-01-16)](https://docs.rs/crate/arrow/31.0.0) * [**30.0.1** (2023-01-08)](https://docs.rs/crate/arrow/30.0.1) * [**30.0.0** (2023-01-03)](https://docs.rs/crate/arrow/30.0.0) * [**29.0.0** (2022-12-12)](https://docs.rs/crate/arrow/29.0.0) * [**28.0.0** (2022-11-28)](https://docs.rs/crate/arrow/28.0.0) * [**27.0.0** (2022-11-14)](https://docs.rs/crate/arrow/27.0.0) * [**26.0.0** (2022-11-03)](https://docs.rs/crate/arrow/26.0.0) * [**25.0.0** (2022-10-17)](https://docs.rs/crate/arrow/25.0.0) * [**24.0.0** (2022-10-03)](https://docs.rs/crate/arrow/24.0.0) * [**23.0.0** (2022-09-19)](https://docs.rs/crate/arrow/23.0.0) * [**22.0.0** (2022-09-05)](https://docs.rs/crate/arrow/22.0.0) * [**21.0.0** (2022-08-29)](https://docs.rs/crate/arrow/21.0.0) * [**20.0.0** (2022-08-08)](https://docs.rs/crate/arrow/20.0.0) * [**19.0.0** (2022-07-26)](https://docs.rs/crate/arrow/19.0.0) * [**18.0.0** (2022-07-11)](https://docs.rs/crate/arrow/18.0.0) * [**17.0.0** (2022-06-27)](https://docs.rs/crate/arrow/17.0.0) * [**16.0.0** (2022-06-13)](https://docs.rs/crate/arrow/16.0.0) * [**15.0.0** (2022-05-30)](https://docs.rs/crate/arrow/15.0.0) * [**14.0.0** (2022-05-16)](https://docs.rs/crate/arrow/14.0.0) * [**14.0.0-dev** (2022-05-12)](https://docs.rs/crate/arrow/14.0.0-dev "arrow-14.0.0-dev is yanked") * [**13.0.0** (2022-05-03)](https://docs.rs/crate/arrow/13.0.0) * [**12.0.0** (2022-04-19)](https://docs.rs/crate/arrow/12.0.0) * [**11.1.0** (2022-04-04)](https://docs.rs/crate/arrow/11.1.0) * [**11.0.0** (2022-03-21)](https://docs.rs/crate/arrow/11.0.0) * [**10.0.0** (2022-03-08)](https://docs.rs/crate/arrow/10.0.0) * [**9.1.0** (2022-02-22)](https://docs.rs/crate/arrow/9.1.0) * [**9.0.2** (2022-02-13)](https://docs.rs/crate/arrow/9.0.2) * [**8.0.0** (2022-01-25)](https://docs.rs/crate/arrow/8.0.0) * [**7.0.0** (2022-01-12)](https://docs.rs/crate/arrow/7.0.0) * [**6.5.0** (2021-12-29)](https://docs.rs/crate/arrow/6.5.0) * [**6.4.0** (2021-12-14)](https://docs.rs/crate/arrow/6.4.0) * [**6.3.0** (2021-11-29)](https://docs.rs/crate/arrow/6.3.0) * [**6.2.0** (2021-11-15)](https://docs.rs/crate/arrow/6.2.0) * [**6.1.0** (2021-11-03)](https://docs.rs/crate/arrow/6.1.0) * [**6.0.0** (2021-10-17)](https://docs.rs/crate/arrow/6.0.0) * [**5.5.0** (2021-09-28)](https://docs.rs/crate/arrow/5.5.0) * [**5.4.0** (2021-09-15)](https://docs.rs/crate/arrow/5.4.0) * [**5.3.0** (2021-08-31)](https://docs.rs/crate/arrow/5.3.0) * [**5.2.0** (2021-08-16)](https://docs.rs/crate/arrow/5.2.0) * [**5.1.0** (2021-08-02)](https://docs.rs/crate/arrow/5.1.0) * [**5.0.0** (2021-07-17)](https://docs.rs/crate/arrow/5.0.0) * [**4.4.0** (2021-06-28)](https://docs.rs/crate/arrow/4.4.0) * [**4.3.0** (2021-06-14)](https://docs.rs/crate/arrow/4.3.0) * [**4.2.0** (2021-06-01)](https://docs.rs/crate/arrow/4.2.0) * [**4.1.0** (2021-05-22)](https://docs.rs/crate/arrow/4.1.0) * [**4.0.0** (2021-04-26)](https://docs.rs/crate/arrow/4.0.0) * [**3.0.0** (2021-01-26)](https://docs.rs/crate/arrow/3.0.0) * [**2.0.0** (2020-10-19)](https://docs.rs/crate/arrow/2.0.0) * [**1.0.1** (2020-08-21)](https://docs.rs/crate/arrow/1.0.1) * [**1.0.0** (2020-07-24)](https://docs.rs/crate/arrow/1.0.0) * [**0.18.0** (2022-05-12)](https://docs.rs/crate/arrow/0.18.0 "arrow-0.18.0 is yanked") * [**0.17.0** (2020-04-21)](https://docs.rs/crate/arrow/0.17.0 "docs.rs failed to build arrow-0.17.0") * [**0.16.0** (2020-02-07)](https://docs.rs/crate/arrow/0.16.0) * [**0.15.1** (2019-11-01)](https://docs.rs/crate/arrow/0.15.1) * [**0.15.0** (2019-10-06)](https://docs.rs/crate/arrow/0.15.0) * [**0.14.1** (2019-07-22)](https://docs.rs/crate/arrow/0.14.1) * [**0.14.0** (2019-07-08)](https://docs.rs/crate/arrow/0.14.0) * [**0.13.0** (2019-04-01)](https://docs.rs/crate/arrow/0.13.0) * [**0.12.0** (2019-01-19)](https://docs.rs/crate/arrow/0.12.0) * [**0.11.0** (2018-10-23)](https://docs.rs/crate/arrow/0.11.0) * [**0.10.0** (2018-08-07)](https://docs.rs/crate/arrow/0.10.0) * [**0.1.0** (2018-03-29)](https://docs.rs/crate/arrow/0.1.0) * Owners * [![andygrove](https://avatars.githubusercontent.com/u/934084?v=4)](https://crates.io/users/andygrove) [![kou](https://avatars.githubusercontent.com/u/27350?v=4)](https://crates.io/users/kou) [![kszucs](https://avatars.githubusercontent.com/u/961747?v=4)](https://crates.io/users/kszucs) [![xhochy](https://avatars.githubusercontent.com/u/70274?v=4)](https://crates.io/users/xhochy) [![nevi-me](https://avatars.githubusercontent.com/u/1876878?v=4)](https://crates.io/users/nevi-me) [![alamb](https://avatars.githubusercontent.com/u/490673?v=4)](https://crates.io/users/alamb) [![tustvold](https://avatars.githubusercontent.com/u/1781103?v=4)](https://crates.io/users/tustvold) Apache Arrow Official Native Rust Implementation ================================================ [![crates.io](https://img.shields.io/crates/v/arrow.svg)](https://crates.io/crates/arrow) [![docs.rs](https://img.shields.io/docsrs/arrow.svg)](https://docs.rs/arrow/latest/arrow/) This crate contains the official Native Rust implementation of [Apache Arrow](https://arrow.apache.org/) in memory format, governed by the Apache Software Foundation. The [API documentation](https://docs.rs/arrow/latest) contains examples and full API. There are several [examples](https://github.com/apache/arrow-rs/tree/master/arrow/examples) to start from as well. The API documentation for most recent, unreleased code is available [here](https://arrow.apache.org/rust/arrow/index.html) . Rust Version Compatibility -------------------------- This crate is tested with the latest stable version of Rust. We do not currently test against other, older versions. Versioning / Releases --------------------- The `arrow` crate follows the [SemVer standard](https://doc.rust-lang.org/cargo/reference/semver.html) defined by Cargo and works well within the Rust crate ecosystem. See the [repository README](https://github.com/apache/arrow-rs) for more details on the release schedule and version. Note that for historical reasons, this crate uses versions with major numbers greater than `0.x` (e.g. `19.0.0`), unlike many other crates in the Rust ecosystem which spend extended time releasing versions `0.x` to signal planned ongoing API changes. Minor arrow releases contain only compatible changes, while major releases may contain breaking API changes. Feature Flags ------------- The `arrow` crate provides the following features which may be enabled in your `Cargo.toml`: * `csv` (default) - support for reading and writing Arrow arrays to/from csv files * `json` (default) - support for reading and writing Arrow array to/from json files * `ipc` (default) - support for reading [Arrow IPC Format](https://arrow.apache.org/docs/format/Columnar.html#serialization-and-interprocess-communication-ipc) , also used as the wire protocol in [arrow-flight](https://crates.io/crates/arrow-flight) * `ipc_compression` - Enables reading and writing compressed IPC streams (also enables `ipc`) * `prettyprint` - support for formatting record batches as textual columns implementations of some [compute](https://github.com/apache/arrow-rs/tree/master/arrow/src/compute/kernels) * `chrono-tz` - support of parsing timezone using [chrono-tz](https://docs.rs/chrono-tz/0.6.0/chrono_tz/) * `ffi` - bindings for the Arrow C [C Data Interface](https://arrow.apache.org/docs/format/CDataInterface.html) * `pyarrow` - bindings for pyo3 to call arrow-rs from python Arrow Feature Status -------------------- The [Apache Arrow Status](https://arrow.apache.org/docs/status.html) page lists which features of Arrow this crate supports. Safety ------ Arrow seeks to uphold the Rust Soundness Pledge as articulated eloquently [here](https://raphlinus.github.io/rust/2020/01/18/soundness-pledge.html) . Specifically: > The intent of this crate is to be free of soundness bugs. The developers will do their best to avoid them, and welcome help in analyzing and fixing them Where soundness in turn is defined as: > Code is unable to trigger undefined behavior using safe APIs One way to ensure this would be to not use `unsafe`, however, as described in the opening chapter of the [Rustonomicon](https://doc.rust-lang.org/nomicon/meet-safe-and-unsafe.html) this is not a requirement, and flexibility in this regard is one of Rust's great strengths. In particular there are a number of scenarios where `unsafe` is largely unavoidable: * Invariants that cannot be statically verified by the compiler and unlock non-trivial performance wins, e.g. values in a StringArray are UTF-8, [TrustedLen](https://doc.rust-lang.org/std/iter/trait.TrustedLen.html) iterators, etc... * FFI Additionally, this crate exposes a number of `unsafe` APIs, allowing downstream crates to explicitly opt-out of potentially expensive invariant checking where appropriate. We have a number of strategies to help reduce this risk: * Provide strongly-typed `Array` and `ArrayBuilder` APIs to safely and efficiently interact with arrays * Extensive validation logic to safely construct `ArrayData` from untrusted sources * All commits are verified using [MIRI](https://github.com/rust-lang/miri) to detect undefined behaviour * Use a `force_validate` feature that enables additional validation checks for use in test/debug builds * There is ongoing work to reduce and better document the use of unsafe, and we welcome contributions in this space Building for WASM ----------------- Arrow can compile to WebAssembly using the `wasm32-unknown-unknown` and `wasm32-wasi` targets. In order to compile Arrow for `wasm32-unknown-unknown` you will need to disable default features, then include the desired features, but exclude test dependencies (the `test_utils` feature). For example, use this snippet in your `Cargo.toml`: [dependencies] arrow = { version = "5.0", default-features = false, features = ["csv", "ipc"] } Examples -------- The examples folder shows how to construct some different types of Arrow arrays, including dynamic arrays: Examples can be run using the `cargo run --example` command. For example: cargo run --example builders cargo run --example dynamic_types cargo run --example read_csv Performance Tips ---------------- Arrow aims to be as fast as possible out of the box, whilst not compromising on safety. However, it relies heavily on LLVM auto-vectorisation to achieve this. Unfortunately the LLVM defaults, particularly for x86\_64, favour portability over performance, and LLVM will consequently avoid using more recent instructions that would result in errors on older CPUs. To address this it is recommended that you override the LLVM defaults either by setting the `RUSTFLAGS` environment variable, or by setting `rustflags` in your [Cargo configuration](https://doc.rust-lang.org/cargo/reference/config.html) Enable all features supported by the current CPU RUSTFLAGS="-C target-cpu=native" Enable all features supported by the current CPU, and enable full use of AVX512 RUSTFLAGS="-C target-cpu=native -C target-feature=-prefer-256-bit" Enable all features supported by CPUs more recent than haswell (2013) RUSTFLAGS="-C target-cpu=haswell" For a full list of features and target CPUs use $ rustc --print target-cpus $ rustc --print target-features --- # jsony - Rust [Docs.rs](https://docs.rs/) * [jsony-0.1.9](https://docs.rs/jsony/latest/jsony/# "An experimental fast compiling serialization and deserialization libary for JSON like formats.") * jsony 0.1.9 * [Permalink](https://docs.rs/jsony/0.1.9/jsony/ "Get a link to this specific version") * [Docs.rs crate page](https://docs.rs/crate/jsony/latest "See jsony in docs.rs") * [MIT](https://spdx.org/licenses/MIT) * Links * [Repository](https://github.com/exrok/jsony) * [crates.io](https://crates.io/crates/jsony "See jsony in crates.io") * [Source](https://docs.rs/crate/jsony/latest/source/ "Browse source of jsony-0.1.9") * Owners * [exrok](https://crates.io/users/exrok) * Dependencies * * [itoa ^1 _normal_](https://docs.rs/itoa/^1/) * [jsony\_macros ^0.1.8 _normal_ _optional_](https://docs.rs/jsony_macros/^0.1.8/) * [uuid ^1 _normal_ _optional_](https://docs.rs/uuid/^1/) * [zmij ^1 _normal_](https://docs.rs/zmij/^1/) * Versions * [**36.32%** of the crate is documented](https://docs.rs/crate/jsony/latest) * [Platform](https://docs.rs/jsony/latest/jsony/#) * [aarch64-apple-darwin](https://docs.rs/crate/jsony/latest/target-redirect/aarch64-apple-darwin/jsony/) * [aarch64-unknown-linux-gnu](https://docs.rs/crate/jsony/latest/target-redirect/aarch64-unknown-linux-gnu/jsony/) * [i686-pc-windows-msvc](https://docs.rs/crate/jsony/latest/target-redirect/i686-pc-windows-msvc/jsony/) * [x86\_64-pc-windows-msvc](https://docs.rs/crate/jsony/latest/target-redirect/x86_64-pc-windows-msvc/jsony/) * [x86\_64-unknown-linux-gnu](https://docs.rs/crate/jsony/latest/target-redirect/jsony/) * [Feature flags](https://docs.rs/crate/jsony/latest/features "Browse available feature flags of jsony-0.1.9") * [docs.rs](https://docs.rs/jsony/latest/jsony/#) * [About docs.rs](https://docs.rs/about) * [Badges](https://docs.rs/about/badges) * [Builds](https://docs.rs/about/builds) * [Metadata](https://docs.rs/about/metadata) * [Shorthand URLs](https://docs.rs/about/redirections) * [Download](https://docs.rs/about/download) * [Rustdoc JSON](https://docs.rs/about/rustdoc-json) * [Build queue](https://docs.rs/releases/queue) * [Privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#docs.rs) * [Rust](https://docs.rs/jsony/latest/jsony/#) * [Rust website](https://www.rust-lang.org/) * [The Book](https://doc.rust-lang.org/book/) * [Standard Library API Reference](https://doc.rust-lang.org/std/) * [Rust by Example](https://doc.rust-lang.org/rust-by-example/) * [The Cargo Guide](https://doc.rust-lang.org/cargo/guide/) * [Clippy Documentation](https://doc.rust-lang.org/nightly/clippy) [Skip to main content](https://docs.rs/jsony/latest/jsony/#main-content) [Crate jsony](https://docs.rs/jsony/latest/jsony/#) ---------------------------------------------------- Crate jsony Copy item path ========================== [Source](https://docs.rs/jsony/latest/src/jsony/lib.rs.html#1-765) Expand description [§](https://docs.rs/jsony/latest/jsony/#jsony) Jsony ---------------------------------------------------- An ergonomic and performant (at runtime & compile time) serialization framework for the following formats: * [JSON](https://docs.rs/jsony/latest/jsony/json/index.html "mod jsony::json") (with optional extensions: trailing commas, comments, unquoted keys) * [Custom Binary Encoding](https://docs.rs/jsony/latest/jsony/binary/index.html "mod jsony::binary") #### [§](https://docs.rs/jsony/latest/jsony/#decodingencoding-json-with-strongly-typed-data-structures) Decoding/Encoding JSON with strongly typed data structures The Jsony derive macro can automatically implement the encoding and decoding for a number of formats. use jsony::Jsony; #[derive(Jsony)] #[jsony(Json)] struct Player { name: String, health: u32, inventory: Vec } fn main() -> Result<(), jsony::JsonError> { let input: String = jsony::object!{ name: "Jimmy", health: 100, inventory: [\ "Rock",\ "Helmet"\ ] }; let mut player: Player = jsony::from_json(&input)?; player.health -= 10; let output: String = jsony::to_json(&player); println!("generated json:\n {}", output); Ok(()) } Here we choose to implement `ToJson` and `FromJson` automatically via the `Json` attribute. When deriving a format trait, all fields in the struct/enum need to implement the same trait or have an implementation specified by a field attribute. ##### [§](https://docs.rs/jsony/latest/jsony/#feature-documentation) Feature Documentation * [Jsony derive macro](https://docs.rs/jsony/latest/jsony/derive.Jsony.html "derive jsony::Jsony") : Declaratively specify how your Rust types map to various formats. * [Flexible JSON decoder](https://docs.rs/jsony/latest/jsony/struct.JsonParserConfig.html "struct jsony::JsonParserConfig") : Enable extensions for comments, trailing comments and more. * [JSON template macros](https://docs.rs/jsony/latest/jsony/macro.object.html "macro jsony::object") : Flexibly generate a JSON string directly. * [Binary format](https://docs.rs/jsony/latest/jsony/binary/index.html "mod jsony::binary") : Encode data in a fast, compact binary representation. * [Lazy JSON Parsing](https://docs.rs/jsony/latest/jsony/fn.drill.html "fn jsony::drill") : Dynamically parse only what you need. * [Flexible encode destination](https://docs.rs/jsony/latest/jsony/fn.to_json_into.html "fn jsony::to_json_into") : Encode to a file or stack-allocating buffer. Modules[§](https://docs.rs/jsony/latest/jsony/#modules) -------------------------------------------------------- [binary](https://docs.rs/jsony/latest/jsony/binary/index.html "mod jsony::binary") Binary encoding module for jsony. [error](https://docs.rs/jsony/latest/jsony/error/index.html "mod jsony::error") Error definitions [helper](https://docs.rs/jsony/latest/jsony/helper/index.html "mod jsony::helper") [json](https://docs.rs/jsony/latest/jsony/json/index.html "mod jsony::json") Lower level JSON utilities and definitions [parser](https://docs.rs/jsony/latest/jsony/parser/index.html "mod jsony::parser") [text](https://docs.rs/jsony/latest/jsony/text/index.html "mod jsony::text") Macros[§](https://docs.rs/jsony/latest/jsony/#macros) ------------------------------------------------------ [array](https://docs.rs/jsony/latest/jsony/macro.array.html "macro jsony::array") Templating macro for creating JSON Arrays [object](https://docs.rs/jsony/latest/jsony/macro.object.html "macro jsony::object") Templating macro for creating JSON objects [require](https://docs.rs/jsony/latest/jsony/macro.require.html "macro jsony::require") Helper for `#[jsony(validate = ..)]` attribute Structs[§](https://docs.rs/jsony/latest/jsony/#structs) -------------------------------------------------------- [BytesWriter](https://docs.rs/jsony/latest/jsony/struct.BytesWriter.html "struct jsony::BytesWriter") An optimized output buffer with dynamic backing storage. [JsonError](https://docs.rs/jsony/latest/jsony/struct.JsonError.html "struct jsony::JsonError") The error type for JSON decoding failure with context. [JsonParserConfig](https://docs.rs/jsony/latest/jsony/struct.JsonParserConfig.html "struct jsony::JsonParserConfig") Configuration options for the JSON parser. [MaybeJson](https://docs.rs/jsony/latest/jsony/struct.MaybeJson.html "struct jsony::MaybeJson") Either a JSON string slice or an error state. [RawJson](https://docs.rs/jsony/latest/jsony/struct.RawJson.html "struct jsony::RawJson") A validated JSON string slice. [TextWriter](https://docs.rs/jsony/latest/jsony/struct.TextWriter.html "struct jsony::TextWriter") A UTF-8 wrapper around a [BytesWriter](https://docs.rs/jsony/latest/jsony/struct.BytesWriter.html "struct jsony::BytesWriter") . Traits[§](https://docs.rs/jsony/latest/jsony/#traits) ------------------------------------------------------ [FromBinary](https://docs.rs/jsony/latest/jsony/trait.FromBinary.html "trait jsony::FromBinary") A trait for parsing a value from a compact binary representation. [FromJson](https://docs.rs/jsony/latest/jsony/trait.FromJson.html "trait jsony::FromJson") A trait for types that can be parsed from JSON. [IntoByteWriter](https://docs.rs/jsony/latest/jsony/trait.IntoByteWriter.html "trait jsony::IntoByteWriter") Conversion into a `ByteWriter` with content extraction. [IntoTextWriter](https://docs.rs/jsony/latest/jsony/trait.IntoTextWriter.html "trait jsony::IntoTextWriter") Conversion into a `TextWriter` with content extraction. [ToBinary](https://docs.rs/jsony/latest/jsony/trait.ToBinary.html "trait jsony::ToBinary") A trait for converting a value to a compact binary representation. [ToJson](https://docs.rs/jsony/latest/jsony/trait.ToJson.html "trait jsony::ToJson") A trait for converting a value into JSON. Functions[§](https://docs.rs/jsony/latest/jsony/#functions) ------------------------------------------------------------ [drill](https://docs.rs/jsony/latest/jsony/fn.drill.html "fn jsony::drill") Lazy JSON parser [from\_binary](https://docs.rs/jsony/latest/jsony/fn.from_binary.html "fn jsony::from_binary") [from\_json](https://docs.rs/jsony/latest/jsony/fn.from_json.html "fn jsony::from_json") Parses a value implementing `FromJson` from a JSON string. [from\_json\_bytes](https://docs.rs/jsony/latest/jsony/fn.from_json_bytes.html "fn jsony::from_json_bytes") Parses a value implementing `FromJson` from a byte of slice of JSON. [from\_json\_with\_config](https://docs.rs/jsony/latest/jsony/fn.from_json_with_config.html "fn jsony::from_json_with_config") Parses a value implementing `FromJson` from a string with a custom parser configuration. [to\_binary](https://docs.rs/jsony/latest/jsony/fn.to_binary.html "fn jsony::to_binary") [to\_binary\_into](https://docs.rs/jsony/latest/jsony/fn.to_binary_into.html "fn jsony::to_binary_into") [to\_json](https://docs.rs/jsony/latest/jsony/fn.to_json.html "fn jsony::to_json") Converts the given value into a JSON string representation. [to\_json\_into](https://docs.rs/jsony/latest/jsony/fn.to_json_into.html "fn jsony::to_json_into") Converts the given value into a JSON string appending it to the provided output. Derive Macros[§](https://docs.rs/jsony/latest/jsony/#derives) -------------------------------------------------------------- [Jsony](https://docs.rs/jsony/latest/jsony/derive.Jsony.html "derive jsony::Jsony") Unified derive macro for implementing various conversion traits --- # List of all items in this crate [Docs.rs](https://docs.rs/) * [jsony-0.1.9](https://docs.rs/jsony/latest/jsony/all.html# "An experimental fast compiling serialization and deserialization libary for JSON like formats.") * jsony 0.1.9 * [Permalink](https://docs.rs/jsony/0.1.9/jsony/all.html "Get a link to this specific version") * [Docs.rs crate page](https://docs.rs/crate/jsony/latest "See jsony in docs.rs") * [MIT](https://spdx.org/licenses/MIT) * Links * [Repository](https://github.com/exrok/jsony) * [crates.io](https://crates.io/crates/jsony "See jsony in crates.io") * [Source](https://docs.rs/crate/jsony/latest/source/ "Browse source of jsony-0.1.9") * Owners * [exrok](https://crates.io/users/exrok) * Dependencies * * [itoa ^1 _normal_](https://docs.rs/itoa/^1/) * [jsony\_macros ^0.1.8 _normal_ _optional_](https://docs.rs/jsony_macros/^0.1.8/) * [uuid ^1 _normal_ _optional_](https://docs.rs/uuid/^1/) * [zmij ^1 _normal_](https://docs.rs/zmij/^1/) * Versions * [**36.32%** of the crate is documented](https://docs.rs/crate/jsony/latest) * [Platform](https://docs.rs/jsony/latest/jsony/all.html#) * [aarch64-apple-darwin](https://docs.rs/crate/jsony/latest/target-redirect/aarch64-apple-darwin/jsony/all.html) * [aarch64-unknown-linux-gnu](https://docs.rs/crate/jsony/latest/target-redirect/aarch64-unknown-linux-gnu/jsony/all.html) * [i686-pc-windows-msvc](https://docs.rs/crate/jsony/latest/target-redirect/i686-pc-windows-msvc/jsony/all.html) * [x86\_64-pc-windows-msvc](https://docs.rs/crate/jsony/latest/target-redirect/x86_64-pc-windows-msvc/jsony/all.html) * [x86\_64-unknown-linux-gnu](https://docs.rs/crate/jsony/latest/target-redirect/jsony/all.html) * [Feature flags](https://docs.rs/crate/jsony/latest/features "Browse available feature flags of jsony-0.1.9") * [docs.rs](https://docs.rs/jsony/latest/jsony/all.html#) * [About docs.rs](https://docs.rs/about) * [Badges](https://docs.rs/about/badges) * [Builds](https://docs.rs/about/builds) * [Metadata](https://docs.rs/about/metadata) * [Shorthand URLs](https://docs.rs/about/redirections) * [Download](https://docs.rs/about/download) * [Rustdoc JSON](https://docs.rs/about/rustdoc-json) * [Build queue](https://docs.rs/releases/queue) * [Privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#docs.rs) * [Rust](https://docs.rs/jsony/latest/jsony/all.html#) * [Rust website](https://www.rust-lang.org/) * [The Book](https://doc.rust-lang.org/book/) * [Standard Library API Reference](https://doc.rust-lang.org/std/) * [Rust by Example](https://doc.rust-lang.org/rust-by-example/) * [The Cargo Guide](https://doc.rust-lang.org/cargo/guide/) * [Clippy Documentation](https://doc.rust-lang.org/nightly/clippy) [Skip to main content](https://docs.rs/jsony/latest/jsony/all.html#main-content) [All](https://docs.rs/jsony/latest/jsony/all.html#) ---------------------------------------------------- List of all items ================= ### Structs * [BytesWriter](https://docs.rs/jsony/latest/jsony/struct.BytesWriter.html) * [JsonError](https://docs.rs/jsony/latest/jsony/struct.JsonError.html) * [JsonParserConfig](https://docs.rs/jsony/latest/jsony/struct.JsonParserConfig.html) * [MaybeJson](https://docs.rs/jsony/latest/jsony/struct.MaybeJson.html) * [RawJson](https://docs.rs/jsony/latest/jsony/struct.RawJson.html) * [TextWriter](https://docs.rs/jsony/latest/jsony/struct.TextWriter.html) * [binary::Decoder](https://docs.rs/jsony/latest/jsony/binary/struct.Decoder.html) * [binary::FromBinaryError](https://docs.rs/jsony/latest/jsony/binary/struct.FromBinaryError.html) * [error::UnknownVariant](https://docs.rs/jsony/latest/jsony/error/struct.UnknownVariant.html) * [json::AlwaysArray](https://docs.rs/jsony/latest/jsony/json/struct.AlwaysArray.html) * [json::AlwaysNumber](https://docs.rs/jsony/latest/jsony/json/struct.AlwaysNumber.html) * [json::AlwaysObject](https://docs.rs/jsony/latest/jsony/json/struct.AlwaysObject.html) * [json::AlwaysString](https://docs.rs/jsony/latest/jsony/json/struct.AlwaysString.html) * [json::AnyValue](https://docs.rs/jsony/latest/jsony/json/struct.AnyValue.html) * [json::ArrayWriter](https://docs.rs/jsony/latest/jsony/json/struct.ArrayWriter.html) * [json::DecodeError](https://docs.rs/jsony/latest/jsony/json/struct.DecodeError.html) * [json::ObjectWriter](https://docs.rs/jsony/latest/jsony/json/struct.ObjectWriter.html) * [json::ParserWithBorrowedKey](https://docs.rs/jsony/latest/jsony/json/struct.ParserWithBorrowedKey.html) * [json::ValueExtender](https://docs.rs/jsony/latest/jsony/json/struct.ValueExtender.html) * [json::ValueWriter](https://docs.rs/jsony/latest/jsony/json/struct.ValueWriter.html) * [parser::InnerParser](https://docs.rs/jsony/latest/jsony/parser/struct.InnerParser.html) * [parser::Parser](https://docs.rs/jsony/latest/jsony/parser/struct.Parser.html) * [parser::Peek](https://docs.rs/jsony/latest/jsony/parser/struct.Peek.html) * [parser::RetrySnapshot](https://docs.rs/jsony/latest/jsony/parser/struct.RetrySnapshot.html) * [text::Ctx](https://docs.rs/jsony/latest/jsony/text/struct.Ctx.html) ### Traits * [FromBinary](https://docs.rs/jsony/latest/jsony/trait.FromBinary.html) * [FromJson](https://docs.rs/jsony/latest/jsony/trait.FromJson.html) * [IntoByteWriter](https://docs.rs/jsony/latest/jsony/trait.IntoByteWriter.html) * [IntoTextWriter](https://docs.rs/jsony/latest/jsony/trait.IntoTextWriter.html) * [ToBinary](https://docs.rs/jsony/latest/jsony/trait.ToBinary.html) * [ToJson](https://docs.rs/jsony/latest/jsony/trait.ToJson.html) * [json::FieldVisitor](https://docs.rs/jsony/latest/jsony/json/trait.FieldVisitor.html) * [json::FromJsonFieldVisitor](https://docs.rs/jsony/latest/jsony/json/trait.FromJsonFieldVisitor.html) * [json::JsonKeyKind](https://docs.rs/jsony/latest/jsony/json/trait.JsonKeyKind.html) * [json::JsonValueKind](https://docs.rs/jsony/latest/jsony/json/trait.JsonValueKind.html) * [text::FromText](https://docs.rs/jsony/latest/jsony/text/trait.FromText.html) ### Macros * [array](https://docs.rs/jsony/latest/jsony/macro.array.html) * [object](https://docs.rs/jsony/latest/jsony/macro.object.html) * [require](https://docs.rs/jsony/latest/jsony/macro.require.html) ### Derive Macros * [Jsony](https://docs.rs/jsony/latest/jsony/derive.Jsony.html) ### Functions * [binary::write\_length](https://docs.rs/jsony/latest/jsony/binary/fn.write_length.html) * [drill](https://docs.rs/jsony/latest/jsony/fn.drill.html) * [from\_binary](https://docs.rs/jsony/latest/jsony/fn.from_binary.html) * [from\_json](https://docs.rs/jsony/latest/jsony/fn.from_json.html) * [from\_json\_bytes](https://docs.rs/jsony/latest/jsony/fn.from_json_bytes.html) * [from\_json\_with\_config](https://docs.rs/jsony/latest/jsony/fn.from_json_with_config.html) * [helper::json\_string::decode\_binary](https://docs.rs/jsony/latest/jsony/helper/json_string/fn.decode_binary.html) * [helper::json\_string::decode\_json](https://docs.rs/jsony/latest/jsony/helper/json_string/fn.decode_json.html) * [helper::json\_string::encode\_binary](https://docs.rs/jsony/latest/jsony/helper/json_string/fn.encode_binary.html) * [helper::json\_string::encode\_json](https://docs.rs/jsony/latest/jsony/helper/json_string/fn.encode_json.html) * [helper::object\_as\_vec\_of\_tuple::decode\_json](https://docs.rs/jsony/latest/jsony/helper/object_as_vec_of_tuple/fn.decode_json.html) * [helper::object\_as\_vec\_of\_tuple::encode\_json](https://docs.rs/jsony/latest/jsony/helper/object_as_vec_of_tuple/fn.encode_json.html) * [helper::owned\_cow::decode\_binary](https://docs.rs/jsony/latest/jsony/helper/owned_cow/fn.decode_binary.html) * [helper::owned\_cow::decode\_json](https://docs.rs/jsony/latest/jsony/helper/owned_cow/fn.decode_json.html) * [to\_binary](https://docs.rs/jsony/latest/jsony/fn.to_binary.html) * [to\_binary\_into](https://docs.rs/jsony/latest/jsony/fn.to_binary_into.html) * [to\_json](https://docs.rs/jsony/latest/jsony/fn.to_json.html) * [to\_json\_into](https://docs.rs/jsony/latest/jsony/fn.to_json_into.html) ### Statics * [error::CUSTOM\_FIELD\_VALIDATION\_ERROR](https://docs.rs/jsony/latest/jsony/error/static.CUSTOM_FIELD_VALIDATION_ERROR.html) * [error::DUPLICATE\_FIELD](https://docs.rs/jsony/latest/jsony/error/static.DUPLICATE_FIELD.html) * [error::EMPTY\_OBJECT\_FOR\_EXTERNALLY\_TAGGED\_ENUM](https://docs.rs/jsony/latest/jsony/error/static.EMPTY_OBJECT_FOR_EXTERNALLY_TAGGED_ENUM.html) * [error::MISSING\_CONTENT\_TAG](https://docs.rs/jsony/latest/jsony/error/static.MISSING_CONTENT_TAG.html) * [error::MISSING\_REQUIRED\_FIELDS](https://docs.rs/jsony/latest/jsony/error/static.MISSING_REQUIRED_FIELDS.html) * [error::MULTIPLE\_FIELDS\_FOR\_EXTERNALLY\_TAGGED\_ENUM](https://docs.rs/jsony/latest/jsony/error/static.MULTIPLE_FIELDS_FOR_EXTERNALLY_TAGGED_ENUM.html) * [error::NO\_FIELD\_MATCHED\_AN\_ENUM\_VARIANT](https://docs.rs/jsony/latest/jsony/error/static.NO_FIELD_MATCHED_AN_ENUM_VARIANT.html) * [error::RECURSION\_LIMIT\_EXCEEDED](https://docs.rs/jsony/latest/jsony/error/static.RECURSION_LIMIT_EXCEEDED.html) * [error::UNKNOWN\_VARIANT](https://docs.rs/jsony/latest/jsony/error/static.UNKNOWN_VARIANT.html) * [parser::TRAILING\_COMMA](https://docs.rs/jsony/latest/jsony/parser/static.TRAILING_COMMA.html) --- # List of all items in this crate [Docs.rs](https://docs.rs/) * [jump-start-0.2.3](https://docs.rs/jump-start/latest/jump_start/all.html# "The CLI for jump-start: A shortcut to your favorite code") * jump-start 0.2.3 * [Permalink](https://docs.rs/jump-start/0.2.3/jump_start/all.html "Get a link to this specific version") * [Docs.rs crate page](https://docs.rs/crate/jump-start/latest "See jump-start in docs.rs") * [MIT](https://spdx.org/licenses/MIT) * Links * [Repository](https://github.com/kevinschaul/jump-start-tools) * [crates.io](https://crates.io/crates/jump-start "See jump-start in crates.io") * [Source](https://docs.rs/crate/jump-start/latest/source/ "Browse source of jump-start-0.2.3") * Owners * [kevinschaul](https://crates.io/users/kevinschaul) * Dependencies * * [anyhow ^1.0.97 _normal_](https://docs.rs/anyhow/^1.0.97/) * [clap ^4.5 _normal_](https://docs.rs/clap/^4.5/) * [directories ^6.0 _normal_](https://docs.rs/directories/^6.0/) * [flate2 ^1.1.0 _normal_](https://docs.rs/flate2/^1.1.0/) * [glob ^0.3.2 _normal_](https://docs.rs/glob/^0.3.2/) * [handlebars ^6.3.1 _normal_](https://docs.rs/handlebars/^6.3.1/) * [log ^0.4 _normal_](https://docs.rs/log/^0.4/) * [mockito ^1.7.0 _normal_](https://docs.rs/mockito/^1.7.0/) * [notify ^4.0.17 _normal_](https://docs.rs/notify/^4.0.17/) * [regex ^1.11.1 _normal_](https://docs.rs/regex/^1.11.1/) * [reqwest ^0.11 _normal_](https://docs.rs/reqwest/^0.11/) * [serde ^1.0 _normal_](https://docs.rs/serde/^1.0/) * [serde\_json ^1.0 _normal_](https://docs.rs/serde_json/^1.0/) * [serde\_yaml ^0.9.34 _normal_](https://docs.rs/serde_yaml/^0.9.34/) * [tar ^0.4.44 _normal_](https://docs.rs/tar/^0.4.44/) * [tempfile ^3.10.1 _normal_](https://docs.rs/tempfile/^3.10.1/) * [tempfile ^3.10.1 _dev_](https://docs.rs/tempfile/^3.10.1/) * Versions * [**16.95%** of the crate is documented](https://docs.rs/crate/jump-start/latest) * [Platform](https://docs.rs/jump-start/latest/jump_start/all.html#) * [aarch64-apple-darwin](https://docs.rs/crate/jump-start/latest/target-redirect/aarch64-apple-darwin/jump_start/all.html) * [i686-pc-windows-msvc](https://docs.rs/crate/jump-start/latest/target-redirect/i686-pc-windows-msvc/jump_start/all.html) * [x86\_64-pc-windows-msvc](https://docs.rs/crate/jump-start/latest/target-redirect/x86_64-pc-windows-msvc/jump_start/all.html) * [x86\_64-unknown-linux-gnu](https://docs.rs/crate/jump-start/latest/target-redirect/jump_start/all.html) * [Feature flags](https://docs.rs/crate/jump-start/latest/features "Browse available feature flags of jump-start-0.2.3") * [docs.rs](https://docs.rs/jump-start/latest/jump_start/all.html#) * [About docs.rs](https://docs.rs/about) * [Badges](https://docs.rs/about/badges) * [Builds](https://docs.rs/about/builds) * [Metadata](https://docs.rs/about/metadata) * [Shorthand URLs](https://docs.rs/about/redirections) * [Download](https://docs.rs/about/download) * [Rustdoc JSON](https://docs.rs/about/rustdoc-json) * [Build queue](https://docs.rs/releases/queue) * [Privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#docs.rs) * [Rust](https://docs.rs/jump-start/latest/jump_start/all.html#) * [Rust website](https://www.rust-lang.org/) * [The Book](https://doc.rust-lang.org/book/) * [Standard Library API Reference](https://doc.rust-lang.org/std/) * [Rust by Example](https://doc.rust-lang.org/rust-by-example/) * [The Cargo Guide](https://doc.rust-lang.org/cargo/guide/) * [Clippy Documentation](https://doc.rust-lang.org/nightly/clippy) [Skip to main content](https://docs.rs/jump-start/latest/jump_start/all.html#main-content) [All](https://docs.rs/jump-start/latest/jump_start/all.html#) -------------------------------------------------------------- List of all items ================= ### Structs * [JumpStartInstance](https://docs.rs/jump-start/latest/jump_start/struct.JumpStartInstance.html) * [config::Config](https://docs.rs/jump-start/latest/jump_start/config/struct.Config.html) * [starter::LocalStarter](https://docs.rs/jump-start/latest/jump_start/starter/struct.LocalStarter.html) * [starter::LocalStarterFile](https://docs.rs/jump-start/latest/jump_start/starter/struct.LocalStarterFile.html) * [starter::PreviewConfig](https://docs.rs/jump-start/latest/jump_start/starter/struct.PreviewConfig.html) * [starter::RemoteStarter](https://docs.rs/jump-start/latest/jump_start/starter/struct.RemoteStarter.html) * [starter::StarterConfig](https://docs.rs/jump-start/latest/jump_start/starter/struct.StarterConfig.html) ### Functions * [commands::config::config](https://docs.rs/jump-start/latest/jump_start/commands/config/fn.config.html) * [commands::find::find](https://docs.rs/jump-start/latest/jump_start/commands/find/fn.find.html) * [commands::find::format\_result](https://docs.rs/jump-start/latest/jump_start/commands/find/fn.format_result.html) * [commands::find::make\_pattern](https://docs.rs/jump-start/latest/jump_start/commands/find/fn.make_pattern.html) * [commands::find::search\_instance](https://docs.rs/jump-start/latest/jump_start/commands/find/fn.search_instance.html) * [commands::storybook::dev](https://docs.rs/jump-start/latest/jump_start/commands/storybook/fn.dev.html) * [commands::storybook::generate\_starter\_story](https://docs.rs/jump-start/latest/jump_start/commands/storybook/fn.generate_starter_story.html) * [commands::storybook::generate\_stories](https://docs.rs/jump-start/latest/jump_start/commands/storybook/fn.generate_stories.html) * [commands::storybook::prod](https://docs.rs/jump-start/latest/jump_start/commands/storybook/fn.prod.html) * [commands::update\_readme::update\_readme](https://docs.rs/jump-start/latest/jump_start/commands/update_readme/fn.update_readme.html) * [commands::use::use](https://docs.rs/jump-start/latest/jump_start/commands/use/fn.use.html) * [config::get\_config\_path](https://docs.rs/jump-start/latest/jump_start/config/fn.get_config_path.html) * [config::get\_default\_instance](https://docs.rs/jump-start/latest/jump_start/config/fn.get_default_instance.html) * [config::load\_config](https://docs.rs/jump-start/latest/jump_start/config/fn.load_config.html) * [config::resolve\_instance\_path](https://docs.rs/jump-start/latest/jump_start/config/fn.resolve_instance_path.html) * [starter::get\_starter\_command](https://docs.rs/jump-start/latest/jump_start/starter/fn.get_starter_command.html) * [starter::get\_starter\_files](https://docs.rs/jump-start/latest/jump_start/starter/fn.get_starter_files.html) * [starter::parse\_starters](https://docs.rs/jump-start/latest/jump_start/starter/fn.parse_starters.html) ### Type Aliases * [LocalStarterGroupLookup](https://docs.rs/jump-start/latest/jump_start/type.LocalStarterGroupLookup.html) --- # jump_start - Rust [Docs.rs](https://docs.rs/) * [jump-start-0.2.3](https://docs.rs/jump-start/latest/jump_start/# "The CLI for jump-start: A shortcut to your favorite code") * jump-start 0.2.3 * [Permalink](https://docs.rs/jump-start/0.2.3/jump_start/ "Get a link to this specific version") * [Docs.rs crate page](https://docs.rs/crate/jump-start/latest "See jump-start in docs.rs") * [MIT](https://spdx.org/licenses/MIT) * Links * [Repository](https://github.com/kevinschaul/jump-start-tools) * [crates.io](https://crates.io/crates/jump-start "See jump-start in crates.io") * [Source](https://docs.rs/crate/jump-start/latest/source/ "Browse source of jump-start-0.2.3") * Owners * [kevinschaul](https://crates.io/users/kevinschaul) * Dependencies * * [anyhow ^1.0.97 _normal_](https://docs.rs/anyhow/^1.0.97/) * [clap ^4.5 _normal_](https://docs.rs/clap/^4.5/) * [directories ^6.0 _normal_](https://docs.rs/directories/^6.0/) * [flate2 ^1.1.0 _normal_](https://docs.rs/flate2/^1.1.0/) * [glob ^0.3.2 _normal_](https://docs.rs/glob/^0.3.2/) * [handlebars ^6.3.1 _normal_](https://docs.rs/handlebars/^6.3.1/) * [log ^0.4 _normal_](https://docs.rs/log/^0.4/) * [mockito ^1.7.0 _normal_](https://docs.rs/mockito/^1.7.0/) * [notify ^4.0.17 _normal_](https://docs.rs/notify/^4.0.17/) * [regex ^1.11.1 _normal_](https://docs.rs/regex/^1.11.1/) * [reqwest ^0.11 _normal_](https://docs.rs/reqwest/^0.11/) * [serde ^1.0 _normal_](https://docs.rs/serde/^1.0/) * [serde\_json ^1.0 _normal_](https://docs.rs/serde_json/^1.0/) * [serde\_yaml ^0.9.34 _normal_](https://docs.rs/serde_yaml/^0.9.34/) * [tar ^0.4.44 _normal_](https://docs.rs/tar/^0.4.44/) * [tempfile ^3.10.1 _normal_](https://docs.rs/tempfile/^3.10.1/) * [tempfile ^3.10.1 _dev_](https://docs.rs/tempfile/^3.10.1/) * Versions * [**16.95%** of the crate is documented](https://docs.rs/crate/jump-start/latest) * [Platform](https://docs.rs/jump-start/latest/jump_start/#) * [aarch64-apple-darwin](https://docs.rs/crate/jump-start/latest/target-redirect/aarch64-apple-darwin/jump_start/) * [i686-pc-windows-msvc](https://docs.rs/crate/jump-start/latest/target-redirect/i686-pc-windows-msvc/jump_start/) * [x86\_64-pc-windows-msvc](https://docs.rs/crate/jump-start/latest/target-redirect/x86_64-pc-windows-msvc/jump_start/) * [x86\_64-unknown-linux-gnu](https://docs.rs/crate/jump-start/latest/target-redirect/jump_start/) * [Feature flags](https://docs.rs/crate/jump-start/latest/features "Browse available feature flags of jump-start-0.2.3") * [docs.rs](https://docs.rs/jump-start/latest/jump_start/#) * [About docs.rs](https://docs.rs/about) * [Badges](https://docs.rs/about/badges) * [Builds](https://docs.rs/about/builds) * [Metadata](https://docs.rs/about/metadata) * [Shorthand URLs](https://docs.rs/about/redirections) * [Download](https://docs.rs/about/download) * [Rustdoc JSON](https://docs.rs/about/rustdoc-json) * [Build queue](https://docs.rs/releases/queue) * [Privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#docs.rs) * [Rust](https://docs.rs/jump-start/latest/jump_start/#) * [Rust website](https://www.rust-lang.org/) * [The Book](https://doc.rust-lang.org/book/) * [Standard Library API Reference](https://doc.rust-lang.org/std/) * [Rust by Example](https://doc.rust-lang.org/rust-by-example/) * [The Cargo Guide](https://doc.rust-lang.org/cargo/guide/) * [Clippy Documentation](https://doc.rust-lang.org/nightly/clippy) [Skip to main content](https://docs.rs/jump-start/latest/jump_start/#main-content) [Crate jump\_start](https://docs.rs/jump-start/latest/jump_start/#) -------------------------------------------------------------------- Crate jump\_start Copy item path ================================ [Source](https://docs.rs/jump-start/latest/src/jump_start/lib.rs.html#1-22) Re-exports[§](https://docs.rs/jump-start/latest/jump_start/#reexports) ----------------------------------------------------------------------- `pub use config::[Config](https://docs.rs/jump-start/latest/jump_start/config/struct.Config.html "struct jump_start::config::Config") ;` `pub use starter::[LocalStarter](https://docs.rs/jump-start/latest/jump_start/starter/struct.LocalStarter.html "struct jump_start::starter::LocalStarter") ;` `pub use starter::[RemoteStarter](https://docs.rs/jump-start/latest/jump_start/starter/struct.RemoteStarter.html "struct jump_start::starter::RemoteStarter") ;` Modules[§](https://docs.rs/jump-start/latest/jump_start/#modules) ------------------------------------------------------------------ [commands](https://docs.rs/jump-start/latest/jump_start/commands/index.html "mod jump_start::commands") [config](https://docs.rs/jump-start/latest/jump_start/config/index.html "mod jump_start::config") [starter](https://docs.rs/jump-start/latest/jump_start/starter/index.html "mod jump_start::starter") Structs[§](https://docs.rs/jump-start/latest/jump_start/#structs) ------------------------------------------------------------------ [JumpStartInstance](https://docs.rs/jump-start/latest/jump_start/struct.JumpStartInstance.html "struct jump_start::JumpStartInstance") Type Aliases[§](https://docs.rs/jump-start/latest/jump_start/#types) --------------------------------------------------------------------- [LocalStarterGroupLookup](https://docs.rs/jump-start/latest/jump_start/type.LocalStarterGroupLookup.html "type jump_start::LocalStarterGroupLookup") --- # List of all items in this crate [Docs.rs](https://docs.rs/) * [just\_serve\_it-1.0.0](https://docs.rs/just_serve_it/latest/just_serve_it/all.html# "A lightweight and multithreaded backend web-framework for Rust") * just\_serve\_it 1.0.0 * [Permalink](https://docs.rs/just_serve_it/1.0.0/just_serve_it/all.html "Get a link to this specific version") * [Docs.rs crate page](https://docs.rs/crate/just_serve_it/latest "See just_serve_it in docs.rs") * GPL-3.0 * Links * [Repository](https://github.com/bit-web24/just_serve_it) * [crates.io](https://crates.io/crates/just_serve_it "See just_serve_it in crates.io") * [Source](https://docs.rs/crate/just_serve_it/latest/source/ "Browse source of just_serve_it-1.0.0") * Owners * [bit-web24](https://crates.io/users/bit-web24) * Dependencies * * [serde\_json ^1.0.114 _normal_](https://docs.rs/serde_json/^1.0.114/) * [serde\_urlencoded ^0.7.1 _normal_](https://docs.rs/serde_urlencoded/^0.7.1/) * Versions * [**0%** of the crate is documented](https://docs.rs/crate/just_serve_it/latest) * [Platform](https://docs.rs/just_serve_it/latest/just_serve_it/all.html#) * [aarch64-apple-darwin](https://docs.rs/crate/just_serve_it/latest/target-redirect/aarch64-apple-darwin/just_serve_it/all.html) * [aarch64-unknown-linux-gnu](https://docs.rs/crate/just_serve_it/latest/target-redirect/aarch64-unknown-linux-gnu/just_serve_it/all.html) * [i686-pc-windows-msvc](https://docs.rs/crate/just_serve_it/latest/target-redirect/i686-pc-windows-msvc/just_serve_it/all.html) * [x86\_64-pc-windows-msvc](https://docs.rs/crate/just_serve_it/latest/target-redirect/x86_64-pc-windows-msvc/just_serve_it/all.html) * [x86\_64-unknown-linux-gnu](https://docs.rs/crate/just_serve_it/latest/target-redirect/just_serve_it/all.html) * [Feature flags](https://docs.rs/crate/just_serve_it/latest/features "Browse available feature flags of just_serve_it-1.0.0") * [docs.rs](https://docs.rs/just_serve_it/latest/just_serve_it/all.html#) * [About docs.rs](https://docs.rs/about) * [Badges](https://docs.rs/about/badges) * [Builds](https://docs.rs/about/builds) * [Metadata](https://docs.rs/about/metadata) * [Shorthand URLs](https://docs.rs/about/redirections) * [Download](https://docs.rs/about/download) * [Rustdoc JSON](https://docs.rs/about/rustdoc-json) * [Build queue](https://docs.rs/releases/queue) * [Privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#docs.rs) * [Rust](https://docs.rs/just_serve_it/latest/just_serve_it/all.html#) * [Rust website](https://www.rust-lang.org/) * [The Book](https://doc.rust-lang.org/book/) * [Standard Library API Reference](https://doc.rust-lang.org/std/) * [Rust by Example](https://doc.rust-lang.org/rust-by-example/) * [The Cargo Guide](https://doc.rust-lang.org/cargo/guide/) * [Clippy Documentation](https://doc.rust-lang.org/nightly/clippy) [All](https://docs.rs/just_serve_it/latest/just_serve_it/all.html#) -------------------------------------------------------------------- List of all items ================= ### Structs * [Server](https://docs.rs/just_serve_it/latest/just_serve_it/struct.Server.html) * [body::Body](https://docs.rs/just_serve_it/latest/just_serve_it/body/struct.Body.html) * [header::Header](https://docs.rs/just_serve_it/latest/just_serve_it/header/struct.Header.html) * [middleware::body\_parser::BodyParser](https://docs.rs/just_serve_it/latest/just_serve_it/middleware/body_parser/struct.BodyParser.html) * [middleware::serve::ServeStatic](https://docs.rs/just_serve_it/latest/just_serve_it/middleware/serve/struct.ServeStatic.html) * [path::Path](https://docs.rs/just_serve_it/latest/just_serve_it/path/struct.Path.html) * [request::Request](https://docs.rs/just_serve_it/latest/just_serve_it/request/struct.Request.html) * [response::Response](https://docs.rs/just_serve_it/latest/just_serve_it/response/struct.Response.html) * [routes::Route](https://docs.rs/just_serve_it/latest/just_serve_it/routes/struct.Route.html) * [routes::Router](https://docs.rs/just_serve_it/latest/just_serve_it/routes/struct.Router.html) * [status::Status](https://docs.rs/just_serve_it/latest/just_serve_it/status/struct.Status.html) * [threadpool::ThreadPool](https://docs.rs/just_serve_it/latest/just_serve_it/threadpool/struct.ThreadPool.html) ### Enums * [method::Method](https://docs.rs/just_serve_it/latest/just_serve_it/method/enum.Method.html) ### Traits * [middleware::Middleware](https://docs.rs/just_serve_it/latest/just_serve_it/middleware/trait.Middleware.html) --- # jazz_chord - Rust [Docs.rs](https://docs.rs/) * [jazz-chord-0.1.4](https://docs.rs/jazz-chord/latest/jazz_chord/# "Parse jazz chord symbols like ma7 or dim13(no 5)...") * jazz-chord 0.1.4 * [Permalink](https://docs.rs/jazz-chord/0.1.4/jazz_chord/ "Get a link to this specific version") * [Docs.rs crate page](https://docs.rs/crate/jazz-chord/latest "See jazz-chord in docs.rs") * [AGPL-3.0-only](https://spdx.org/licenses/AGPL-3.0-only) * Links * [crates.io](https://crates.io/crates/jazz-chord "See jazz-chord in crates.io") * [Source](https://docs.rs/crate/jazz-chord/latest/source/ "Browse source of jazz-chord-0.1.4") * Owners * [edrihan](https://crates.io/users/edrihan) * Dependencies * * [cached ^0.56.0 _normal_](https://docs.rs/cached/^0.56.0/) * [ezstr ^0.2.1 _normal_](https://docs.rs/ezstr/^0.2.1/) * [jazz-accidentals ^0.1.4 _normal_](https://docs.rs/jazz-accidentals/^0.1.4/) * [once\_cell ^1.21.3 _normal_](https://docs.rs/once_cell/^1.21.3/) * Versions * [**1.09%** of the crate is documented](https://docs.rs/crate/jazz-chord/latest) * [Platform](https://docs.rs/jazz-chord/latest/jazz_chord/#) * [i686-pc-windows-msvc](https://docs.rs/crate/jazz-chord/latest/target-redirect/i686-pc-windows-msvc/jazz_chord/) * [i686-unknown-linux-gnu](https://docs.rs/crate/jazz-chord/latest/target-redirect/i686-unknown-linux-gnu/jazz_chord/) * [x86\_64-apple-darwin](https://docs.rs/crate/jazz-chord/latest/target-redirect/x86_64-apple-darwin/jazz_chord/) * [x86\_64-pc-windows-msvc](https://docs.rs/crate/jazz-chord/latest/target-redirect/x86_64-pc-windows-msvc/jazz_chord/) * [x86\_64-unknown-linux-gnu](https://docs.rs/crate/jazz-chord/latest/target-redirect/jazz_chord/) * [Feature flags](https://docs.rs/crate/jazz-chord/latest/features "Browse available feature flags of jazz-chord-0.1.4") * [docs.rs](https://docs.rs/jazz-chord/latest/jazz_chord/#) * [About docs.rs](https://docs.rs/about) * [Badges](https://docs.rs/about/badges) * [Builds](https://docs.rs/about/builds) * [Metadata](https://docs.rs/about/metadata) * [Shorthand URLs](https://docs.rs/about/redirections) * [Download](https://docs.rs/about/download) * [Rustdoc JSON](https://docs.rs/about/rustdoc-json) * [Build queue](https://docs.rs/releases/queue) * [Privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#docs.rs) * [Rust](https://docs.rs/jazz-chord/latest/jazz_chord/#) * [Rust website](https://www.rust-lang.org/) * [The Book](https://doc.rust-lang.org/book/) * [Standard Library API Reference](https://doc.rust-lang.org/std/) * [Rust by Example](https://doc.rust-lang.org/rust-by-example/) * [The Cargo Guide](https://doc.rust-lang.org/cargo/guide/) * [Clippy Documentation](https://doc.rust-lang.org/nightly/clippy) [Crate jazz\_chord](https://docs.rs/jazz-chord/latest/jazz_chord/#) -------------------------------------------------------------------- Crate jazz\_chord Copy item path ================================ [Source](https://docs.rs/jazz-chord/latest/src/jazz_chord/lib.rs.html#2-1279) Structs[§](https://docs.rs/jazz-chord/latest/jazz_chord/#structs) ------------------------------------------------------------------ [Change](https://docs.rs/jazz-chord/latest/jazz_chord/struct.Change.html "struct jazz_chord::Change") [ChordModificationParseResult](https://docs.rs/jazz-chord/latest/jazz_chord/struct.ChordModificationParseResult.html "struct jazz_chord::ChordModificationParseResult") [ChordModificationToken](https://docs.rs/jazz-chord/latest/jazz_chord/struct.ChordModificationToken.html "struct jazz_chord::ChordModificationToken") [ChordModificationTokens](https://docs.rs/jazz-chord/latest/jazz_chord/struct.ChordModificationTokens.html "struct jazz_chord::ChordModificationTokens") [ChordQuality](https://docs.rs/jazz-chord/latest/jazz_chord/struct.ChordQuality.html "struct jazz_chord::ChordQuality") [ChordTypeMatch](https://docs.rs/jazz-chord/latest/jazz_chord/struct.ChordTypeMatch.html "struct jazz_chord::ChordTypeMatch") [ExtensionType](https://docs.rs/jazz-chord/latest/jazz_chord/struct.ExtensionType.html "struct jazz_chord::ExtensionType") [ExtensionTypeMatch](https://docs.rs/jazz-chord/latest/jazz_chord/struct.ExtensionTypeMatch.html "struct jazz_chord::ExtensionTypeMatch") [Key](https://docs.rs/jazz-chord/latest/jazz_chord/struct.Key.html "struct jazz_chord::Key") [Note](https://docs.rs/jazz-chord/latest/jazz_chord/struct.Note.html "struct jazz_chord::Note") [TriadType](https://docs.rs/jazz-chord/latest/jazz_chord/struct.TriadType.html "struct jazz_chord::TriadType") --- # jiff_sqlx - Rust [Docs.rs](https://docs.rs/) * [jiff-sqlx-0.1.1](https://docs.rs/jiff-sqlx/latest/jiff_sqlx/# "Integration for Jiff with SQLx.") * jiff-sqlx 0.1.1 * [Permalink](https://docs.rs/jiff-sqlx/0.1.1/jiff_sqlx/ "Get a link to this specific version") * [Docs.rs crate page](https://docs.rs/crate/jiff-sqlx/latest "See jiff-sqlx in docs.rs") * [Unlicense](https://spdx.org/licenses/Unlicense) OR [MIT](https://spdx.org/licenses/MIT) * Links * [Homepage](https://github.com/BurntSushi/jiff/tree/master/crates/jiff-sqlx) * [Repository](https://github.com/BurntSushi/jiff) * [crates.io](https://crates.io/crates/jiff-sqlx "See jiff-sqlx in crates.io") * [Source](https://docs.rs/crate/jiff-sqlx/latest/source/ "Browse source of jiff-sqlx-0.1.1") * Owners * [BurntSushi](https://crates.io/users/BurntSushi) * Dependencies * * [jiff ^0.2.0 _normal_](https://docs.rs/jiff/^0.2.0/) * [sqlx-core ^0.8.0 _normal_](https://docs.rs/sqlx-core/^0.8.0/) * [sqlx-postgres ^0.8.0 _normal_ _optional_](https://docs.rs/sqlx-postgres/^0.8.0/) * [sqlx-sqlite ^0.8.0 _normal_ _optional_](https://docs.rs/sqlx-sqlite/^0.8.0/) * [jiff ^0.2.0 _dev_](https://docs.rs/jiff/^0.2.0/) * Versions * [**100%** of the crate is documented](https://docs.rs/crate/jiff-sqlx/latest) * [Platform](https://docs.rs/jiff-sqlx/latest/jiff_sqlx/#) * [i686-pc-windows-msvc](https://docs.rs/crate/jiff-sqlx/latest/target-redirect/i686-pc-windows-msvc/jiff_sqlx/) * [i686-unknown-linux-gnu](https://docs.rs/crate/jiff-sqlx/latest/target-redirect/i686-unknown-linux-gnu/jiff_sqlx/) * [x86\_64-apple-darwin](https://docs.rs/crate/jiff-sqlx/latest/target-redirect/x86_64-apple-darwin/jiff_sqlx/) * [x86\_64-pc-windows-msvc](https://docs.rs/crate/jiff-sqlx/latest/target-redirect/x86_64-pc-windows-msvc/jiff_sqlx/) * [x86\_64-unknown-linux-gnu](https://docs.rs/crate/jiff-sqlx/latest/target-redirect/jiff_sqlx/) * [Feature flags](https://docs.rs/crate/jiff-sqlx/latest/features "Browse available feature flags of jiff-sqlx-0.1.1") * [docs.rs](https://docs.rs/jiff-sqlx/latest/jiff_sqlx/#) * [About docs.rs](https://docs.rs/about) * [Badges](https://docs.rs/about/badges) * [Builds](https://docs.rs/about/builds) * [Metadata](https://docs.rs/about/metadata) * [Shorthand URLs](https://docs.rs/about/redirections) * [Download](https://docs.rs/about/download) * [Rustdoc JSON](https://docs.rs/about/rustdoc-json) * [Build queue](https://docs.rs/releases/queue) * [Privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#docs.rs) * [Rust](https://docs.rs/jiff-sqlx/latest/jiff_sqlx/#) * [Rust website](https://www.rust-lang.org/) * [The Book](https://doc.rust-lang.org/book/) * [Standard Library API Reference](https://doc.rust-lang.org/std/) * [Rust by Example](https://doc.rust-lang.org/rust-by-example/) * [The Cargo Guide](https://doc.rust-lang.org/cargo/guide/) * [Clippy Documentation](https://doc.rust-lang.org/nightly/clippy) [Crate jiff\_sqlx](https://docs.rs/jiff-sqlx/latest/jiff_sqlx/#) ----------------------------------------------------------------- Crate jiff\_sqlx Copy item path =============================== [Source](https://docs.rs/jiff-sqlx/latest/src/jiff_sqlx/lib.rs.html#1-81) Expand description This crate provides integration points for [Jiff](https://docs.rs/jiff/0.2.15/x86_64-unknown-linux-gnu/jiff/index.html "mod jiff") and [SQLx](https://docs.rs/sqlx/0.8) . Examples can be found in the [examples directory of the Jiff repository](https://github.com/BurntSushi/jiff/tree/master/examples) . Note that to use this crate, you’ll likely need to enable one of its [database backend features](https://docs.rs/jiff-sqlx/latest/jiff_sqlx/#crate-features) . [§](https://docs.rs/jiff-sqlx/latest/jiff_sqlx/#organization) Organization -------------------------------------------------------------------------- This crates defines several types that wrap corresponding types in Jiff. Each wrapper type provides implementations of traits found in SQLx. For most types, these are the [`sqlx_core::types::Type`](https://docs.rs/sqlx-core/0.8.6/x86_64-unknown-linux-gnu/sqlx_core/types/trait.Type.html "trait sqlx_core::types::Type") , [`sqlx_core::decode::Decode`](https://docs.rs/sqlx-core/0.8.6/x86_64-unknown-linux-gnu/sqlx_core/decode/trait.Decode.html "trait sqlx_core::decode::Decode") and [`sqlx_core::encode::Encode`](https://docs.rs/sqlx-core/0.8.6/x86_64-unknown-linux-gnu/sqlx_core/encode/trait.Encode.html "trait sqlx_core::encode::Encode") traits. The intended workflow is to use these wrapper types within your wire types for encoding and decoding data from databases such as PostgreSQL. The wrapper types own the logic for encoding and decoding the data in database specific formats. In order to the minimize the annoyance of wrapper types, the following conveniences are afforded: * A [`ToSqlx`](https://docs.rs/jiff-sqlx/latest/jiff_sqlx/trait.ToSqlx.html "trait jiff_sqlx::ToSqlx") trait is provided. Several Jiff types implement this trait. The trait provides easy conversion to the corresponding wrapper type in this crate. * A concrete `to_jiff` method is provided on each wrapper type. For example, [`Timestamp::to_jiff`](https://docs.rs/jiff-sqlx/latest/jiff_sqlx/struct.Timestamp.html#method.to_jiff "method jiff_sqlx::Timestamp::to_jiff") . This method is the reverse of `ToSqlx`. This converts from the wrapper type to the corresponding Jiff type. * There are `From` trait implementations from the wrapper type to the corresponding Jiff type, and vice versa. [§](https://docs.rs/jiff-sqlx/latest/jiff_sqlx/#database-support) Database support ---------------------------------------------------------------------------------- At present, both PostgreSQL and SQLite are supported. Ideally, MySQL support would be present too, but it [appears impossible until SQLx exposes some APIs](https://github.com/launchbadge/sqlx/issues/3487#issuecomment-2641843693) . [§](https://docs.rs/jiff-sqlx/latest/jiff_sqlx/#future) Future -------------------------------------------------------------- This crate exists because there are generally only three ways to implement the necessary traits in SQLx: 1. Make Jiff depend on SQLx, and implement the corresponding traits where Jiff’s types are defined. 2. Make SQLx depend on Jiff, and implement the corresponding traits where the traits are defined. 3. Make a crate like this one with types that wrap Jiff’s types, and implements the corresponding traits for the wrapper types. This was done because it seems inappropriate for a “lower level” crate like Jiff to depend on SQLx. And while it might be appropriate for SQLx to optionally depend on Jiff (like it does for [`chrono`](https://docs.rs/chrono) or [`time`](https://docs.rs/time) ), at time of writing, Jiff is still early in its life. It’s totally reasonable to wait for it to mature. Plus, the thought of three different datetime integrations is, admittedly, tough to stomach. In the future, it may be prudent for this crate to be upstreamed into SQLx itself. [§](https://docs.rs/jiff-sqlx/latest/jiff_sqlx/#crate-features) Crate features ------------------------------------------------------------------------------ * **postgres** - Enables the `sqlx-postgres` dependency. * **sqlite** - Enables the `sqlx-sqlite` dependency. Structs[§](https://docs.rs/jiff-sqlx/latest/jiff_sqlx/#structs) ---------------------------------------------------------------- [Date](https://docs.rs/jiff-sqlx/latest/jiff_sqlx/struct.Date.html "struct jiff_sqlx::Date") A wrapper type for [`jiff::civil::Date`](https://docs.rs/jiff/0.2.15/x86_64-unknown-linux-gnu/jiff/civil/date/struct.Date.html "struct jiff::civil::date::Date") . [DateTime](https://docs.rs/jiff-sqlx/latest/jiff_sqlx/struct.DateTime.html "struct jiff_sqlx::DateTime") A wrapper type for [`jiff::civil::DateTime`](https://docs.rs/jiff/0.2.15/x86_64-unknown-linux-gnu/jiff/civil/datetime/struct.DateTime.html "struct jiff::civil::datetime::DateTime") . [Span](https://docs.rs/jiff-sqlx/latest/jiff_sqlx/struct.Span.html "struct jiff_sqlx::Span") A wrapper type for [`jiff::Span`](https://docs.rs/jiff/0.2.15/x86_64-unknown-linux-gnu/jiff/span/struct.Span.html "struct jiff::span::Span") . [Time](https://docs.rs/jiff-sqlx/latest/jiff_sqlx/struct.Time.html "struct jiff_sqlx::Time") A wrapper type for [`jiff::civil::Time`](https://docs.rs/jiff/0.2.15/x86_64-unknown-linux-gnu/jiff/civil/time/struct.Time.html "struct jiff::civil::time::Time") . [Timestamp](https://docs.rs/jiff-sqlx/latest/jiff_sqlx/struct.Timestamp.html "struct jiff_sqlx::Timestamp") A wrapper type for [`jiff::Timestamp`](https://docs.rs/jiff/0.2.15/x86_64-unknown-linux-gnu/jiff/timestamp/struct.Timestamp.html "struct jiff::timestamp::Timestamp") . Traits[§](https://docs.rs/jiff-sqlx/latest/jiff_sqlx/#traits) -------------------------------------------------------------- [ToSqlx](https://docs.rs/jiff-sqlx/latest/jiff_sqlx/trait.ToSqlx.html "trait jiff_sqlx::ToSqlx") A trait for convenient conversions from Jiff types to SQLx types. --- # arrow-ipc 58.1.0 - Docs.rs [Docs.rs](https://docs.rs/) * [arrow-ipc-58.1.0](https://docs.rs/crate/arrow-ipc/58.1.0 "Support for the Arrow IPC format") * [Platform](https://docs.rs/crate/arrow-ipc/58.1.0#) * [x86\_64-unknown-linux-gnu](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/) * [Feature flags](https://docs.rs/crate/arrow-ipc/58.1.0/features "Browse available feature flags of arrow-ipc-58.1.0") * [docs.rs](https://docs.rs/crate/arrow-ipc/58.1.0#) * [About docs.rs](https://docs.rs/about) * [Badges](https://docs.rs/about/badges) * [Builds](https://docs.rs/about/builds) * [Metadata](https://docs.rs/about/metadata) * [Shorthand URLs](https://docs.rs/about/redirections) * [Download](https://docs.rs/about/download) * [Rustdoc JSON](https://docs.rs/about/rustdoc-json) * [Build queue](https://docs.rs/releases/queue) * [Privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#docs.rs) * [Rust](https://docs.rs/crate/arrow-ipc/58.1.0#) * [Rust website](https://www.rust-lang.org/) * [The Book](https://doc.rust-lang.org/book/) * [Standard Library API Reference](https://doc.rust-lang.org/std/) * [Rust by Example](https://doc.rust-lang.org/rust-by-example/) * [The Cargo Guide](https://doc.rust-lang.org/cargo/guide/) * [Clippy Documentation](https://doc.rust-lang.org/nightly/clippy) arrow-ipc 58.1.0 ================ Support for the Arrow IPC format * [Crate](https://docs.rs/crate/arrow-ipc/58.1.0) * [Source](https://docs.rs/crate/arrow-ipc/58.1.0/source/) * [Builds](https://docs.rs/crate/arrow-ipc/58.1.0/builds) * [Feature flags](https://docs.rs/crate/arrow-ipc/58.1.0/features) [Documentation](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/) * Coverage * **100%** **258** out of **258** items documented**8** out of **766** items with examples * Size * Source code size: 819.79 kB This is the summed size of all the files inside the crates.io package for this release. * Documentation size: 14.94 MB This is the summed size of all files generated by rustdoc for all configured targets * Ø build duration * this release: 54s Average build duration of **successful** builds. * all releases: 44s Average build duration of **successful** builds in releases after 2024-10-23. * Links * [Homepage](https://github.com/apache/arrow-rs) * [apache/arrow-rs \ 3416 1135 543](https://github.com/apache/arrow-rs) * [crates.io](https://crates.io/crates/arrow-ipc "See arrow-ipc on crates.io") * Dependencies * * [arrow-array ^58.1.0 _normal_](https://docs.rs/crate/arrow-array/^58.1.0) * [arrow-buffer ^58.1.0 _normal_](https://docs.rs/crate/arrow-buffer/^58.1.0) * [arrow-data ^58.1.0 _normal_](https://docs.rs/crate/arrow-data/^58.1.0) * [arrow-schema ^58.1.0 _normal_](https://docs.rs/crate/arrow-schema/^58.1.0) * [arrow-select ^58.1.0 _normal_](https://docs.rs/crate/arrow-select/^58.1.0) * [flatbuffers ^25.2.10 _normal_](https://docs.rs/crate/flatbuffers/^25.2.10) * [lz4\_flex ^0.13 _normal_ _optional_](https://docs.rs/crate/lz4_flex/^0.13) * [zstd ^0.13.0 _normal_ _optional_](https://docs.rs/crate/zstd/^0.13.0) * [bytes ^1.9 _dev_](https://docs.rs/crate/bytes/^1.9) * [criterion ^0.8.0 _dev_](https://docs.rs/crate/criterion/^0.8.0) * [memmap2 ^0.9.3 _dev_](https://docs.rs/crate/memmap2/^0.9.3) * [tempfile ^3.3 _dev_](https://docs.rs/crate/tempfile/^3.3) * [tokio ^1.43.0 _dev_](https://docs.rs/crate/tokio/^1.43.0) * Versions * * [**58.1.0** (2026-03-24)](https://docs.rs/crate/arrow-ipc/58.1.0) * [**58.0.0** (2026-02-23)](https://docs.rs/crate/arrow-ipc/58.0.0) * [**57.3.0** (2026-02-06)](https://docs.rs/crate/arrow-ipc/57.3.0) * [**57.2.0** (2026-01-11)](https://docs.rs/crate/arrow-ipc/57.2.0) * [**57.1.0** (2025-11-24)](https://docs.rs/crate/arrow-ipc/57.1.0) * [**57.0.0** (2025-10-23)](https://docs.rs/crate/arrow-ipc/57.0.0) * [**56.2.0** (2025-09-23)](https://docs.rs/crate/arrow-ipc/56.2.0) * [**56.1.0** (2025-08-25)](https://docs.rs/crate/arrow-ipc/56.1.0) * [**56.0.0** (2025-08-01)](https://docs.rs/crate/arrow-ipc/56.0.0) * [**55.2.0** (2025-06-26)](https://docs.rs/crate/arrow-ipc/55.2.0) * [**55.1.0** (2025-05-13)](https://docs.rs/crate/arrow-ipc/55.1.0) * [**55.0.0** (2025-04-11)](https://docs.rs/crate/arrow-ipc/55.0.0) * [**54.3.1** (2025-03-30)](https://docs.rs/crate/arrow-ipc/54.3.1) * [**54.3.0** (2025-03-21)](https://docs.rs/crate/arrow-ipc/54.3.0) * [**54.2.1** (2025-02-27)](https://docs.rs/crate/arrow-ipc/54.2.1) * [**54.2.0** (2025-02-16)](https://docs.rs/crate/arrow-ipc/54.2.0) * [**54.1.0** (2025-02-02)](https://docs.rs/crate/arrow-ipc/54.1.0) * [**54.0.0** (2024-12-23)](https://docs.rs/crate/arrow-ipc/54.0.0) * [**53.4.1** (2025-03-07)](https://docs.rs/crate/arrow-ipc/53.4.1) * [**53.4.0** (2025-01-18)](https://docs.rs/crate/arrow-ipc/53.4.0) * [**53.3.0** (2024-11-20)](https://docs.rs/crate/arrow-ipc/53.3.0) * [**53.2.0** (2024-10-24)](https://docs.rs/crate/arrow-ipc/53.2.0) * [**53.1.0** (2024-10-06)](https://docs.rs/crate/arrow-ipc/53.1.0) * [**53.0.0** (2024-09-03)](https://docs.rs/crate/arrow-ipc/53.0.0) * [**52.2.0** (2024-07-28)](https://docs.rs/crate/arrow-ipc/52.2.0) * [**52.1.0** (2024-07-06)](https://docs.rs/crate/arrow-ipc/52.1.0) * [**52.0.0** (2024-06-06)](https://docs.rs/crate/arrow-ipc/52.0.0) * [**51.0.0** (2024-03-18)](https://docs.rs/crate/arrow-ipc/51.0.0) * [**50.0.0** (2024-01-12)](https://docs.rs/crate/arrow-ipc/50.0.0) * [**49.0.0** (2023-11-13)](https://docs.rs/crate/arrow-ipc/49.0.0) * [**48.0.1** (2023-11-13)](https://docs.rs/crate/arrow-ipc/48.0.1) * [**48.0.0** (2023-10-23)](https://docs.rs/crate/arrow-ipc/48.0.0) * [**47.0.0** (2023-09-22)](https://docs.rs/crate/arrow-ipc/47.0.0) * [**46.0.0** (2023-08-24)](https://docs.rs/crate/arrow-ipc/46.0.0) * [**45.0.0** (2023-08-02)](https://docs.rs/crate/arrow-ipc/45.0.0) * [**44.0.0** (2023-07-18)](https://docs.rs/crate/arrow-ipc/44.0.0) * [**43.0.0** (2023-07-03)](https://docs.rs/crate/arrow-ipc/43.0.0) * [**42.0.0** (2023-06-20)](https://docs.rs/crate/arrow-ipc/42.0.0) * [**41.0.0** (2023-06-06)](https://docs.rs/crate/arrow-ipc/41.0.0) * [**40.0.0** (2023-05-22)](https://docs.rs/crate/arrow-ipc/40.0.0) * [**39.0.0** (2023-05-09)](https://docs.rs/crate/arrow-ipc/39.0.0) * [**38.0.0** (2023-04-25)](https://docs.rs/crate/arrow-ipc/38.0.0) * [**37.0.0** (2023-04-10)](https://docs.rs/crate/arrow-ipc/37.0.0) * [**36.0.0** (2023-03-28)](https://docs.rs/crate/arrow-ipc/36.0.0) * [**35.0.0** (2023-03-13)](https://docs.rs/crate/arrow-ipc/35.0.0) * [**34.0.0** (2023-02-27)](https://docs.rs/crate/arrow-ipc/34.0.0) * [**33.0.0** (2023-02-13)](https://docs.rs/crate/arrow-ipc/33.0.0) * [**32.0.0** (2023-01-30)](https://docs.rs/crate/arrow-ipc/32.0.0) * [**31.0.0** (2023-01-16)](https://docs.rs/crate/arrow-ipc/31.0.0) * [**30.0.1** (2023-01-08)](https://docs.rs/crate/arrow-ipc/30.0.1) * [**30.0.0** (2023-01-03)](https://docs.rs/crate/arrow-ipc/30.0.0) * [**29.0.0** (2022-12-12)](https://docs.rs/crate/arrow-ipc/29.0.0) * [**28.0.0** (2022-11-28)](https://docs.rs/crate/arrow-ipc/28.0.0) * [**27.0.0** (2022-11-14)](https://docs.rs/crate/arrow-ipc/27.0.0) * Owners * [![kou](https://avatars.githubusercontent.com/u/27350?v=4)](https://crates.io/users/kou) [![xhochy](https://avatars.githubusercontent.com/u/70274?v=4)](https://crates.io/users/xhochy) [![nevi-me](https://avatars.githubusercontent.com/u/1876878?v=4)](https://crates.io/users/nevi-me) [![alamb](https://avatars.githubusercontent.com/u/490673?v=4)](https://crates.io/users/alamb) [![tustvold](https://avatars.githubusercontent.com/u/1781103?v=4)](https://crates.io/users/tustvold) Support for the [Arrow IPC Format](https://arrow.apache.org/docs/format/Columnar.html#serialization-and-interprocess-communication-ipc) The Arrow IPC format defines how to read and write \[`RecordBatch`\]es to/from a file or stream of bytes. This format can be used to serialize and deserialize data to files and over the network. There are two variants of the IPC format: 1. [IPC Streaming Format](https://arrow.apache.org/docs/format/Columnar.html#ipc-streaming-format) : Supports streaming data sources, implemented by [StreamReader](reader::StreamReader) and [StreamWriter](writer::StreamWriter) 2. [IPC File Format](https://arrow.apache.org/docs/format/Columnar.html#ipc-file-format) : Supports random access, implemented by [FileReader](reader::FileReader) and [FileWriter](writer::FileWriter) . See the \[`reader`\] and \[`writer`\] modules for more information. --- # List of all items in this crate [Docs.rs](https://docs.rs/) * [serde-1.0.228](https://docs.rs/serde/1.0.228/serde/all.html# "A generic serialization/deserialization framework") * serde 1.0.228 * [Docs.rs crate page](https://docs.rs/crate/serde/1.0.228 "See serde in docs.rs") * [MIT](https://spdx.org/licenses/MIT) OR [Apache-2.0](https://spdx.org/licenses/Apache-2.0) * Links * [Homepage](https://serde.rs/) * [Repository](https://github.com/serde-rs/serde) * [crates.io](https://crates.io/crates/serde "See serde in crates.io") * [Source](https://docs.rs/crate/serde/1.0.228/source/ "Browse source of serde-1.0.228") * Owners * [dtolnay](https://crates.io/users/dtolnay) * [github:serde-rs:publish](https://crates.io/teams/github:serde-rs:publish) * Dependencies * * [serde\_core =1.0.228 _normal_](https://docs.rs/serde_core/=1.0.228/) * [serde\_derive ^1 _normal_ _optional_](https://docs.rs/serde_derive/^1/) * Versions * [**100%** of the crate is documented](https://docs.rs/crate/serde/1.0.228) * [Platform](https://docs.rs/serde/1.0.228/serde/all.html#) * [x86\_64-unknown-linux-gnu](https://docs.rs/crate/serde/1.0.228/target-redirect/serde/all.html) * [Feature flags](https://docs.rs/crate/serde/1.0.228/features "Browse available feature flags of serde-1.0.228") * [docs.rs](https://docs.rs/serde/1.0.228/serde/all.html#) * [About docs.rs](https://docs.rs/about) * [Badges](https://docs.rs/about/badges) * [Builds](https://docs.rs/about/builds) * [Metadata](https://docs.rs/about/metadata) * [Shorthand URLs](https://docs.rs/about/redirections) * [Download](https://docs.rs/about/download) * [Rustdoc JSON](https://docs.rs/about/rustdoc-json) * [Build queue](https://docs.rs/releases/queue) * [Privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#docs.rs) * [Rust](https://docs.rs/serde/1.0.228/serde/all.html#) * [Rust website](https://www.rust-lang.org/) * [The Book](https://doc.rust-lang.org/book/) * [Standard Library API Reference](https://doc.rust-lang.org/std/) * [Rust by Example](https://doc.rust-lang.org/rust-by-example/) * [The Cargo Guide](https://doc.rust-lang.org/cargo/guide/) * [Clippy Documentation](https://doc.rust-lang.org/nightly/clippy) [All](https://docs.rs/serde/1.0.228/serde/all.html#) ----------------------------------------------------- List of all items ================= ### Structs * [de::IgnoredAny](https://docs.rs/serde/1.0.228/serde/de/struct.IgnoredAny.html) * [de::value::BoolDeserializer](https://docs.rs/serde/1.0.228/serde/de/value/struct.BoolDeserializer.html) * [de::value::BorrowedBytesDeserializer](https://docs.rs/serde/1.0.228/serde/de/value/struct.BorrowedBytesDeserializer.html) * [de::value::BorrowedStrDeserializer](https://docs.rs/serde/1.0.228/serde/de/value/struct.BorrowedStrDeserializer.html) * [de::value::BytesDeserializer](https://docs.rs/serde/1.0.228/serde/de/value/struct.BytesDeserializer.html) * [de::value::CharDeserializer](https://docs.rs/serde/1.0.228/serde/de/value/struct.CharDeserializer.html) * [de::value::CowStrDeserializer](https://docs.rs/serde/1.0.228/serde/de/value/struct.CowStrDeserializer.html) * [de::value::EnumAccessDeserializer](https://docs.rs/serde/1.0.228/serde/de/value/struct.EnumAccessDeserializer.html) * [de::value::Error](https://docs.rs/serde/1.0.228/serde/de/value/struct.Error.html) * [de::value::F32Deserializer](https://docs.rs/serde/1.0.228/serde/de/value/struct.F32Deserializer.html) * [de::value::F64Deserializer](https://docs.rs/serde/1.0.228/serde/de/value/struct.F64Deserializer.html) * [de::value::I128Deserializer](https://docs.rs/serde/1.0.228/serde/de/value/struct.I128Deserializer.html) * [de::value::I16Deserializer](https://docs.rs/serde/1.0.228/serde/de/value/struct.I16Deserializer.html) * [de::value::I32Deserializer](https://docs.rs/serde/1.0.228/serde/de/value/struct.I32Deserializer.html) * [de::value::I64Deserializer](https://docs.rs/serde/1.0.228/serde/de/value/struct.I64Deserializer.html) * [de::value::I8Deserializer](https://docs.rs/serde/1.0.228/serde/de/value/struct.I8Deserializer.html) * [de::value::IsizeDeserializer](https://docs.rs/serde/1.0.228/serde/de/value/struct.IsizeDeserializer.html) * [de::value::MapAccessDeserializer](https://docs.rs/serde/1.0.228/serde/de/value/struct.MapAccessDeserializer.html) * [de::value::MapDeserializer](https://docs.rs/serde/1.0.228/serde/de/value/struct.MapDeserializer.html) * [de::value::NeverDeserializer](https://docs.rs/serde/1.0.228/serde/de/value/struct.NeverDeserializer.html) * [de::value::SeqAccessDeserializer](https://docs.rs/serde/1.0.228/serde/de/value/struct.SeqAccessDeserializer.html) * [de::value::SeqDeserializer](https://docs.rs/serde/1.0.228/serde/de/value/struct.SeqDeserializer.html) * [de::value::StrDeserializer](https://docs.rs/serde/1.0.228/serde/de/value/struct.StrDeserializer.html) * [de::value::StringDeserializer](https://docs.rs/serde/1.0.228/serde/de/value/struct.StringDeserializer.html) * [de::value::U128Deserializer](https://docs.rs/serde/1.0.228/serde/de/value/struct.U128Deserializer.html) * [de::value::U16Deserializer](https://docs.rs/serde/1.0.228/serde/de/value/struct.U16Deserializer.html) * [de::value::U32Deserializer](https://docs.rs/serde/1.0.228/serde/de/value/struct.U32Deserializer.html) * [de::value::U64Deserializer](https://docs.rs/serde/1.0.228/serde/de/value/struct.U64Deserializer.html) * [de::value::U8Deserializer](https://docs.rs/serde/1.0.228/serde/de/value/struct.U8Deserializer.html) * [de::value::UnitDeserializer](https://docs.rs/serde/1.0.228/serde/de/value/struct.UnitDeserializer.html) * [de::value::UsizeDeserializer](https://docs.rs/serde/1.0.228/serde/de/value/struct.UsizeDeserializer.html) * [ser::Impossible](https://docs.rs/serde/1.0.228/serde/ser/struct.Impossible.html) ### Enums * [de::Unexpected](https://docs.rs/serde/1.0.228/serde/de/enum.Unexpected.html) ### Traits * [Deserialize](https://docs.rs/serde/1.0.228/serde/trait.Deserialize.html) * [Deserializer](https://docs.rs/serde/1.0.228/serde/trait.Deserializer.html) * [Serialize](https://docs.rs/serde/1.0.228/serde/trait.Serialize.html) * [Serializer](https://docs.rs/serde/1.0.228/serde/trait.Serializer.html) * [de::Deserialize](https://docs.rs/serde/1.0.228/serde/de/trait.Deserialize.html) * [de::DeserializeOwned](https://docs.rs/serde/1.0.228/serde/de/trait.DeserializeOwned.html) * [de::DeserializeSeed](https://docs.rs/serde/1.0.228/serde/de/trait.DeserializeSeed.html) * [de::Deserializer](https://docs.rs/serde/1.0.228/serde/de/trait.Deserializer.html) * [de::EnumAccess](https://docs.rs/serde/1.0.228/serde/de/trait.EnumAccess.html) * [de::Error](https://docs.rs/serde/1.0.228/serde/de/trait.Error.html) * [de::Expected](https://docs.rs/serde/1.0.228/serde/de/trait.Expected.html) * [de::IntoDeserializer](https://docs.rs/serde/1.0.228/serde/de/trait.IntoDeserializer.html) * [de::MapAccess](https://docs.rs/serde/1.0.228/serde/de/trait.MapAccess.html) * [de::SeqAccess](https://docs.rs/serde/1.0.228/serde/de/trait.SeqAccess.html) * [de::VariantAccess](https://docs.rs/serde/1.0.228/serde/de/trait.VariantAccess.html) * [de::Visitor](https://docs.rs/serde/1.0.228/serde/de/trait.Visitor.html) * [ser::Error](https://docs.rs/serde/1.0.228/serde/ser/trait.Error.html) * [ser::Serialize](https://docs.rs/serde/1.0.228/serde/ser/trait.Serialize.html) * [ser::SerializeMap](https://docs.rs/serde/1.0.228/serde/ser/trait.SerializeMap.html) * [ser::SerializeSeq](https://docs.rs/serde/1.0.228/serde/ser/trait.SerializeSeq.html) * [ser::SerializeStruct](https://docs.rs/serde/1.0.228/serde/ser/trait.SerializeStruct.html) * [ser::SerializeStructVariant](https://docs.rs/serde/1.0.228/serde/ser/trait.SerializeStructVariant.html) * [ser::SerializeTuple](https://docs.rs/serde/1.0.228/serde/ser/trait.SerializeTuple.html) * [ser::SerializeTupleStruct](https://docs.rs/serde/1.0.228/serde/ser/trait.SerializeTupleStruct.html) * [ser::SerializeTupleVariant](https://docs.rs/serde/1.0.228/serde/ser/trait.SerializeTupleVariant.html) * [ser::Serializer](https://docs.rs/serde/1.0.228/serde/ser/trait.Serializer.html) ### Macros * [forward\_to\_deserialize\_any](https://docs.rs/serde/1.0.228/serde/macro.forward_to_deserialize_any.html) ### Derive Macros * [Deserialize](https://docs.rs/serde/1.0.228/serde/derive.Deserialize.html) * [Serialize](https://docs.rs/serde/1.0.228/serde/derive.Serialize.html) --- # arrow-data 58.1.0 - Docs.rs [Docs.rs](https://docs.rs/) * [arrow-data-58.1.0](https://docs.rs/crate/arrow-data/58.1.0 "Array data abstractions for Apache Arrow") * [Platform](https://docs.rs/crate/arrow-data/58.1.0#) * [aarch64-apple-darwin](https://docs.rs/arrow-data/58.1.0/aarch64-apple-darwin/arrow_data/) * [aarch64-unknown-linux-gnu](https://docs.rs/arrow-data/58.1.0/aarch64-unknown-linux-gnu/arrow_data/) * [i686-pc-windows-msvc](https://docs.rs/arrow-data/58.1.0/i686-pc-windows-msvc/arrow_data/) * [x86\_64-pc-windows-msvc](https://docs.rs/arrow-data/58.1.0/x86_64-pc-windows-msvc/arrow_data/) * [x86\_64-unknown-linux-gnu](https://docs.rs/arrow-data/58.1.0/arrow_data/) * [Feature flags](https://docs.rs/crate/arrow-data/58.1.0/features "Browse available feature flags of arrow-data-58.1.0") * [docs.rs](https://docs.rs/crate/arrow-data/58.1.0#) * [About docs.rs](https://docs.rs/about) * [Badges](https://docs.rs/about/badges) * [Builds](https://docs.rs/about/builds) * [Metadata](https://docs.rs/about/metadata) * [Shorthand URLs](https://docs.rs/about/redirections) * [Download](https://docs.rs/about/download) * [Rustdoc JSON](https://docs.rs/about/rustdoc-json) * [Build queue](https://docs.rs/releases/queue) * [Privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#docs.rs) * [Rust](https://docs.rs/crate/arrow-data/58.1.0#) * [Rust website](https://www.rust-lang.org/) * [The Book](https://doc.rust-lang.org/book/) * [Standard Library API Reference](https://doc.rust-lang.org/std/) * [Rust by Example](https://doc.rust-lang.org/rust-by-example/) * [The Cargo Guide](https://doc.rust-lang.org/cargo/guide/) * [Clippy Documentation](https://doc.rust-lang.org/nightly/clippy) arrow-data 58.1.0 ================= Array data abstractions for Apache Arrow * [Crate](https://docs.rs/crate/arrow-data/58.1.0) * [Source](https://docs.rs/crate/arrow-data/58.1.0/source/) * [Builds](https://docs.rs/crate/arrow-data/58.1.0/builds) * [Feature flags](https://docs.rs/crate/arrow-data/58.1.0/features) [Documentation](https://docs.rs/arrow-data/58.1.0/arrow_data/) * Coverage * **100%** **78** out of **78** items documented**11** out of **45** items with examples * Size * Source code size: 331.08 kB This is the summed size of all the files inside the crates.io package for this release. * Documentation size: 14.95 MB This is the summed size of all files generated by rustdoc for all configured targets * Ø build duration * this release: 40s Average build duration of **successful** builds. * all releases: 25s Average build duration of **successful** builds in releases after 2024-10-23. * Links * [Homepage](https://github.com/apache/arrow-rs) * [apache/arrow-rs \ 3416 1135 543](https://github.com/apache/arrow-rs) * [crates.io](https://crates.io/crates/arrow-data "See arrow-data on crates.io") * Dependencies * * [arrow-buffer ^58.1.0 _normal_](https://docs.rs/crate/arrow-buffer/^58.1.0) * [arrow-schema ^58.1.0 _normal_](https://docs.rs/crate/arrow-schema/^58.1.0) * [half ^2.1 _normal_](https://docs.rs/crate/half/^2.1) * [num-integer ^0.1.46 _normal_](https://docs.rs/crate/num-integer/^0.1.46) * [num-traits ^0.2.19 _normal_](https://docs.rs/crate/num-traits/^0.2.19) * Versions * * [**58.1.0** (2026-03-24)](https://docs.rs/crate/arrow-data/58.1.0) * [**58.0.0** (2026-02-23)](https://docs.rs/crate/arrow-data/58.0.0) * [**57.3.0** (2026-02-06)](https://docs.rs/crate/arrow-data/57.3.0) * [**57.2.0** (2026-01-11)](https://docs.rs/crate/arrow-data/57.2.0) * [**57.1.0** (2025-11-24)](https://docs.rs/crate/arrow-data/57.1.0) * [**57.0.0** (2025-10-23)](https://docs.rs/crate/arrow-data/57.0.0) * [**56.2.0** (2025-09-23)](https://docs.rs/crate/arrow-data/56.2.0) * [**56.1.0** (2025-08-25)](https://docs.rs/crate/arrow-data/56.1.0) * [**56.0.0** (2025-08-01)](https://docs.rs/crate/arrow-data/56.0.0) * [**55.2.0** (2025-06-26)](https://docs.rs/crate/arrow-data/55.2.0) * [**55.1.0** (2025-05-13)](https://docs.rs/crate/arrow-data/55.1.0) * [**55.0.0** (2025-04-11)](https://docs.rs/crate/arrow-data/55.0.0) * [**54.3.1** (2025-03-30)](https://docs.rs/crate/arrow-data/54.3.1) * [**54.3.0** (2025-03-21)](https://docs.rs/crate/arrow-data/54.3.0) * [**54.2.1** (2025-02-27)](https://docs.rs/crate/arrow-data/54.2.1) * [**54.2.0** (2025-02-16)](https://docs.rs/crate/arrow-data/54.2.0) * [**54.1.0** (2025-02-02)](https://docs.rs/crate/arrow-data/54.1.0) * [**54.0.0** (2024-12-23)](https://docs.rs/crate/arrow-data/54.0.0) * [**53.4.1** (2025-03-07)](https://docs.rs/crate/arrow-data/53.4.1) * [**53.4.0** (2025-01-18)](https://docs.rs/crate/arrow-data/53.4.0) * [**53.3.0** (2024-11-20)](https://docs.rs/crate/arrow-data/53.3.0) * [**53.2.0** (2024-10-24)](https://docs.rs/crate/arrow-data/53.2.0) * [**53.1.0** (2024-10-06)](https://docs.rs/crate/arrow-data/53.1.0) * [**53.0.0** (2024-09-03)](https://docs.rs/crate/arrow-data/53.0.0) * [**52.2.0** (2024-07-28)](https://docs.rs/crate/arrow-data/52.2.0) * [**52.1.0** (2024-07-06)](https://docs.rs/crate/arrow-data/52.1.0) * [**52.0.0** (2024-06-06)](https://docs.rs/crate/arrow-data/52.0.0) * [**51.0.0** (2024-03-18)](https://docs.rs/crate/arrow-data/51.0.0) * [**50.0.0** (2024-01-12)](https://docs.rs/crate/arrow-data/50.0.0) * [**49.0.0** (2023-11-13)](https://docs.rs/crate/arrow-data/49.0.0) * [**48.0.1** (2023-11-13)](https://docs.rs/crate/arrow-data/48.0.1) * [**48.0.0** (2023-10-23)](https://docs.rs/crate/arrow-data/48.0.0) * [**47.0.0** (2023-09-22)](https://docs.rs/crate/arrow-data/47.0.0) * [**46.0.0** (2023-08-24)](https://docs.rs/crate/arrow-data/46.0.0) * [**45.0.0** (2023-08-02)](https://docs.rs/crate/arrow-data/45.0.0) * [**44.0.0** (2023-07-18)](https://docs.rs/crate/arrow-data/44.0.0) * [**43.0.0** (2023-07-03)](https://docs.rs/crate/arrow-data/43.0.0) * [**42.0.0** (2023-06-20)](https://docs.rs/crate/arrow-data/42.0.0) * [**41.0.0** (2023-06-06)](https://docs.rs/crate/arrow-data/41.0.0) * [**40.0.0** (2023-05-22)](https://docs.rs/crate/arrow-data/40.0.0) * [**39.0.0** (2023-05-09)](https://docs.rs/crate/arrow-data/39.0.0) * [**38.0.0** (2023-04-25)](https://docs.rs/crate/arrow-data/38.0.0) * [**37.0.0** (2023-04-10)](https://docs.rs/crate/arrow-data/37.0.0) * [**36.0.0** (2023-03-28)](https://docs.rs/crate/arrow-data/36.0.0) * [**35.0.0** (2023-03-13)](https://docs.rs/crate/arrow-data/35.0.0) * [**34.0.0** (2023-02-27)](https://docs.rs/crate/arrow-data/34.0.0) * [**33.0.0** (2023-02-13)](https://docs.rs/crate/arrow-data/33.0.0) * [**32.0.0** (2023-01-30)](https://docs.rs/crate/arrow-data/32.0.0) * [**31.0.0** (2023-01-16)](https://docs.rs/crate/arrow-data/31.0.0) * [**30.0.1** (2023-01-08)](https://docs.rs/crate/arrow-data/30.0.1) * [**30.0.0** (2023-01-03)](https://docs.rs/crate/arrow-data/30.0.0) * [**29.0.0** (2022-12-12)](https://docs.rs/crate/arrow-data/29.0.0) * [**28.0.0** (2022-11-28)](https://docs.rs/crate/arrow-data/28.0.0) * [**27.0.0** (2022-11-14)](https://docs.rs/crate/arrow-data/27.0.0) * [**26.0.0** (2022-11-03)](https://docs.rs/crate/arrow-data/26.0.0) * [**25.0.0** (2022-10-17)](https://docs.rs/crate/arrow-data/25.0.0) * [**24.0.0** (2022-10-03)](https://docs.rs/crate/arrow-data/24.0.0) * Owners * [![andygrove](https://avatars.githubusercontent.com/u/934084?v=4)](https://crates.io/users/andygrove) [![kou](https://avatars.githubusercontent.com/u/27350?v=4)](https://crates.io/users/kou) [![xhochy](https://avatars.githubusercontent.com/u/70274?v=4)](https://crates.io/users/xhochy) [![nevi-me](https://avatars.githubusercontent.com/u/1876878?v=4)](https://crates.io/users/nevi-me) [![alamb](https://avatars.githubusercontent.com/u/490673?v=4)](https://crates.io/users/alamb) [![tustvold](https://avatars.githubusercontent.com/u/1781103?v=4)](https://crates.io/users/tustvold) Low-level array data abstractions for [Apache Arrow Rust](https://docs.rs/arrow) For a higher-level, strongly-typed interface see [arrow\_array](https://docs.rs/arrow_array) --- # toml - Rust [Docs.rs](https://docs.rs/) * [toml-1.1.0+spec-1.1.0](https://docs.rs/toml/latest/toml/# "A native Rust encoder and decoder of TOML-formatted files and streams. Provides implementations of the standard Serialize/Deserialize traits for TOML data to facilitate deserializing and serializing Rust structures. ") * toml 1.1.0+spec-1.1.0 * [Permalink](https://docs.rs/toml/1.1.0+spec-1.1.0/toml/ "Get a link to this specific version") * [Docs.rs crate page](https://docs.rs/crate/toml/latest "See toml in docs.rs") * [MIT](https://spdx.org/licenses/MIT) OR [Apache-2.0](https://spdx.org/licenses/Apache-2.0) * Links * [Repository](https://github.com/toml-rs/toml) * [crates.io](https://crates.io/crates/toml "See toml in crates.io") * [Source](https://docs.rs/crate/toml/latest/source/ "Browse source of toml-1.1.0+spec-1.1.0") * Owners * [epage](https://crates.io/users/epage) * [ehuss](https://crates.io/users/ehuss) * [github:toml-rs:maintainers](https://crates.io/teams/github:toml-rs:maintainers) * Dependencies * * [anstream ^0.6.20 _normal_ _optional_](https://docs.rs/anstream/^0.6.20/) * [anstyle ^1.0.11 _normal_ _optional_](https://docs.rs/anstyle/^1.0.11/) * [foldhash ^0.2.0 _normal_ _optional_](https://docs.rs/foldhash/^0.2.0/) * [indexmap ^2.11.4 _normal_ _optional_](https://docs.rs/indexmap/^2.11.4/) * [serde\_core ^1.0.225 _normal_ _optional_](https://docs.rs/serde_core/^1.0.225/) * [serde\_spanned ^1.1.0 _normal_](https://docs.rs/serde_spanned/^1.1.0/) * [toml\_datetime ^1.1.0 _normal_](https://docs.rs/toml_datetime/^1.1.0/) * [toml\_parser ^1.1.0 _normal_ _optional_](https://docs.rs/toml_parser/^1.1.0/) * [toml\_writer ^1.1.0 _normal_ _optional_](https://docs.rs/toml_writer/^1.1.0/) * [winnow ^1.0.0 _normal_ _optional_](https://docs.rs/winnow/^1.0.0/) * [itertools ^0.14.0 _dev_](https://docs.rs/itertools/^0.14.0/) * [serde ^1.0.225 _dev_](https://docs.rs/serde/^1.0.225/) * [serde-untagged ^0.1.9 _dev_](https://docs.rs/serde-untagged/^0.1.9/) * [serde\_json ^1.0.145 _dev_](https://docs.rs/serde_json/^1.0.145/) * [snapbox ^1.0.0 _dev_](https://docs.rs/snapbox/^1.0.0/) * [toml-test-data ^2.3.3 _dev_](https://docs.rs/toml-test-data/^2.3.3/) * [toml-test-harness ^1.3.3 _dev_](https://docs.rs/toml-test-harness/^1.3.3/) * [walkdir ^2.5.0 _dev_](https://docs.rs/walkdir/^2.5.0/) * Versions * [**100%** of the crate is documented](https://docs.rs/crate/toml/latest) * [Platform](https://docs.rs/toml/latest/toml/#) * [aarch64-apple-darwin](https://docs.rs/crate/toml/latest/target-redirect/aarch64-apple-darwin/toml/) * [aarch64-unknown-linux-gnu](https://docs.rs/crate/toml/latest/target-redirect/aarch64-unknown-linux-gnu/toml/) * [i686-pc-windows-msvc](https://docs.rs/crate/toml/latest/target-redirect/i686-pc-windows-msvc/toml/) * [x86\_64-pc-windows-msvc](https://docs.rs/crate/toml/latest/target-redirect/x86_64-pc-windows-msvc/toml/) * [x86\_64-unknown-linux-gnu](https://docs.rs/crate/toml/latest/target-redirect/toml/) * [Feature flags](https://docs.rs/crate/toml/latest/features "Browse available feature flags of toml-1.1.0+spec-1.1.0") * [docs.rs](https://docs.rs/toml/latest/toml/#) * [About docs.rs](https://docs.rs/about) * [Badges](https://docs.rs/about/badges) * [Builds](https://docs.rs/about/builds) * [Metadata](https://docs.rs/about/metadata) * [Shorthand URLs](https://docs.rs/about/redirections) * [Download](https://docs.rs/about/download) * [Rustdoc JSON](https://docs.rs/about/rustdoc-json) * [Build queue](https://docs.rs/releases/queue) * [Privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#docs.rs) * [Rust](https://docs.rs/toml/latest/toml/#) * [Rust website](https://www.rust-lang.org/) * [The Book](https://doc.rust-lang.org/book/) * [Standard Library API Reference](https://doc.rust-lang.org/std/) * [Rust by Example](https://doc.rust-lang.org/rust-by-example/) * [The Cargo Guide](https://doc.rust-lang.org/cargo/guide/) * [Clippy Documentation](https://doc.rust-lang.org/nightly/clippy) [Skip to main content](https://docs.rs/toml/latest/toml/#main-content) [Crate toml](https://docs.rs/toml/latest/toml/#) ------------------------------------------------- Crate toml Copy item path ========================= [Source](https://docs.rs/toml/latest/src/toml/lib.rs.html#1-204) Expand description A [serde](https://serde.rs/) \-compatible [TOML](https://github.com/toml-lang/toml) \-parsing library TOML itself is a simple, ergonomic, and readable configuration format: [package] name = "toml" [dependencies] serde = "1.0" The TOML format tends to be relatively common throughout the Rust community for configuration, notably being used by [Cargo](https://crates.io/) , Rust’s package manager. ### [§](https://docs.rs/toml/latest/toml/#toml-values) TOML values A TOML document is represented with the [`Table`](https://docs.rs/toml/latest/toml/type.Table.html "type toml::Table") type which maps `String` to the [`Value`](https://docs.rs/toml/latest/toml/enum.Value.html "enum toml::Value") enum: pub enum Value { String(String), Integer(i64), Float(f64), Boolean(bool), Datetime(Datetime), Array(Array), Table(Table), } ### [§](https://docs.rs/toml/latest/toml/#parsing-toml) Parsing TOML The easiest way to parse a TOML document is via the [`Table`](https://docs.rs/toml/latest/toml/type.Table.html "type toml::Table") type: use toml::Table; let value = "foo = 'bar'".parse::().unwrap(); assert_eq!(value["foo"].as_str(), Some("bar")); The [`Table`](https://docs.rs/toml/latest/toml/type.Table.html "type toml::Table") type implements a number of convenience methods and traits; the example above uses [`FromStr`](https://doc.rust-lang.org/nightly/core/str/traits/trait.FromStr.html "trait core::str::traits::FromStr") to parse a [`str`](https://doc.rust-lang.org/nightly/std/primitive.str.html "primitive str") into a [`Table`](https://docs.rs/toml/latest/toml/type.Table.html "type toml::Table") . ### [§](https://docs.rs/toml/latest/toml/#deserialization-and-serialization) Deserialization and Serialization This crate supports [`serde`](https://serde.rs/) 1.0 with a number of implementations of the `Deserialize`, `Serialize`, `Deserializer`, and `Serializer` traits. Namely, you’ll find: * `Deserialize for Table` * `Serialize for Table` * `Deserialize for Value` * `Serialize for Value` * `Deserialize for Datetime` * `Serialize for Datetime` * `Deserializer for de::Deserializer` * `Serializer for ser::Serializer` * `Deserializer for Table` * `Deserializer for Value` This means that you can use Serde to deserialize/serialize the [`Table`](https://docs.rs/toml/latest/toml/type.Table.html "type toml::Table") type as well as [`Value`](https://docs.rs/toml/latest/toml/enum.Value.html "enum toml::Value") and [`Datetime`](https://docs.rs/toml/latest/toml/value/struct.Datetime.html "struct toml::value::Datetime") type in this crate. You can also use the [`Deserializer`](https://docs.rs/toml/latest/toml/struct.Deserializer.html "struct toml::Deserializer") , [`Serializer`](https://docs.rs/toml/latest/toml/struct.Serializer.html "struct toml::Serializer") , or [`Table`](https://docs.rs/toml/latest/toml/type.Table.html "type toml::Table") type itself to act as a deserializer/serializer for arbitrary types. An example of deserializing with TOML is: use serde::Deserialize; #[derive(Deserialize)] struct Config { ip: String, port: Option, keys: Keys, } #[derive(Deserialize)] struct Keys { github: String, travis: Option, } let config: Config = toml::from_str(r#" ip = '127.0.0.1' [keys] github = 'xxxxxxxxxxxxxxxxx' travis = 'yyyyyyyyyyyyyyyyy' "#).unwrap(); assert_eq!(config.ip, "127.0.0.1"); assert_eq!(config.port, None); assert_eq!(config.keys.github, "xxxxxxxxxxxxxxxxx"); assert_eq!(config.keys.travis.as_ref().unwrap(), "yyyyyyyyyyyyyyyyy"); You can serialize types in a similar fashion: use serde::Serialize; #[derive(Serialize)] struct Config { ip: String, port: Option, keys: Keys, } #[derive(Serialize)] struct Keys { github: String, travis: Option, } let config = Config { ip: "127.0.0.1".to_string(), port: None, keys: Keys { github: "xxxxxxxxxxxxxxxxx".to_string(), travis: Some("yyyyyyyyyyyyyyyyy".to_string()), }, }; let toml = toml::to_string(&config).unwrap(); Modules[§](https://docs.rs/toml/latest/toml/#modules) ------------------------------------------------------ [de](https://docs.rs/toml/latest/toml/de/index.html "mod toml::de") Deserializing TOML into Rust structures. [map](https://docs.rs/toml/latest/toml/map/index.html "mod toml::map") A map of `String` to [Value](https://docs.rs/toml/latest/toml/enum.Value.html "enum toml::Value") . [ser](https://docs.rs/toml/latest/toml/ser/index.html "mod toml::ser") `serde` Serializing Rust structures into TOML. [value](https://docs.rs/toml/latest/toml/value/index.html "mod toml::value") `serde` Definition of a TOML [value](https://docs.rs/toml/latest/toml/enum.Value.html "enum toml::Value") Macros[§](https://docs.rs/toml/latest/toml/#macros) ---------------------------------------------------- [toml](https://docs.rs/toml/latest/toml/macro.toml.html "macro toml::toml") Construct a [`Table`](https://docs.rs/toml/latest/toml/type.Table.html "type toml::Table") from TOML syntax. Structs[§](https://docs.rs/toml/latest/toml/#structs) ------------------------------------------------------ [Deserializer](https://docs.rs/toml/latest/toml/struct.Deserializer.html "struct toml::Deserializer") `parse` and `serde` Deserialization for TOML [documents](https://docs.rs/toml/latest/toml/type.Table.html "type toml::Table") . [Serializer](https://docs.rs/toml/latest/toml/struct.Serializer.html "struct toml::Serializer") `display` and `serde` Serialization for TOML documents. [Spanned](https://docs.rs/toml/latest/toml/struct.Spanned.html "struct toml::Spanned") A spanned value, indicating the range at which it is defined in the source. Enums[§](https://docs.rs/toml/latest/toml/#enums) -------------------------------------------------- [Value](https://docs.rs/toml/latest/toml/enum.Value.html "enum toml::Value") `serde` Representation of a TOML value. Functions[§](https://docs.rs/toml/latest/toml/#functions) ---------------------------------------------------------- [from\_slice](https://docs.rs/toml/latest/toml/fn.from_slice.html "fn toml::from_slice") `parse` and `serde` Deserializes bytes into a type. [from\_str](https://docs.rs/toml/latest/toml/fn.from_str.html "fn toml::from_str") `parse` and `serde` Deserializes a string into a type. [to\_string](https://docs.rs/toml/latest/toml/fn.to_string.html "fn toml::to_string") `display` and `serde` Serialize the given data structure as a String of TOML. [to\_string\_pretty](https://docs.rs/toml/latest/toml/fn.to_string_pretty.html "fn toml::to_string_pretty") `display` and `serde` Serialize the given data structure as a “pretty” String of TOML. Type Aliases[§](https://docs.rs/toml/latest/toml/#types) --------------------------------------------------------- [Table](https://docs.rs/toml/latest/toml/type.Table.html "type toml::Table") `serde` Type representing a TOML table, payload of the `Value::Table` variant. --- # arrow_data::ffi - Rust [Docs.rs](https://docs.rs/) * [arrow-data-58.1.0](https://docs.rs/arrow-data/58.1.0/arrow_data/ffi/index.html# "Array data abstractions for Apache Arrow") * arrow-data 58.1.0 * [Docs.rs crate page](https://docs.rs/crate/arrow-data/58.1.0 "See arrow-data in docs.rs") * [Apache-2.0](https://spdx.org/licenses/Apache-2.0) * Links * [Homepage](https://github.com/apache/arrow-rs) * [Repository](https://github.com/apache/arrow-rs) * [crates.io](https://crates.io/crates/arrow-data "See arrow-data in crates.io") * [Source](https://docs.rs/crate/arrow-data/58.1.0/source/ "Browse source of arrow-data-58.1.0") * Owners * [andygrove](https://crates.io/users/andygrove) * [kou](https://crates.io/users/kou) * [xhochy](https://crates.io/users/xhochy) * [nevi-me](https://crates.io/users/nevi-me) * [alamb](https://crates.io/users/alamb) * [tustvold](https://crates.io/users/tustvold) * Dependencies * * [arrow-buffer ^58.1.0 _normal_](https://docs.rs/arrow-buffer/^58.1.0/) * [arrow-schema ^58.1.0 _normal_](https://docs.rs/arrow-schema/^58.1.0/) * [half ^2.1 _normal_](https://docs.rs/half/^2.1/) * [num-integer ^0.1.46 _normal_](https://docs.rs/num-integer/^0.1.46/) * [num-traits ^0.2.19 _normal_](https://docs.rs/num-traits/^0.2.19/) * Versions * [**100%** of the crate is documented](https://docs.rs/crate/arrow-data/58.1.0) * [Platform](https://docs.rs/arrow-data/58.1.0/arrow_data/ffi/index.html#) * [aarch64-apple-darwin](https://docs.rs/crate/arrow-data/58.1.0/target-redirect/aarch64-apple-darwin/arrow_data/ffi/) * [aarch64-unknown-linux-gnu](https://docs.rs/crate/arrow-data/58.1.0/target-redirect/aarch64-unknown-linux-gnu/arrow_data/ffi/) * [i686-pc-windows-msvc](https://docs.rs/crate/arrow-data/58.1.0/target-redirect/i686-pc-windows-msvc/arrow_data/ffi/) * [x86\_64-pc-windows-msvc](https://docs.rs/crate/arrow-data/58.1.0/target-redirect/x86_64-pc-windows-msvc/arrow_data/ffi/) * [x86\_64-unknown-linux-gnu](https://docs.rs/crate/arrow-data/58.1.0/target-redirect/arrow_data/ffi/) * [Feature flags](https://docs.rs/crate/arrow-data/58.1.0/features "Browse available feature flags of arrow-data-58.1.0") * [docs.rs](https://docs.rs/arrow-data/58.1.0/arrow_data/ffi/index.html#) * [About docs.rs](https://docs.rs/about) * [Badges](https://docs.rs/about/badges) * [Builds](https://docs.rs/about/builds) * [Metadata](https://docs.rs/about/metadata) * [Shorthand URLs](https://docs.rs/about/redirections) * [Download](https://docs.rs/about/download) * [Rustdoc JSON](https://docs.rs/about/rustdoc-json) * [Build queue](https://docs.rs/releases/queue) * [Privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#docs.rs) * [Rust](https://docs.rs/arrow-data/58.1.0/arrow_data/ffi/index.html#) * [Rust website](https://www.rust-lang.org/) * [The Book](https://doc.rust-lang.org/book/) * [Standard Library API Reference](https://doc.rust-lang.org/std/) * [Rust by Example](https://doc.rust-lang.org/rust-by-example/) * [The Cargo Guide](https://doc.rust-lang.org/cargo/guide/) * [Clippy Documentation](https://doc.rust-lang.org/nightly/clippy) [Skip to main content](https://docs.rs/arrow-data/58.1.0/arrow_data/ffi/index.html#main-content) [Module ffi](https://docs.rs/arrow-data/58.1.0/arrow_data/ffi/index.html#) --------------------------------------------------------------------------- [arrow\_data](https://docs.rs/arrow-data/58.1.0/arrow_data/index.html) Module ffi Copy item path ========================= [Source](https://docs.rs/arrow-data/58.1.0/src/arrow_data/ffi.rs.html#18-356) Available on **crate feature `ffi`** only. Expand description Contains declarations to bind to the [C Data Interface](https://arrow.apache.org/docs/format/CDataInterface.html) . Structs[§](https://docs.rs/arrow-data/58.1.0/arrow_data/ffi/index.html#structs) -------------------------------------------------------------------------------- [FFI\_ArrowArray](https://docs.rs/arrow-data/58.1.0/arrow_data/ffi/struct.FFI_ArrowArray.html "struct arrow_data::ffi::FFI_ArrowArray") ABI-compatible struct for ArrowArray from C Data Interface See [https://arrow.apache.org/docs/format/CDataInterface.html#structure-definitions](https://arrow.apache.org/docs/format/CDataInterface.html#structure-definitions) --- # StreamReader in arrow_ipc::reader - Rust [Docs.rs](https://docs.rs/) * [arrow-ipc-58.1.0](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html# "Support for the Arrow IPC format") * arrow-ipc 58.1.0 * [Docs.rs crate page](https://docs.rs/crate/arrow-ipc/58.1.0 "See arrow-ipc in docs.rs") * [Apache-2.0](https://spdx.org/licenses/Apache-2.0) * Links * [Homepage](https://github.com/apache/arrow-rs) * [Repository](https://github.com/apache/arrow-rs) * [crates.io](https://crates.io/crates/arrow-ipc "See arrow-ipc in crates.io") * [Source](https://docs.rs/crate/arrow-ipc/58.1.0/source/ "Browse source of arrow-ipc-58.1.0") * Owners * [kou](https://crates.io/users/kou) * [xhochy](https://crates.io/users/xhochy) * [nevi-me](https://crates.io/users/nevi-me) * [alamb](https://crates.io/users/alamb) * [tustvold](https://crates.io/users/tustvold) * Dependencies * * [arrow-array ^58.1.0 _normal_](https://docs.rs/arrow-array/^58.1.0/) * [arrow-buffer ^58.1.0 _normal_](https://docs.rs/arrow-buffer/^58.1.0/) * [arrow-data ^58.1.0 _normal_](https://docs.rs/arrow-data/^58.1.0/) * [arrow-schema ^58.1.0 _normal_](https://docs.rs/arrow-schema/^58.1.0/) * [arrow-select ^58.1.0 _normal_](https://docs.rs/arrow-select/^58.1.0/) * [flatbuffers ^25.2.10 _normal_](https://docs.rs/flatbuffers/^25.2.10/) * [lz4\_flex ^0.13 _normal_ _optional_](https://docs.rs/lz4_flex/^0.13/) * [zstd ^0.13.0 _normal_ _optional_](https://docs.rs/zstd/^0.13.0/) * [bytes ^1.9 _dev_](https://docs.rs/bytes/^1.9/) * [criterion ^0.8.0 _dev_](https://docs.rs/criterion/^0.8.0/) * [memmap2 ^0.9.3 _dev_](https://docs.rs/memmap2/^0.9.3/) * [tempfile ^3.3 _dev_](https://docs.rs/tempfile/^3.3/) * [tokio ^1.43.0 _dev_](https://docs.rs/tokio/^1.43.0/) * Versions * [**100%** of the crate is documented](https://docs.rs/crate/arrow-ipc/58.1.0) * [Platform](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#) * [x86\_64-unknown-linux-gnu](https://docs.rs/crate/arrow-ipc/58.1.0/target-redirect/arrow_ipc/reader/struct.StreamReader.html) * [Feature flags](https://docs.rs/crate/arrow-ipc/58.1.0/features "Browse available feature flags of arrow-ipc-58.1.0") * [docs.rs](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#) * [About docs.rs](https://docs.rs/about) * [Badges](https://docs.rs/about/badges) * [Builds](https://docs.rs/about/builds) * [Metadata](https://docs.rs/about/metadata) * [Shorthand URLs](https://docs.rs/about/redirections) * [Download](https://docs.rs/about/download) * [Rustdoc JSON](https://docs.rs/about/rustdoc-json) * [Build queue](https://docs.rs/releases/queue) * [Privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#docs.rs) * [Rust](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#) * [Rust website](https://www.rust-lang.org/) * [The Book](https://doc.rust-lang.org/book/) * [Standard Library API Reference](https://doc.rust-lang.org/std/) * [Rust by Example](https://doc.rust-lang.org/rust-by-example/) * [The Cargo Guide](https://doc.rust-lang.org/cargo/guide/) * [Clippy Documentation](https://doc.rust-lang.org/nightly/clippy) [Skip to main content](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#main-content) [StreamReader](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#) -------------------------------------------------------------------------------------------- [arrow\_ipc](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/index.html) ::[reader](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/index.html) Struct StreamReader Copy item path ================================== [Source](https://docs.rs/arrow-ipc/58.1.0/src/arrow_ipc/reader.rs.html#1468-1492) pub struct StreamReader { /* private fields */ } Expand description Arrow Stream Reader Reads Arrow [`RecordBatch`](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/arrow_array/record_batch/struct.RecordBatch.html "struct arrow_array::record_batch::RecordBatch") es from bytes in the [IPC Streaming Format](https://arrow.apache.org/docs/format/Columnar.html#ipc-streaming-format) . [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#see-also) See Also ------------------------------------------------------------------------------------------------- * [`FileReader`](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html "struct arrow_ipc::reader::FileReader") for random access. [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#example) Example ----------------------------------------------------------------------------------------------- let projection = None; // read all columns let mut reader = StreamReader::try_new(stream, projection).unwrap(); // read batches from the reader using the Iterator trait let mut num_rows = 0; for batch in reader { let batch = batch.unwrap(); num_rows += batch.num_rows(); } assert_eq!(num_rows, 3); Implementations[§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#implementations) --------------------------------------------------------------------------------------------------------------- [Source](https://docs.rs/arrow-ipc/58.1.0/src/arrow_ipc/reader.rs.html#1506-1513) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#impl-StreamReader%3CBufReader%3CR%3E%3E) ### impl [StreamReader](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html "struct arrow_ipc::reader::StreamReader") <[BufReader](https://doc.rust-lang.org/nightly/std/io/buffered/bufreader/struct.BufReader.html "struct std::io::buffered::bufreader::BufReader") > [Source](https://docs.rs/arrow-ipc/58.1.0/src/arrow_ipc/reader.rs.html#1510-1512) #### pub fn [try\_new\_buffered](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#method.try_new_buffered) ( reader: R, projection: [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <[Vec](https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html "struct alloc::vec::Vec") <[usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) \>>, ) -> [Result](https://doc.rust-lang.org/nightly/core/result/enum.Result.html "enum core::result::Result") Try to create a new stream reader with the reader wrapped in a BufReader. See [`StreamReader::try_new`](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#method.try_new "associated function arrow_ipc::reader::StreamReader::try_new") for an unbuffered version. [Source](https://docs.rs/arrow-ipc/58.1.0/src/arrow_ipc/reader.rs.html#1515-1727) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#impl-StreamReader%3CR%3E) ### impl [StreamReader](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html "struct arrow_ipc::reader::StreamReader") [Source](https://docs.rs/arrow-ipc/58.1.0/src/arrow_ipc/reader.rs.html#1527-1570) #### pub fn [try\_new](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#method.try_new) ( reader: R, projection: [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <[Vec](https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html "struct alloc::vec::Vec") <[usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) \>>, ) -> [Result](https://doc.rust-lang.org/nightly/core/result/enum.Result.html "enum core::result::Result") <[StreamReader](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html "struct arrow_ipc::reader::StreamReader") , [ArrowError](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/arrow_schema/error/enum.ArrowError.html "enum arrow_schema::error::ArrowError") \> Try to create a new stream reader. To check if the reader is done, use [`is_finished(self)`](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#method.is_finished "method arrow_ipc::reader::StreamReader::is_finished") . There is no internal buffering. If buffered reads are needed you likely want to use [`StreamReader::try_new_buffered`](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#method.try_new_buffered "associated function arrow_ipc::reader::StreamReader::try_new_buffered") instead. ##### [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#errors) Errors An [‘Err’](https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Err "variant core::result::Result::Err") may be returned if the reader does not encounter a schema as the first message in the stream. [Source](https://docs.rs/arrow-ipc/58.1.0/src/arrow_ipc/reader.rs.html#1574-1579) #### pub fn [try\_new\_unbuffered](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#method.try_new_unbuffered) ( reader: R, projection: [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <[Vec](https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html "struct alloc::vec::Vec") <[usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) \>>, ) -> [Result](https://doc.rust-lang.org/nightly/core/result/enum.Result.html "enum core::result::Result") 👎Deprecated since 53.0.0: use `try_new` instead Deprecated, use [`StreamReader::try_new`](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#method.try_new "associated function arrow_ipc::reader::StreamReader::try_new") instead. [Source](https://docs.rs/arrow-ipc/58.1.0/src/arrow_ipc/reader.rs.html#1582-1584) #### pub fn [schema](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#method.schema) (&self) -> [SchemaRef](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/arrow_schema/schema/type.SchemaRef.html "type arrow_schema::schema::SchemaRef") Return the schema of the stream [Source](https://docs.rs/arrow-ipc/58.1.0/src/arrow_ipc/reader.rs.html#1587-1589) #### pub fn [is\_finished](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#method.is_finished) (&self) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) Check if the stream is finished [Source](https://docs.rs/arrow-ipc/58.1.0/src/arrow_ipc/reader.rs.html#1707-1709) #### pub fn [get\_ref](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#method.get_ref) (&self) -> [&R](https://doc.rust-lang.org/nightly/std/primitive.reference.html) Gets a reference to the underlying reader. It is inadvisable to directly read from the underlying reader. [Source](https://docs.rs/arrow-ipc/58.1.0/src/arrow_ipc/reader.rs.html#1714-1716) #### pub fn [get\_mut](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#method.get_mut) (&mut self) -> [&mut R](https://doc.rust-lang.org/nightly/std/primitive.reference.html) Gets a mutable reference to the underlying reader. It is inadvisable to directly read from the underlying reader. [Source](https://docs.rs/arrow-ipc/58.1.0/src/arrow_ipc/reader.rs.html#1723-1726) #### pub unsafe fn [with\_skip\_validation](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#method.with_skip_validation) (self, skip\_validation: [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) ) -> Self Specifies if validation should be skipped when reading data (defaults to `false`) ##### [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#safety) Safety See [`FileDecoder::with_skip_validation`](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileDecoder.html#method.with_skip_validation "method arrow_ipc::reader::FileDecoder::with_skip_validation") Trait Implementations[§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#trait-implementations) --------------------------------------------------------------------------------------------------------------------------- [Source](https://docs.rs/arrow-ipc/58.1.0/src/arrow_ipc/reader.rs.html#1494-1504) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#impl-Debug-for-StreamReader%3CR%3E) ### impl [Debug](https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html "trait core::fmt::Debug") for [StreamReader](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html "struct arrow_ipc::reader::StreamReader") [Source](https://docs.rs/arrow-ipc/58.1.0/src/arrow_ipc/reader.rs.html#1495-1503) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#method.fmt) #### fn [fmt](https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt) (&self, f: &mut [Formatter](https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html "struct core::fmt::Formatter") <'\_>) -> [Result](https://doc.rust-lang.org/nightly/core/result/enum.Result.html "enum core::result::Result") <[()](https://doc.rust-lang.org/nightly/std/primitive.unit.html) , [Error](https://doc.rust-lang.org/nightly/core/fmt/struct.Error.html "struct core::fmt::Error") \> Formats the value using the given formatter. [Read more](https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt) [Source](https://docs.rs/arrow-ipc/58.1.0/src/arrow_ipc/reader.rs.html#1729-1735) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#impl-Iterator-for-StreamReader%3CR%3E) ### impl [Iterator](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html "trait core::iter::traits::iterator::Iterator") for [StreamReader](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html "struct arrow_ipc::reader::StreamReader") [Source](https://docs.rs/arrow-ipc/58.1.0/src/arrow_ipc/reader.rs.html#1730) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#associatedtype.Item) #### type [Item](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item) = [Result](https://doc.rust-lang.org/nightly/core/result/enum.Result.html "enum core::result::Result") <[RecordBatch](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/arrow_array/record_batch/struct.RecordBatch.html "struct arrow_array::record_batch::RecordBatch") , [ArrowError](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/arrow_schema/error/enum.ArrowError.html "enum arrow_schema::error::ArrowError") \> The type of the elements being iterated over. [Source](https://docs.rs/arrow-ipc/58.1.0/src/arrow_ipc/reader.rs.html#1732-1734) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#method.next) #### fn [next](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#tymethod.next) (&mut self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") Advances the iterator and returns the next value. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#tymethod.next) [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#112-116) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#method.next_chunk) #### fn [next\_chunk](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.next_chunk) ( &mut self, ) -> [Result](https://doc.rust-lang.org/nightly/core/result/enum.Result.html "enum core::result::Result") <\[Self::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item "type core::iter::traits::iterator::Iterator::Item")\ ; [N](https://doc.rust-lang.org/nightly/std/primitive.array.html)\ \], [IntoIter](https://doc.rust-lang.org/nightly/core/array/iter/struct.IntoIter.html "struct core::array::iter::IntoIter") > where Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , 🔬This is a nightly-only experimental API. (`iter_next_chunk`) Advances the iterator and returns an array containing the next `N` values. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.next_chunk) 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#189) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#method.size_hint) #### fn [size\_hint](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.size_hint) (&self) -> ([usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) , [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <[usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) \>) Returns the bounds on the remaining length of the iterator. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.size_hint) 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#225-227) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#method.count) #### fn [count](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.count) (self) -> [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) where Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , Consumes the iterator, counting the number of iterations and returning it. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.count) 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#258-260) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#method.last) #### fn [last](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.last) (self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") where Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , Consumes the iterator, returning the last element. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.last) [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#306) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#method.advance_by) #### fn [advance\_by](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.advance_by) (&mut self, n: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) ) -> [Result](https://doc.rust-lang.org/nightly/core/result/enum.Result.html "enum core::result::Result") <[()](https://doc.rust-lang.org/nightly/std/primitive.unit.html) , [NonZero](https://doc.rust-lang.org/nightly/core/num/nonzero/struct.NonZero.html "struct core::num::nonzero::NonZero") <[usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) \>> 🔬This is a nightly-only experimental API. (`iter_advance_by`) Advances the iterator by `n` elements. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.advance_by) 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#384) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#method.nth) #### fn [nth](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.nth) (&mut self, n: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) ) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") Returns the `n`th element of the iterator. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.nth) 1.28.0 · [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#435-437) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#method.step_by) #### fn [step\_by](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.step_by) (self, step: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) ) -> [StepBy](https://doc.rust-lang.org/nightly/core/iter/adapters/step_by/struct.StepBy.html "struct core::iter::adapters::step_by::StepBy") where Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , Creates an iterator starting at the same point, but stepping by the given amount at each iteration. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.step_by) 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#507-510) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#method.chain) #### fn [chain](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.chain) (self, other: U) -> [Chain](https://doc.rust-lang.org/nightly/core/iter/adapters/chain/struct.Chain.html "struct core::iter::adapters::chain::Chain") ::[IntoIter](https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.IntoIter "type core::iter::traits::collect::IntoIterator::IntoIter") \> where Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , U: [IntoIterator](https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html "trait core::iter::traits::collect::IntoIterator") , Takes two iterators and creates a new iterator over both in sequence. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.chain) 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#626-629) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#method.zip) #### fn [zip](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.zip) (self, other: U) -> [Zip](https://doc.rust-lang.org/nightly/core/iter/adapters/zip/struct.Zip.html "struct core::iter::adapters::zip::Zip") ::[IntoIter](https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.IntoIter "type core::iter::traits::collect::IntoIterator::IntoIter") \> where Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , U: [IntoIterator](https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html "trait core::iter::traits::collect::IntoIterator") , ‘Zips up’ two iterators into a single iterator of pairs. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.zip) [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#691-694) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#method.intersperse) #### fn [intersperse](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.intersperse) (self, separator: Self::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item "type core::iter::traits::iterator::Iterator::Item") ) -> [Intersperse](https://doc.rust-lang.org/nightly/core/iter/adapters/intersperse/struct.Intersperse.html "struct core::iter::adapters::intersperse::Intersperse") where Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , Self::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item "type core::iter::traits::iterator::Iterator::Item") : [Clone](https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html "trait core::clone::Clone") , 🔬This is a nightly-only experimental API. (`iter_intersperse`) Creates a new iterator which places a copy of `separator` between items of the original iterator. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.intersperse) [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#771-774) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#method.intersperse_with) #### fn [intersperse\_with](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.intersperse_with) (self, separator: G) -> [IntersperseWith](https://doc.rust-lang.org/nightly/core/iter/adapters/intersperse/struct.IntersperseWith.html "struct core::iter::adapters::intersperse::IntersperseWith") where Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , G: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut") () -> Self::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item "type core::iter::traits::iterator::Iterator::Item") , 🔬This is a nightly-only experimental API. (`iter_intersperse`) Creates a new iterator which places an item generated by `separator` between items of the original iterator. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.intersperse_with) 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#831-834) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#method.map) #### fn [map](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.map) (self, f: F) -> [Map](https://doc.rust-lang.org/nightly/core/iter/adapters/map/struct.Map.html "struct core::iter::adapters::map::Map") where Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , F: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut") (Self::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item "type core::iter::traits::iterator::Iterator::Item") ) -> B, Takes a closure and creates an iterator which calls that closure on each element. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.map) 1.21.0 · [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#877-880) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#method.for_each) #### fn [for\_each](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.for_each) (self, f: F) where Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , F: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut") (Self::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item "type core::iter::traits::iterator::Iterator::Item") ), Calls a closure on each element of an iterator. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.for_each) 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#953-956) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#method.filter) #### fn [filter](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.filter)

(self, predicate: P) -> [Filter](https://doc.rust-lang.org/nightly/core/iter/adapters/filter/struct.Filter.html "struct core::iter::adapters::filter::Filter") where Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , P: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut") (&Self::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item "type core::iter::traits::iterator::Iterator::Item") ) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) , Creates an iterator which uses a closure to determine if an element should be yielded. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.filter) 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#999-1002) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#method.filter_map) #### fn [filter\_map](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.filter_map) (self, f: F) -> [FilterMap](https://doc.rust-lang.org/nightly/core/iter/adapters/filter_map/struct.FilterMap.html "struct core::iter::adapters::filter_map::FilterMap") where Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , F: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut") (Self::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item "type core::iter::traits::iterator::Iterator::Item") ) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") , Creates an iterator that both filters and maps. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.filter_map) 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#1047-1049) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#method.enumerate) #### fn [enumerate](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.enumerate) (self) -> [Enumerate](https://doc.rust-lang.org/nightly/core/iter/adapters/enumerate/struct.Enumerate.html "struct core::iter::adapters::enumerate::Enumerate") where Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , Creates an iterator which gives the current iteration count as well as the next value. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.enumerate) 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#1119-1121) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#method.peekable) #### fn [peekable](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.peekable) (self) -> [Peekable](https://doc.rust-lang.org/nightly/core/iter/adapters/peekable/struct.Peekable.html "struct core::iter::adapters::peekable::Peekable") where Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , Creates an iterator which can use the [`peek`](https://doc.rust-lang.org/nightly/core/iter/adapters/peekable/struct.Peekable.html#method.peek "method core::iter::adapters::peekable::Peekable::peek") and [`peek_mut`](https://doc.rust-lang.org/nightly/core/iter/adapters/peekable/struct.Peekable.html#method.peek_mut "method core::iter::adapters::peekable::Peekable::peek_mut") methods to look at the next element of the iterator without consuming it. See their documentation for more information. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.peekable) 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#1185-1188) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#method.skip_while) #### fn [skip\_while](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.skip_while)

(self, predicate: P) -> [SkipWhile](https://doc.rust-lang.org/nightly/core/iter/adapters/skip_while/struct.SkipWhile.html "struct core::iter::adapters::skip_while::SkipWhile") where Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , P: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut") (&Self::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item "type core::iter::traits::iterator::Iterator::Item") ) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) , Creates an iterator that [`skip`](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.skip "method core::iter::traits::iterator::Iterator::skip") s elements based on a predicate. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.skip_while) 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#1264-1267) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#method.take_while) #### fn [take\_while](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.take_while)

(self, predicate: P) -> [TakeWhile](https://doc.rust-lang.org/nightly/core/iter/adapters/take_while/struct.TakeWhile.html "struct core::iter::adapters::take_while::TakeWhile") where Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , P: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut") (&Self::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item "type core::iter::traits::iterator::Iterator::Item") ) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) , Creates an iterator that yields elements based on a predicate. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.take_while) 1.57.0 · [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#1353-1356) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#method.map_while) #### fn [map\_while](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.map_while) (self, predicate: P) -> [MapWhile](https://doc.rust-lang.org/nightly/core/iter/adapters/map_while/struct.MapWhile.html "struct core::iter::adapters::map_while::MapWhile") where Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , P: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut") (Self::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item "type core::iter::traits::iterator::Iterator::Item") ) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") , Creates an iterator that both yields elements based on a predicate and maps. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.map_while) 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#1383-1385) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#method.skip) #### fn [skip](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.skip) (self, n: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) ) -> [Skip](https://doc.rust-lang.org/nightly/core/iter/adapters/skip/struct.Skip.html "struct core::iter::adapters::skip::Skip") where Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , Creates an iterator that skips the first `n` elements. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.skip) 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#1456-1458) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#method.take) #### fn [take](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.take) (self, n: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) ) -> [Take](https://doc.rust-lang.org/nightly/core/iter/adapters/take/struct.Take.html "struct core::iter::adapters::take::Take") where Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , Creates an iterator that yields the first `n` elements, or fewer if the underlying iterator ends sooner. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.take) 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#1504-1507) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#method.scan) #### fn [scan](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.scan) (self, initial\_state: St, f: F) -> [Scan](https://doc.rust-lang.org/nightly/core/iter/adapters/scan/struct.Scan.html "struct core::iter::adapters::scan::Scan") where Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , F: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut") ([&mut St](https://doc.rust-lang.org/nightly/std/primitive.reference.html) , Self::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item "type core::iter::traits::iterator::Iterator::Item") ) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") , An iterator adapter which, like [`fold`](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.fold "method core::iter::traits::iterator::Iterator::fold") , holds internal state, but unlike [`fold`](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.fold "method core::iter::traits::iterator::Iterator::fold") , produces a new iterator. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.scan) 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#1543-1547) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#method.flat_map) #### fn [flat\_map](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.flat_map) (self, f: F) -> [FlatMap](https://doc.rust-lang.org/nightly/core/iter/adapters/flatten/struct.FlatMap.html "struct core::iter::adapters::flatten::FlatMap") where Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , U: [IntoIterator](https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html "trait core::iter::traits::collect::IntoIterator") , F: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut") (Self::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item "type core::iter::traits::iterator::Iterator::Item") ) -> U, Creates an iterator that works like map, but flattens nested structure. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.flat_map) 1.29.0 · [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#1628-1631) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#method.flatten) #### fn [flatten](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.flatten) (self) -> [Flatten](https://doc.rust-lang.org/nightly/core/iter/adapters/flatten/struct.Flatten.html "struct core::iter::adapters::flatten::Flatten") where Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , Self::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item "type core::iter::traits::iterator::Iterator::Item") : [IntoIterator](https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html "trait core::iter::traits::collect::IntoIterator") , Creates an iterator that flattens nested structure. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.flatten) [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#1785-1788) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#method.map_windows) #### fn [map\_windows](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.map_windows) (self, f: F) -> [MapWindows](https://doc.rust-lang.org/nightly/core/iter/adapters/map_windows/struct.MapWindows.html "struct core::iter::adapters::map_windows::MapWindows") where Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , F: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut") (&\[Self::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item "type core::iter::traits::iterator::Iterator::Item")\ ; [N](https://doc.rust-lang.org/nightly/std/primitive.array.html)\ \]) -> R, 🔬This is a nightly-only experimental API. (`iter_map_windows`) Calls the given function `f` for each contiguous window of size `N` over `self` and returns an iterator over the outputs of `f`. Like [`slice::windows()`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.windows "method slice::windows") , the windows during mapping overlap as well. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.map_windows) 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#1848-1850) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#method.fuse) #### fn [fuse](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.fuse) (self) -> [Fuse](https://doc.rust-lang.org/nightly/core/iter/adapters/fuse/struct.Fuse.html "struct core::iter::adapters::fuse::Fuse") where Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , Creates an iterator which ends after the first [`None`](https://doc.rust-lang.org/nightly/core/option/enum.Option.html#variant.None "variant core::option::Option::None") . [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.fuse) 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#1933-1936) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#method.inspect) #### fn [inspect](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.inspect) (self, f: F) -> [Inspect](https://doc.rust-lang.org/nightly/core/iter/adapters/inspect/struct.Inspect.html "struct core::iter::adapters::inspect::Inspect") where Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , F: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut") (&Self::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item "type core::iter::traits::iterator::Iterator::Item") ), Does something with each element of an iterator, passing the value on. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.inspect) 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#1970-1972) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#method.by_ref) #### fn [by\_ref](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.by_ref) (&mut self) -> &mut Self where Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , Creates a “by reference” adapter for this instance of `Iterator`. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.by_ref) 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#2093-2095) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#method.collect) #### fn [collect](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.collect) (self) -> B where B: [FromIterator](https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.FromIterator.html "trait core::iter::traits::collect::FromIterator") , Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , Transforms an iterator into a collection. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.collect) [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#2181-2185) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#method.try_collect) #### fn [try\_collect](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.try_collect) ( &mut self, ) -> <::[Residual](https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Try.html#associatedtype.Residual "type core::ops::try_trait::Try::Residual") as [Residual](https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Residual.html "trait core::ops::try_trait::Residual") >::[TryType](https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Residual.html#associatedtype.TryType "type core::ops::try_trait::Residual::TryType") where Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , Self::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item "type core::iter::traits::iterator::Iterator::Item") : [Try](https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Try.html "trait core::ops::try_trait::Try") , ::[Residual](https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Try.html#associatedtype.Residual "type core::ops::try_trait::Try::Residual") : [Residual](https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Residual.html "trait core::ops::try_trait::Residual") , B: [FromIterator](https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.FromIterator.html "trait core::iter::traits::collect::FromIterator") <::[Output](https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Try.html#associatedtype.Output "type core::ops::try_trait::Try::Output") \>, 🔬This is a nightly-only experimental API. (`iterator_try_collect`) Fallibly transforms an iterator into a collection, short circuiting if a failure is encountered. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.try_collect) [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#2254-2256) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#method.collect_into) #### fn [collect\_into](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.collect_into) (self, collection: [&mut E](https://doc.rust-lang.org/nightly/std/primitive.reference.html) ) -> [&mut E](https://doc.rust-lang.org/nightly/std/primitive.reference.html) where E: [Extend](https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.Extend.html "trait core::iter::traits::collect::Extend") , Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , 🔬This is a nightly-only experimental API. (`iter_collect_into`) Collects all the items from an iterator into a collection. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.collect_into) 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#2287-2291) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#method.partition) #### fn [partition](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.partition) (self, f: F) -> [(B, B)](https://doc.rust-lang.org/nightly/std/primitive.tuple.html) where Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , B: [Default](https://doc.rust-lang.org/nightly/core/default/trait.Default.html "trait core::default::Default") + [Extend](https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.Extend.html "trait core::iter::traits::collect::Extend") , F: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut") (&Self::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item "type core::iter::traits::iterator::Iterator::Item") ) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) , Consumes an iterator, creating two collections from it. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.partition) [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#2408-2411) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#method.is_partitioned) #### fn [is\_partitioned](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.is_partitioned)

(self, predicate: P) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) where Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , P: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut") (Self::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item "type core::iter::traits::iterator::Iterator::Item") ) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) , 🔬This is a nightly-only experimental API. (`iter_is_partitioned`) Checks if the elements of this iterator are partitioned according to the given predicate, such that all those that return `true` precede all those that return `false`. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.is_partitioned) 1.27.0 · [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#2503-2507) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#method.try_fold) #### fn [try\_fold](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.try_fold) (&mut self, init: B, f: F) -> R where Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , F: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut") (B, Self::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item "type core::iter::traits::iterator::Iterator::Item") ) -> R, R: [Try](https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Try.html "trait core::ops::try_trait::Try") , An iterator method that applies a function as long as it returns successfully, producing a single, final value. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.try_fold) 1.27.0 · [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#2562-2566) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#method.try_for_each) #### fn [try\_for\_each](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.try_for_each) (&mut self, f: F) -> R where Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , F: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut") (Self::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item "type core::iter::traits::iterator::Iterator::Item") ) -> R, R: [Try](https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Try.html "trait core::ops::try_trait::Try") , An iterator method that applies a fallible function to each item in the iterator, stopping at the first error and returning that error. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.try_for_each) 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#2682-2685) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#method.fold) #### fn [fold](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.fold) (self, init: B, f: F) -> B where Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , F: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut") (B, Self::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item "type core::iter::traits::iterator::Iterator::Item") ) -> B, Folds every element into an accumulator by applying an operation, returning the final result. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.fold) 1.51.0 · [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#2720-2723) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#method.reduce) #### fn [reduce](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.reduce) (self, f: F) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") where Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , F: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut") (Self::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item "type core::iter::traits::iterator::Iterator::Item") , Self::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item "type core::iter::traits::iterator::Iterator::Item") ) -> Self::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item "type core::iter::traits::iterator::Iterator::Item") , Reduces the elements to a single one, by repeatedly applying a reducing operation. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.reduce) [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#2792-2798) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#method.try_reduce) #### fn [try\_reduce](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.try_reduce) ( &mut self, f: impl [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut") (Self::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item "type core::iter::traits::iterator::Iterator::Item") , Self::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item "type core::iter::traits::iterator::Iterator::Item") ) -> R, ) -> <::[Residual](https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Try.html#associatedtype.Residual "type core::ops::try_trait::Try::Residual") as [Residual](https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Residual.html "trait core::ops::try_trait::Residual") <[Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <::[Output](https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Try.html#associatedtype.Output "type core::ops::try_trait::Try::Output") \>>>::[TryType](https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Residual.html#associatedtype.TryType "type core::ops::try_trait::Residual::TryType") where Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , R: [Try](https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Try.html "trait core::ops::try_trait::Try") , ::[Residual](https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Try.html#associatedtype.Residual "type core::ops::try_trait::Try::Residual") : [Residual](https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Residual.html "trait core::ops::try_trait::Residual") <[Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") >, 🔬This is a nightly-only experimental API. (`iterator_try_reduce`) Reduces the elements to a single one by repeatedly applying a reducing operation. If the closure returns a failure, the failure is propagated back to the caller immediately. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.try_reduce) 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#2851-2854) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#method.all) #### fn [all](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.all) (&mut self, f: F) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) where Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , F: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut") (Self::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item "type core::iter::traits::iterator::Iterator::Item") ) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) , Tests if every element of the iterator matches a predicate. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.all) 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#2905-2908) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#method.any) #### fn [any](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.any) (&mut self, f: F) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) where Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , F: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut") (Self::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item "type core::iter::traits::iterator::Iterator::Item") ) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) , Tests if any element of the iterator matches a predicate. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.any) 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#2979-2982) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#method.find) #### fn [find](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.find)

(&mut self, predicate: P) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") where Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , P: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut") (&Self::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item "type core::iter::traits::iterator::Iterator::Item") ) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) , Searches for an element of an iterator that satisfies a predicate. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.find) 1.30.0 · [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#3011-3014) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#method.find_map) #### fn [find\_map](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.find_map) (&mut self, f: F) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") where Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , F: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut") (Self::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item "type core::iter::traits::iterator::Iterator::Item") ) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") , Applies function to the elements of iterator and returns the first non-none result. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.find_map) [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#3070-3076) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#method.try_find) #### fn [try\_find](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.try_find) ( &mut self, f: impl [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut") (&Self::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item "type core::iter::traits::iterator::Iterator::Item") ) -> R, ) -> <::[Residual](https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Try.html#associatedtype.Residual "type core::ops::try_trait::Try::Residual") as [Residual](https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Residual.html "trait core::ops::try_trait::Residual") <[Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") >>::[TryType](https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Residual.html#associatedtype.TryType "type core::ops::try_trait::Residual::TryType") where Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , R: [Try](https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Try.html "trait core::ops::try_trait::Try") , ::[Residual](https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Try.html#associatedtype.Residual "type core::ops::try_trait::Try::Residual") : [Residual](https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Residual.html "trait core::ops::try_trait::Residual") <[Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") >, 🔬This is a nightly-only experimental API. (`try_find`) Applies function to the elements of iterator and returns the first true result or the first error. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.try_find) 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#3154-3157) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#method.position) #### fn [position](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.position)

(&mut self, predicate: P) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <[usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) \> where Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , P: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut") (Self::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item "type core::iter::traits::iterator::Iterator::Item") ) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) , Searches for an element in an iterator, returning its index. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.position) 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#3270-3273) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#method.max) #### fn [max](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.max) (self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") where Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , Self::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item "type core::iter::traits::iterator::Iterator::Item") : [Ord](https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html "trait core::cmp::Ord") , Returns the maximum element of an iterator. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.max) 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#3307-3310) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#method.min) #### fn [min](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.min) (self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") where Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , Self::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item "type core::iter::traits::iterator::Iterator::Item") : [Ord](https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html "trait core::cmp::Ord") , Returns the minimum element of an iterator. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.min) 1.6.0 · [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#3330-3333) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#method.max_by_key) #### fn [max\_by\_key](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.max_by_key) (self, f: F) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") where B: [Ord](https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html "trait core::cmp::Ord") , Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , F: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut") (&Self::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item "type core::iter::traits::iterator::Iterator::Item") ) -> B, Returns the element that gives the maximum value from the specified function. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.max_by_key) 1.15.0 · [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#3364-3367) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#method.max_by) #### fn [max\_by](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.max_by) (self, compare: F) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") where Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , F: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut") (&Self::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item "type core::iter::traits::iterator::Iterator::Item") , &Self::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item "type core::iter::traits::iterator::Iterator::Item") ) -> [Ordering](https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html "enum core::cmp::Ordering") , Returns the element that gives the maximum value with respect to the specified comparison function. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.max_by) 1.6.0 · [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#3392-3395) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#method.min_by_key) #### fn [min\_by\_key](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.min_by_key) (self, f: F) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") where B: [Ord](https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html "trait core::cmp::Ord") , Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , F: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut") (&Self::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item "type core::iter::traits::iterator::Iterator::Item") ) -> B, Returns the element that gives the minimum value from the specified function. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.min_by_key) 1.15.0 · [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#3426-3429) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#method.min_by) #### fn [min\_by](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.min_by) (self, compare: F) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") where Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , F: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut") (&Self::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item "type core::iter::traits::iterator::Iterator::Item") , &Self::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item "type core::iter::traits::iterator::Iterator::Item") ) -> [Ordering](https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html "enum core::cmp::Ordering") , Returns the element that gives the minimum value with respect to the specified comparison function. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.min_by) 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#3501-3505) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#method.unzip) #### fn [unzip](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.unzip) (self) -> [(FromA, FromB)](https://doc.rust-lang.org/nightly/std/primitive.tuple.html) where FromA: [Default](https://doc.rust-lang.org/nightly/core/default/trait.Default.html "trait core::default::Default") + [Extend](https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.Extend.html "trait core::iter::traits::collect::Extend") , FromB: [Default](https://doc.rust-lang.org/nightly/core/default/trait.Default.html "trait core::default::Default") + [Extend](https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.Extend.html "trait core::iter::traits::collect::Extend") , Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") + [Iterator](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html "trait core::iter::traits::iterator::Iterator") , Converts an iterator of pairs into a pair of containers. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.unzip) 1.36.0 · [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#3533-3536) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#method.copied) #### fn [copied](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.copied) <'a, T>(self) -> [Copied](https://doc.rust-lang.org/nightly/core/iter/adapters/copied/struct.Copied.html "struct core::iter::adapters::copied::Copied") where T: [Copy](https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html "trait core::marker::Copy") + 'a, Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") + [Iterator](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html "trait core::iter::traits::iterator::Iterator") , Creates an iterator which copies all of its elements. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.copied) 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#3582-3585) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#method.cloned) #### fn [cloned](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.cloned) <'a, T>(self) -> [Cloned](https://doc.rust-lang.org/nightly/core/iter/adapters/cloned/struct.Cloned.html "struct core::iter::adapters::cloned::Cloned") where T: [Clone](https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html "trait core::clone::Clone") + 'a, Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") + [Iterator](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html "trait core::iter::traits::iterator::Iterator") , Creates an iterator which [`clone`](https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone "method core::clone::Clone::clone") s all of its elements. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.cloned) [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#3658-3660) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#method.array_chunks) #### fn [array\_chunks](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.array_chunks) (self) -> [ArrayChunks](https://doc.rust-lang.org/nightly/core/iter/adapters/array_chunks/struct.ArrayChunks.html "struct core::iter::adapters::array_chunks::ArrayChunks") where Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , 🔬This is a nightly-only experimental API. (`iter_array_chunks`) Returns an iterator over `N` elements of the iterator at a time. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.array_chunks) 1.11.0 · [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#3695-3698) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#method.sum) #### fn [sum](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.sum) (self) -> S where Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , S: [Sum](https://doc.rust-lang.org/nightly/core/iter/traits/accum/trait.Sum.html "trait core::iter::traits::accum::Sum") , Sums the elements of an iterator. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.sum) 1.11.0 · [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#3728-3731) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#method.product) #### fn [product](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.product)

(self) -> P where Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , P: [Product](https://doc.rust-lang.org/nightly/core/iter/traits/accum/trait.Product.html "trait core::iter::traits::accum::Product") , Iterates over the entire iterator, multiplying all the elements [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.product) 1.5.0 · [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#3750-3754) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#method.cmp) #### fn [cmp](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.cmp) (self, other: I) -> [Ordering](https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html "enum core::cmp::Ordering") where I: [IntoIterator](https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html "trait core::iter::traits::collect::IntoIterator") , Self::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item "type core::iter::traits::iterator::Iterator::Item") : [Ord](https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html "trait core::cmp::Ord") , Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , [Lexicographically](https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#lexicographical-comparison "trait core::cmp::Ord") compares the elements of this [`Iterator`](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html "trait core::iter::traits::iterator::Iterator") with those of another. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.cmp) [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#3778-3782) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#method.cmp_by) #### fn [cmp\_by](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.cmp_by) (self, other: I, cmp: F) -> [Ordering](https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html "enum core::cmp::Ordering") where Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , I: [IntoIterator](https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html "trait core::iter::traits::collect::IntoIterator") , F: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut") (Self::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item "type core::iter::traits::iterator::Iterator::Item") , ::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.Item "type core::iter::traits::collect::IntoIterator::Item") ) -> [Ordering](https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html "enum core::cmp::Ordering") , 🔬This is a nightly-only experimental API. (`iter_order_by`) [Lexicographically](https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#lexicographical-comparison "trait core::cmp::Ord") compares the elements of this [`Iterator`](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html "trait core::iter::traits::iterator::Iterator") with those of another with respect to the specified comparison function. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.cmp_by) 1.5.0 · [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#3835-3839) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#method.partial_cmp) #### fn [partial\_cmp](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.partial_cmp) (self, other: I) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <[Ordering](https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html "enum core::cmp::Ordering") \> where I: [IntoIterator](https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html "trait core::iter::traits::collect::IntoIterator") , Self::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item "type core::iter::traits::iterator::Iterator::Item") : [PartialOrd](https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html "trait core::cmp::PartialOrd") <::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.Item "type core::iter::traits::collect::IntoIterator::Item") \>, Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , [Lexicographically](https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#lexicographical-comparison "trait core::cmp::Ord") compares the [`PartialOrd`](https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html "trait core::cmp::PartialOrd") elements of this [`Iterator`](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html "trait core::iter::traits::iterator::Iterator") with those of another. The comparison works like short-circuit evaluation, returning a result without comparing the remaining elements. As soon as an order can be determined, the evaluation stops and a result is returned. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.partial_cmp) [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#3872-3876) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#method.partial_cmp_by) #### fn [partial\_cmp\_by](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.partial_cmp_by) (self, other: I, partial\_cmp: F) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <[Ordering](https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html "enum core::cmp::Ordering") \> where Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , I: [IntoIterator](https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html "trait core::iter::traits::collect::IntoIterator") , F: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut") (Self::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item "type core::iter::traits::iterator::Iterator::Item") , ::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.Item "type core::iter::traits::collect::IntoIterator::Item") ) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <[Ordering](https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html "enum core::cmp::Ordering") \>, 🔬This is a nightly-only experimental API. (`iter_order_by`) [Lexicographically](https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#lexicographical-comparison "trait core::cmp::Ord") compares the elements of this [`Iterator`](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html "trait core::iter::traits::iterator::Iterator") with those of another with respect to the specified comparison function. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.partial_cmp_by) 1.5.0 · [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#3906-3910) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#method.eq) #### fn [eq](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.eq) (self, other: I) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) where I: [IntoIterator](https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html "trait core::iter::traits::collect::IntoIterator") , Self::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item "type core::iter::traits::iterator::Iterator::Item") : [PartialEq](https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html "trait core::cmp::PartialEq") <::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.Item "type core::iter::traits::collect::IntoIterator::Item") \>, Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , Determines if the elements of this [`Iterator`](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html "trait core::iter::traits::iterator::Iterator") are equal to those of another. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.eq) [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#3930-3934) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#method.eq_by) #### fn [eq\_by](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.eq_by) (self, other: I, eq: F) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) where Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , I: [IntoIterator](https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html "trait core::iter::traits::collect::IntoIterator") , F: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut") (Self::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item "type core::iter::traits::iterator::Iterator::Item") , ::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.Item "type core::iter::traits::collect::IntoIterator::Item") ) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) , 🔬This is a nightly-only experimental API. (`iter_order_by`) Determines if the elements of this [`Iterator`](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html "trait core::iter::traits::iterator::Iterator") are equal to those of another with respect to the specified equality function. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.eq_by) 1.5.0 · [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#3960-3964) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#method.ne) #### fn [ne](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.ne) (self, other: I) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) where I: [IntoIterator](https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html "trait core::iter::traits::collect::IntoIterator") , Self::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item "type core::iter::traits::iterator::Iterator::Item") : [PartialEq](https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html "trait core::cmp::PartialEq") <::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.Item "type core::iter::traits::collect::IntoIterator::Item") \>, Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , Determines if the elements of this [`Iterator`](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html "trait core::iter::traits::iterator::Iterator") are not equal to those of another. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.ne) 1.5.0 · [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#3982-3986) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#method.lt) #### fn [lt](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.lt) (self, other: I) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) where I: [IntoIterator](https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html "trait core::iter::traits::collect::IntoIterator") , Self::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item "type core::iter::traits::iterator::Iterator::Item") : [PartialOrd](https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html "trait core::cmp::PartialOrd") <::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.Item "type core::iter::traits::collect::IntoIterator::Item") \>, Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , Determines if the elements of this [`Iterator`](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html "trait core::iter::traits::iterator::Iterator") are [lexicographically](https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#lexicographical-comparison "trait core::cmp::Ord") less than those of another. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.lt) 1.5.0 · [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#4004-4008) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#method.le) #### fn [le](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.le) (self, other: I) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) where I: [IntoIterator](https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html "trait core::iter::traits::collect::IntoIterator") , Self::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item "type core::iter::traits::iterator::Iterator::Item") : [PartialOrd](https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html "trait core::cmp::PartialOrd") <::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.Item "type core::iter::traits::collect::IntoIterator::Item") \>, Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , Determines if the elements of this [`Iterator`](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html "trait core::iter::traits::iterator::Iterator") are [lexicographically](https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#lexicographical-comparison "trait core::cmp::Ord") less or equal to those of another. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.le) 1.5.0 · [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#4026-4030) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#method.gt) #### fn [gt](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.gt) (self, other: I) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) where I: [IntoIterator](https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html "trait core::iter::traits::collect::IntoIterator") , Self::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item "type core::iter::traits::iterator::Iterator::Item") : [PartialOrd](https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html "trait core::cmp::PartialOrd") <::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.Item "type core::iter::traits::collect::IntoIterator::Item") \>, Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , Determines if the elements of this [`Iterator`](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html "trait core::iter::traits::iterator::Iterator") are [lexicographically](https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#lexicographical-comparison "trait core::cmp::Ord") greater than those of another. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.gt) 1.5.0 · [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#4048-4052) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#method.ge) #### fn [ge](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.ge) (self, other: I) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) where I: [IntoIterator](https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html "trait core::iter::traits::collect::IntoIterator") , Self::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item "type core::iter::traits::iterator::Iterator::Item") : [PartialOrd](https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html "trait core::cmp::PartialOrd") <::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.Item "type core::iter::traits::collect::IntoIterator::Item") \>, Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , Determines if the elements of this [`Iterator`](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html "trait core::iter::traits::iterator::Iterator") are [lexicographically](https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#lexicographical-comparison "trait core::cmp::Ord") greater than or equal to those of another. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.ge) 1.82.0 · [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#4078-4081) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#method.is_sorted) #### fn [is\_sorted](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.is_sorted) (self) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) where Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , Self::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item "type core::iter::traits::iterator::Iterator::Item") : [PartialOrd](https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html "trait core::cmp::PartialOrd") , Checks if the elements of this iterator are sorted. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.is_sorted) 1.82.0 · [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#4105-4108) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#method.is_sorted_by) #### fn [is\_sorted\_by](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.is_sorted_by) (self, compare: F) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) where Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , F: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut") (&Self::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item "type core::iter::traits::iterator::Iterator::Item") , &Self::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item "type core::iter::traits::iterator::Iterator::Item") ) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) , Checks if the elements of this iterator are sorted using the given comparator function. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.is_sorted_by) 1.82.0 · [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#4150-4154) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#method.is_sorted_by_key) #### fn [is\_sorted\_by\_key](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.is_sorted_by_key) (self, f: F) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) where Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , F: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut") (Self::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item "type core::iter::traits::iterator::Iterator::Item") ) -> K, K: [PartialOrd](https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html "trait core::cmp::PartialOrd") , Checks if the elements of this iterator are sorted using the given key extraction function. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.is_sorted_by_key) [Source](https://docs.rs/arrow-ipc/58.1.0/src/arrow_ipc/reader.rs.html#1737-1741) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#impl-RecordBatchReader-for-StreamReader%3CR%3E) ### impl [RecordBatchReader](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/arrow_array/record_batch/trait.RecordBatchReader.html "trait arrow_array::record_batch::RecordBatchReader") for [StreamReader](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html "struct arrow_ipc::reader::StreamReader") [Source](https://docs.rs/arrow-ipc/58.1.0/src/arrow_ipc/reader.rs.html#1738-1740) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#method.schema-1) #### fn [schema](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/arrow_array/record_batch/trait.RecordBatchReader.html#tymethod.schema) (&self) -> [SchemaRef](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/arrow_schema/schema/type.SchemaRef.html "type arrow_schema::schema::SchemaRef") Returns the schema of this `RecordBatchReader`. [Read more](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/arrow_array/record_batch/trait.RecordBatchReader.html#tymethod.schema) Auto Trait Implementations[§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#synthetic-implementations) ------------------------------------------------------------------------------------------------------------------------------------ [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#impl-Freeze-for-StreamReader%3CR%3E) ### impl [Freeze](https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html "trait core::marker::Freeze") for [StreamReader](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html "struct arrow_ipc::reader::StreamReader") where R: [Freeze](https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html "trait core::marker::Freeze") , [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#impl-RefUnwindSafe-for-StreamReader%3CR%3E) ### impl ![RefUnwindSafe](https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html "trait core::panic::unwind_safe::RefUnwindSafe") for [StreamReader](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html "struct arrow_ipc::reader::StreamReader") [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#impl-Send-for-StreamReader%3CR%3E) ### impl [Send](https://doc.rust-lang.org/nightly/core/marker/trait.Send.html "trait core::marker::Send") for [StreamReader](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html "struct arrow_ipc::reader::StreamReader") where R: [Send](https://doc.rust-lang.org/nightly/core/marker/trait.Send.html "trait core::marker::Send") , [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#impl-Sync-for-StreamReader%3CR%3E) ### impl [Sync](https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html "trait core::marker::Sync") for [StreamReader](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html "struct arrow_ipc::reader::StreamReader") where R: [Sync](https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html "trait core::marker::Sync") , [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#impl-Unpin-for-StreamReader%3CR%3E) ### impl [Unpin](https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html "trait core::marker::Unpin") for [StreamReader](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html "struct arrow_ipc::reader::StreamReader") where R: [Unpin](https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html "trait core::marker::Unpin") , [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#impl-UnsafeUnpin-for-StreamReader%3CR%3E) ### impl [UnsafeUnpin](https://doc.rust-lang.org/nightly/core/marker/trait.UnsafeUnpin.html "trait core::marker::UnsafeUnpin") for [StreamReader](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html "struct arrow_ipc::reader::StreamReader") where R: [UnsafeUnpin](https://doc.rust-lang.org/nightly/core/marker/trait.UnsafeUnpin.html "trait core::marker::UnsafeUnpin") , [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#impl-UnwindSafe-for-StreamReader%3CR%3E) ### impl ![UnwindSafe](https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html "trait core::panic::unwind_safe::UnwindSafe") for [StreamReader](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html "struct arrow_ipc::reader::StreamReader") Blanket Implementations[§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#blanket-implementations) ------------------------------------------------------------------------------------------------------------------------------- [Source](https://doc.rust-lang.org/nightly/src/core/any.rs.html#141) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#impl-Any-for-T) ### impl [Any](https://doc.rust-lang.org/nightly/core/any/trait.Any.html "trait core::any::Any") for T where T: 'static + ?[Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , [Source](https://doc.rust-lang.org/nightly/src/core/any.rs.html#142) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#method.type_id) #### fn [type\_id](https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id) (&self) -> [TypeId](https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html "struct core::any::TypeId") Gets the `TypeId` of `self`. [Read more](https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id) [Source](https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#212) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#impl-Borrow%3CT%3E-for-T) ### impl [Borrow](https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html "trait core::borrow::Borrow") for T where T: ?[Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , [Source](https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#214) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#method.borrow) #### fn [borrow](https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow) (&self) -> [&T](https://doc.rust-lang.org/nightly/std/primitive.reference.html) Immutably borrows from an owned value. [Read more](https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow) [Source](https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#221) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#impl-BorrowMut%3CT%3E-for-T) ### impl [BorrowMut](https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html "trait core::borrow::BorrowMut") for T where T: ?[Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , [Source](https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#222) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#method.borrow_mut) #### fn [borrow\_mut](https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut) (&mut self) -> [&mut T](https://doc.rust-lang.org/nightly/std/primitive.reference.html) Mutably borrows from an owned value. [Read more](https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut) [Source](https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#785) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#impl-From%3CT%3E-for-T) ### impl [From](https://doc.rust-lang.org/nightly/core/convert/trait.From.html "trait core::convert::From") for T [Source](https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#788) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#method.from) #### fn [from](https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from) (t: T) -> T Returns the argument unchanged. [Source](https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#767-769) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#impl-Into%3CU%3E-for-T) ### impl [Into](https://doc.rust-lang.org/nightly/core/convert/trait.Into.html "trait core::convert::Into") for T where U: [From](https://doc.rust-lang.org/nightly/core/convert/trait.From.html "trait core::convert::From") , [Source](https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#777) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#method.into) #### fn [into](https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into) (self) -> U Calls `U::from(self)`. That is, this conversion is whatever the implementation of `[From](https://doc.rust-lang.org/nightly/core/convert/trait.From.html "trait core::convert::From") for U` chooses to do. [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/collect.rs.html#317) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#impl-IntoIterator-for-I) ### impl [IntoIterator](https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html "trait core::iter::traits::collect::IntoIterator") for I where I: [Iterator](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html "trait core::iter::traits::iterator::Iterator") , [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/collect.rs.html#318) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#associatedtype.Item-1) #### type [Item](https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.Item) = ::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item "type core::iter::traits::iterator::Iterator::Item") The type of the elements being iterated over. [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/collect.rs.html#319) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#associatedtype.IntoIter) #### type [IntoIter](https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.IntoIter) = I Which kind of iterator are we turning this into? [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/collect.rs.html#322) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#method.into_iter) #### fn [into\_iter](https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#tymethod.into_iter) (self) -> I Creates an iterator from a value. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#tymethod.into_iter) [Source](https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#827-829) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#impl-TryFrom%3CU%3E-for-T) ### impl [TryFrom](https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html "trait core::convert::TryFrom") for T where U: [Into](https://doc.rust-lang.org/nightly/core/convert/trait.Into.html "trait core::convert::Into") , [Source](https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#831) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#associatedtype.Error-1) #### type [Error](https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error) = [Infallible](https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html "enum core::convert::Infallible") The type returned in the event of a conversion error. [Source](https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#834) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#method.try_from) #### fn [try\_from](https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from) (value: U) -> [Result](https://doc.rust-lang.org/nightly/core/result/enum.Result.html "enum core::result::Result") >::[Error](https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error "type core::convert::TryFrom::Error") \> Performs the conversion. [Source](https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#811-813) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#impl-TryInto%3CU%3E-for-T) ### impl [TryInto](https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html "trait core::convert::TryInto") for T where U: [TryFrom](https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html "trait core::convert::TryFrom") , [Source](https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#815) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#associatedtype.Error) #### type [Error](https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error) = >::[Error](https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error "type core::convert::TryFrom::Error") The type returned in the event of a conversion error. [Source](https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#818) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html#method.try_into) #### fn [try\_into](https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into) (self) -> [Result](https://doc.rust-lang.org/nightly/core/result/enum.Result.html "enum core::result::Result") >::[Error](https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error "type core::convert::TryFrom::Error") \> Performs the conversion. --- # hashtree_config - Rust [Docs.rs](https://docs.rs/) * [hashtree-config-0.2.18](https://docs.rs/hashtree-config/0.2.18/hashtree_config/# "Shared configuration for hashtree tools") * hashtree-config 0.2.18 * [Docs.rs crate page](https://docs.rs/crate/hashtree-config/0.2.18 "See hashtree-config in docs.rs") * [MIT](https://spdx.org/licenses/MIT) * Links * [Homepage](https://git.iris.to/#/npub1xdhnr9mrv47kkrn95k6cwecearydeh8e895990n3acntwvmgk2dsdeeycm/hashtree) * [Repository](https://git.iris.to/#/npub1xdhnr9mrv47kkrn95k6cwecearydeh8e895990n3acntwvmgk2dsdeeycm/hashtree) * [crates.io](https://crates.io/crates/hashtree-config "See hashtree-config in crates.io") * [Source](https://docs.rs/crate/hashtree-config/0.2.18/source/ "Browse source of hashtree-config-0.2.18") * Owners * [mmalmi](https://crates.io/users/mmalmi) * Dependencies * * [anyhow ^1 _normal_](https://docs.rs/anyhow/^1/) * [dirs ^5 _normal_](https://docs.rs/dirs/^5/) * [serde ^1.0 _normal_](https://docs.rs/serde/^1.0/) * [toml ^0.8 _normal_](https://docs.rs/toml/^0.8/) * Versions * [**62.16%** of the crate is documented](https://docs.rs/crate/hashtree-config/0.2.18) * [Platform](https://docs.rs/hashtree-config/0.2.18/hashtree_config/#) * [aarch64-apple-darwin](https://docs.rs/crate/hashtree-config/0.2.18/target-redirect/aarch64-apple-darwin/hashtree_config/) * [aarch64-unknown-linux-gnu](https://docs.rs/crate/hashtree-config/0.2.18/target-redirect/aarch64-unknown-linux-gnu/hashtree_config/) * [i686-pc-windows-msvc](https://docs.rs/crate/hashtree-config/0.2.18/target-redirect/i686-pc-windows-msvc/hashtree_config/) * [x86\_64-pc-windows-msvc](https://docs.rs/crate/hashtree-config/0.2.18/target-redirect/x86_64-pc-windows-msvc/hashtree_config/) * [x86\_64-unknown-linux-gnu](https://docs.rs/crate/hashtree-config/0.2.18/target-redirect/hashtree_config/) * [Feature flags](https://docs.rs/crate/hashtree-config/0.2.18/features "Browse available feature flags of hashtree-config-0.2.18") * [docs.rs](https://docs.rs/hashtree-config/0.2.18/hashtree_config/#) * [About docs.rs](https://docs.rs/about) * [Badges](https://docs.rs/about/badges) * [Builds](https://docs.rs/about/builds) * [Metadata](https://docs.rs/about/metadata) * [Shorthand URLs](https://docs.rs/about/redirections) * [Download](https://docs.rs/about/download) * [Rustdoc JSON](https://docs.rs/about/rustdoc-json) * [Build queue](https://docs.rs/releases/queue) * [Privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#docs.rs) * [Rust](https://docs.rs/hashtree-config/0.2.18/hashtree_config/#) * [Rust website](https://www.rust-lang.org/) * [The Book](https://doc.rust-lang.org/book/) * [Standard Library API Reference](https://doc.rust-lang.org/std/) * [Rust by Example](https://doc.rust-lang.org/rust-by-example/) * [The Cargo Guide](https://doc.rust-lang.org/cargo/guide/) * [Clippy Documentation](https://doc.rust-lang.org/nightly/clippy) [Skip to main content](https://docs.rs/hashtree-config/0.2.18/hashtree_config/#main-content) [Crate hashtree\_config](https://docs.rs/hashtree-config/0.2.18/hashtree_config/#) ----------------------------------------------------------------------------------- Crate hashtree\_config Copy item path ===================================== [Source](https://docs.rs/hashtree-config/0.2.18/src/hashtree_config/lib.rs.html#1-955) Expand description Shared configuration for hashtree tools Reads from ~/.hashtree/config.toml Structs[§](https://docs.rs/hashtree-config/0.2.18/hashtree_config/#structs) ---------------------------------------------------------------------------- [BlossomConfig](https://docs.rs/hashtree-config/0.2.18/hashtree_config/struct.BlossomConfig.html "struct hashtree_config::BlossomConfig") File server (blossom) configuration [Config](https://docs.rs/hashtree-config/0.2.18/hashtree_config/struct.Config.html "struct hashtree_config::Config") Top-level config structure [KeyEntry](https://docs.rs/hashtree-config/0.2.18/hashtree_config/struct.KeyEntry.html "struct hashtree_config::KeyEntry") A stored key entry from the keys file [NostrConfig](https://docs.rs/hashtree-config/0.2.18/hashtree_config/struct.NostrConfig.html "struct hashtree_config::NostrConfig") Nostr relay configuration [S3Config](https://docs.rs/hashtree-config/0.2.18/hashtree_config/struct.S3Config.html "struct hashtree_config::S3Config") S3-compatible storage configuration [ServerConfig](https://docs.rs/hashtree-config/0.2.18/hashtree_config/struct.ServerConfig.html "struct hashtree_config::ServerConfig") Server configuration [StorageConfig](https://docs.rs/hashtree-config/0.2.18/hashtree_config/struct.StorageConfig.html "struct hashtree_config::StorageConfig") Storage configuration [SyncConfig](https://docs.rs/hashtree-config/0.2.18/hashtree_config/struct.SyncConfig.html "struct hashtree_config::SyncConfig") Background sync configuration Enums[§](https://docs.rs/hashtree-config/0.2.18/hashtree_config/#enums) ------------------------------------------------------------------------ [StorageBackend](https://docs.rs/hashtree-config/0.2.18/hashtree_config/enum.StorageBackend.html "enum hashtree_config::StorageBackend") Storage backend type Constants[§](https://docs.rs/hashtree-config/0.2.18/hashtree_config/#constants) -------------------------------------------------------------------------------- [DEFAULT\_READ\_SERVERS](https://docs.rs/hashtree-config/0.2.18/hashtree_config/constant.DEFAULT_READ_SERVERS.html "constant hashtree_config::DEFAULT_READ_SERVERS") Default read-only file servers [DEFAULT\_RELAYS](https://docs.rs/hashtree-config/0.2.18/hashtree_config/constant.DEFAULT_RELAYS.html "constant hashtree_config::DEFAULT_RELAYS") Default nostr relays [DEFAULT\_WRITE\_SERVERS](https://docs.rs/hashtree-config/0.2.18/hashtree_config/constant.DEFAULT_WRITE_SERVERS.html "constant hashtree_config::DEFAULT_WRITE_SERVERS") Default write-enabled file servers Functions[§](https://docs.rs/hashtree-config/0.2.18/hashtree_config/#functions) -------------------------------------------------------------------------------- [detect\_local\_daemon\_url](https://docs.rs/hashtree-config/0.2.18/hashtree_config/fn.detect_local_daemon_url.html "fn hashtree_config::detect_local_daemon_url") Detect a local hashtree daemon on localhost and return its Blossom base URL. [detect\_local\_relay\_urls](https://docs.rs/hashtree-config/0.2.18/hashtree_config/fn.detect_local_relay_urls.html "fn hashtree_config::detect_local_relay_urls") Detect local Nostr relay URLs (e.g., hashtree daemon or local relay on common ports). [get\_aliases\_path](https://docs.rs/hashtree-config/0.2.18/hashtree_config/fn.get_aliases_path.html "fn hashtree_config::get_aliases_path") Get the public alias file path (~/.hashtree/aliases) [get\_auth\_cookie\_path](https://docs.rs/hashtree-config/0.2.18/hashtree_config/fn.get_auth_cookie_path.html "fn hashtree_config::get_auth_cookie_path") Get the auth cookie path (~/.hashtree/auth.cookie) [get\_config\_path](https://docs.rs/hashtree-config/0.2.18/hashtree_config/fn.get_config_path.html "fn hashtree_config::get_config_path") Get the config file path (~/.hashtree/config.toml) [get\_data\_dir](https://docs.rs/hashtree-config/0.2.18/hashtree_config/fn.get_data_dir.html "fn hashtree_config::get_data_dir") Get the data directory from config (defaults to ~/.hashtree/data) Can be overridden with HTREE\_DATA\_DIR environment variable [get\_hashtree\_dir](https://docs.rs/hashtree-config/0.2.18/hashtree_config/fn.get_hashtree_dir.html "fn hashtree_config::get_hashtree_dir") Get the hashtree directory (~/.hashtree) [get\_keys\_path](https://docs.rs/hashtree-config/0.2.18/hashtree_config/fn.get_keys_path.html "fn hashtree_config::get_keys_path") Get the keys file path (~/.hashtree/keys) [parse\_keys\_file](https://docs.rs/hashtree-config/0.2.18/hashtree_config/fn.parse_keys_file.html "fn hashtree_config::parse_keys_file") Parse the keys file content into key entries Format: ` [alias]` per line Lines starting with # are comments [read\_first\_key](https://docs.rs/hashtree-config/0.2.18/hashtree_config/fn.read_first_key.html "fn hashtree_config::read_first_key") Read and parse keys file, returning the first key’s secret Returns None if file doesn’t exist or is empty [resolve\_relays](https://docs.rs/hashtree-config/0.2.18/hashtree_config/fn.resolve_relays.html "fn hashtree_config::resolve_relays") Resolve relays using environment overrides and optional local relay discovery. --- # apache_avro - Rust [Docs.rs](https://docs.rs/) * [apache-avro-0.21.0](https://docs.rs/apache-avro/latest/apache_avro/# "A library for working with Apache Avro in Rust") * apache-avro 0.21.0 * [Permalink](https://docs.rs/apache-avro/0.21.0/apache_avro/ "Get a link to this specific version") * [Docs.rs crate page](https://docs.rs/crate/apache-avro/latest "See apache-avro in docs.rs") * [Apache-2.0](https://spdx.org/licenses/Apache-2.0) * Links * [Repository](https://github.com/apache/avro-rs) * [crates.io](https://crates.io/crates/apache-avro "See apache-avro in crates.io") * [Source](https://docs.rs/crate/apache-avro/latest/source/ "Browse source of apache-avro-0.21.0") * Owners * [martin-g](https://crates.io/users/martin-g) * [iemejia](https://crates.io/users/iemejia) * [Fokko](https://crates.io/users/Fokko) * [RyanSkraba](https://crates.io/users/RyanSkraba) * Dependencies * * [apache-avro-derive ^0.21.0 _normal_ _optional_](https://docs.rs/apache-avro-derive/^0.21.0/) * [bigdecimal ^0.4.9 _normal_](https://docs.rs/bigdecimal/^0.4.9/) * [bon ^3.8.1 _normal_](https://docs.rs/bon/^3.8.1/) * [bzip2 ^0.6.1 _normal_ _optional_](https://docs.rs/bzip2/^0.6.1/) * [crc32fast ^1.5.0 _normal_ _optional_](https://docs.rs/crc32fast/^1.5.0/) * [digest ^0.10.7 _normal_](https://docs.rs/digest/^0.10.7/) * [liblzma ^0.4.5 _normal_ _optional_](https://docs.rs/liblzma/^0.4.5/) * [log ^0.4.28 _normal_](https://docs.rs/log/^0.4.28/) * [miniz\_oxide ^0.8.9 _normal_](https://docs.rs/miniz_oxide/^0.8.9/) * [num-bigint ^0.4.6 _normal_](https://docs.rs/num-bigint/^0.4.6/) * [regex-lite ^0.1.8 _normal_](https://docs.rs/regex-lite/^0.1.8/) * [serde ^1.0.228 _normal_](https://docs.rs/serde/^1.0.228/) * [serde\_bytes ^0.11.19 _normal_](https://docs.rs/serde_bytes/^0.11.19/) * [serde\_json ^1.0.145 _normal_](https://docs.rs/serde_json/^1.0.145/) * [snap ^1.1.0 _normal_ _optional_](https://docs.rs/snap/^1.1.0/) * [strum ^0.27.2 _normal_](https://docs.rs/strum/^0.27.2/) * [strum\_macros ^0.27.2 _normal_](https://docs.rs/strum_macros/^0.27.2/) * [thiserror ^2.0.17 _normal_](https://docs.rs/thiserror/^2.0.17/) * [uuid ^1.18.1 _normal_](https://docs.rs/uuid/^1.18.1/) * [zstd ^0.13.3 _normal_ _optional_](https://docs.rs/zstd/^0.13.3/) * [anyhow ^1.0.100 _dev_](https://docs.rs/anyhow/^1.0.100/) * [apache-avro-test-helper ^0.21.0 _dev_](https://docs.rs/apache-avro-test-helper/^0.21.0/) * [criterion ^0.7.0 _dev_](https://docs.rs/criterion/^0.7.0/) * [hex-literal ^1.0.0 _dev_](https://docs.rs/hex-literal/^1.0.0/) * [md-5 ^0.10.6 _dev_](https://docs.rs/md-5/^0.10.6/) * [paste ^1.0.15 _dev_](https://docs.rs/paste/^1.0.15/) * [pretty\_assertions ^1.4.1 _dev_](https://docs.rs/pretty_assertions/^1.4.1/) * [rstest ^0.26.1 _dev_](https://docs.rs/rstest/^0.26.1/) * [sha2 ^0.10.9 _dev_](https://docs.rs/sha2/^0.10.9/) * [rand ^0.9.2 _normal_](https://docs.rs/rand/^0.9.2/) * [quad-rand ^0.2.3 _normal_](https://docs.rs/quad-rand/^0.2.3/) * Versions * [**54.85%** of the crate is documented](https://docs.rs/crate/apache-avro/latest) * [Platform](https://docs.rs/apache-avro/latest/apache_avro/#) * [x86\_64-unknown-linux-gnu](https://docs.rs/crate/apache-avro/latest/target-redirect/apache_avro/) * [Feature flags](https://docs.rs/crate/apache-avro/latest/features "Browse available feature flags of apache-avro-0.21.0") * [docs.rs](https://docs.rs/apache-avro/latest/apache_avro/#) * [About docs.rs](https://docs.rs/about) * [Badges](https://docs.rs/about/badges) * [Builds](https://docs.rs/about/builds) * [Metadata](https://docs.rs/about/metadata) * [Shorthand URLs](https://docs.rs/about/redirections) * [Download](https://docs.rs/about/download) * [Rustdoc JSON](https://docs.rs/about/rustdoc-json) * [Build queue](https://docs.rs/releases/queue) * [Privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#docs.rs) * [Rust](https://docs.rs/apache-avro/latest/apache_avro/#) * [Rust website](https://www.rust-lang.org/) * [The Book](https://doc.rust-lang.org/book/) * [Standard Library API Reference](https://doc.rust-lang.org/std/) * [Rust by Example](https://doc.rust-lang.org/rust-by-example/) * [The Cargo Guide](https://doc.rust-lang.org/cargo/guide/) * [Clippy Documentation](https://doc.rust-lang.org/nightly/clippy) [Crate apache\_avro](https://docs.rs/apache-avro/latest/apache_avro/#) ----------------------------------------------------------------------- Crate apache\_avro Copy item path ================================= [Source](https://docs.rs/apache-avro/latest/src/apache_avro/lib.rs.html#18-1205) Expand description [![rust continuous integration](https://github.com/apache/avro-rs/actions/workflows/test-lang-rust-ci.yml/badge.svg)](https://github.com/apache/avro-rs/actions/workflows/test-lang-rust-ci.yml) [![rust clippy check](https://github.com/apache/avro-rs/actions/workflows/test-lang-rust-clippy.yml/badge.svg)](https://github.com/apache/avro-rs/actions/workflows/test-lang-rust-clippy.yml) [![rust security audit](https://github.com/apache/avro-rs/actions/workflows/test-lang-rust-audit.yml/badge.svg)](https://github.com/apache/avro-rs/actions/workflows/test-lang-rust-audit.yml) A library for working with [Apache Avro](https://avro.apache.org/) in Rust. Please check our [documentation](https://docs.rs/apache-avro) for examples, tutorials and API reference. **[Apache Avro](https://avro.apache.org/) ** is a data serialization system which provides rich data structures and a compact, fast, binary data format. All data in Avro is schematized, as in the following example: { "type": "record", "name": "test", "fields": [\ {"name": "a", "type": "long", "default": 42},\ {"name": "b", "type": "string"}\ ] } There are basically two ways of handling Avro data in Rust: * **as Avro-specialized data types** based on an Avro schema; * **as generic Rust serde-compatible types** implementing/deriving `Serialize` and `Deserialize`; **apache-avro** provides a way to read and write both these data representations easily and efficiently. [§](https://docs.rs/apache-avro/latest/apache_avro/#installing-the-library) Installing the library -------------------------------------------------------------------------------------------------- Add to your `Cargo.toml`: [dependencies] apache-avro = "x.y" Or in case you want to leverage the **Snappy** codec: [dependencies.apache-avro] version = "x.y" features = ["snappy"] Or in case you want to leverage the **Zstandard** codec: [dependencies.apache-avro] version = "x.y" features = ["zstandard"] Or in case you want to leverage the **Bzip2** codec: [dependencies.apache-avro] version = "x.y" features = ["bzip"] Or in case you want to leverage the **Xz** codec: [dependencies.apache-avro] version = "x.y" features = ["xz"] [§](https://docs.rs/apache-avro/latest/apache_avro/#upgrading-to-a-newer-minor-version) Upgrading to a newer minor version -------------------------------------------------------------------------------------------------------------------------- The library is still in beta, so there might be backward-incompatible changes between minor versions. If you have troubles upgrading, check the release notes. [§](https://docs.rs/apache-avro/latest/apache_avro/#minimum-supported-rust-version) Minimum supported Rust version ------------------------------------------------------------------------------------------------------------------ 1.85.0 [§](https://docs.rs/apache-avro/latest/apache_avro/#defining-a-schema) Defining a schema ---------------------------------------------------------------------------------------- An Avro data cannot exist without an Avro schema. Schemas **must** be used while writing and **can** be used while reading and they carry the information regarding the type of data we are handling. Avro schemas are used for both schema validation and resolution of Avro data. Avro schemas are defined in **JSON** format and can just be parsed out of a raw string: use apache_avro::Schema; let raw_schema = r#" { "type": "record", "name": "test", "fields": [\ {"name": "a", "type": "long", "default": 42},\ {"name": "b", "type": "string"}\ ] } "#; // if the schema is not valid, this function will return an error let schema = Schema::parse_str(raw_schema).unwrap(); // schemas can be printed for debugging println!("{:?}", schema); Additionally, a list of of definitions (which may depend on each other) can be given and all of them will be parsed into the corresponding schemas. use apache_avro::Schema; let raw_schema_1 = r#"{ "name": "A", "type": "record", "fields": [\ {"name": "field_one", "type": "float"}\ ] }"#; // This definition depends on the definition of A above let raw_schema_2 = r#"{ "name": "B", "type": "record", "fields": [\ {"name": "field_one", "type": "A"}\ ] }"#; // if the schemas are not valid, this function will return an error let schemas = Schema::parse_list(&[raw_schema_1, raw_schema_2]).unwrap(); // schemas can be printed for debugging println!("{:?}", schemas); _N.B._ It is important to note that the composition of schema definitions requires schemas with names. For this reason, only schemas of type Record, Enum, and Fixed should be input into this function. The library provides also a programmatic interface to define schemas without encoding them in JSON (for advanced use), but we highly recommend the JSON interface. Please read the API reference in case you are interested. For more information about schemas and what kind of information you can encapsulate in them, please refer to the appropriate section of the [Avro Specification](https://avro.apache.org/docs/current/specification/#schema-declaration) . [§](https://docs.rs/apache-avro/latest/apache_avro/#writing-data) Writing data ------------------------------------------------------------------------------ Once we have defined a schema, we are ready to serialize data in Avro, validating them against the provided schema in the process. As mentioned before, there are two ways of handling Avro data in Rust. **NOTE:** The library also provides a low-level interface for encoding a single datum in Avro bytecode without generating markers and headers (for advanced use), but we highly recommend the `Writer` interface to be totally Avro-compatible. Please read the API reference in case you are interested. ### [§](https://docs.rs/apache-avro/latest/apache_avro/#the-avro-way) The avro way Given that the schema we defined above is that of an Avro _Record_, we are going to use the associated type provided by the library to specify the data we want to serialize: use apache_avro::types::Record; use apache_avro::Writer; // a writer needs a schema and something to write to let mut writer = Writer::new(&schema, Vec::new()); // the Record type models our Record schema let mut record = Record::new(writer.schema()).unwrap(); record.put("a", 27i64); record.put("b", "foo"); // schema validation happens here writer.append(record).unwrap(); // this is how to get back the resulting avro bytecode // this performs a flush operation to make sure data has been written, so it can fail // you can also call `writer.flush()` yourself without consuming the writer let encoded = writer.into_inner().unwrap(); The vast majority of the times, schemas tend to define a record as a top-level container encapsulating all the values to convert as fields and providing documentation for them, but in case we want to directly define an Avro value, the library offers that capability via the `Value` interface. use apache_avro::types::Value; let mut value = Value::String("foo".to_string()); ### [§](https://docs.rs/apache-avro/latest/apache_avro/#the-serde-way) The serde way Given that the schema we defined above is an Avro _Record_, we can directly use a Rust struct deriving `Serialize` to model our data: use apache_avro::Writer; #[derive(Debug, Serialize)] struct Test { a: i64, b: String, } // a writer needs a schema and something to write to let mut writer = Writer::new(&schema, Vec::new()); // the structure models our Record schema let test = Test { a: 27, b: "foo".to_owned(), }; // schema validation happens here writer.append_ser(test).unwrap(); // this is how to get back the resulting avro bytecode // this performs a flush operation to make sure data is written, so it can fail // you can also call `writer.flush()` yourself without consuming the writer let encoded = writer.into_inner(); #### [§](https://docs.rs/apache-avro/latest/apache_avro/#importance-of-the-fields-order) Importance of the fields’ order _Important_: The order of the fields in the struct must match the order of the fields in the Avro schema! #### [§](https://docs.rs/apache-avro/latest/apache_avro/#simple-types) Simple types The vast majority of the times, schemas tend to define a record as a top-level container encapsulating all the values to convert as fields and providing documentation for them, but in case we want to directly define an Avro value, any type implementing `Serialize` should work. let value = "foo".to_string(); ### [§](https://docs.rs/apache-avro/latest/apache_avro/#using-codecs-to-compress-data) Using codecs to compress data Avro supports three different compression codecs when encoding data: * **Null**: leaves data uncompressed; * **Deflate**: writes the data block using the deflate algorithm as specified in RFC 1951, and typically implemented using the zlib library. Note that this format (unlike the “zlib format” in RFC 1950) does not have a checksum. * **Snappy**: uses Google’s [Snappy](http://google.github.io/snappy/) compression library. Each compressed block is followed by the 4-byte, big-endianCRC32 checksum of the uncompressed data in the block. You must enable the `snappy` feature to use this codec. * **Zstandard**: uses Facebook’s [Zstandard](https://facebook.github.io/zstd/) compression library. You must enable the `zstandard` feature to use this codec. * **Bzip2**: uses [BZip2](https://sourceware.org/bzip2/) compression library. You must enable the `bzip` feature to use this codec. * **Xz**: uses [liblzma](https://github.com/portable-network-archive/liblzma-rs) compression library. You must enable the `xz` feature to use this codec. To specify a codec to use to compress data, just specify it while creating a `Writer`: use apache_avro::{Codec, DeflateSettings, Schema, Writer}; let mut writer = Writer::with_codec(&schema, Vec::new(), Codec::Deflate(DeflateSettings::default())); [§](https://docs.rs/apache-avro/latest/apache_avro/#reading-data) Reading data ------------------------------------------------------------------------------ As far as reading Avro encoded data goes, we can just use the schema encoded with the data to read them. The library will do it automatically for us, as it already does for the compression codec: use apache_avro::Reader; // reader creation can fail in case the input to read from is not Avro-compatible or malformed let reader = Reader::new(&input[..]).unwrap(); In case, instead, we want to specify a different (but compatible) reader schema from the schema the data has been written with, we can just do as the following: use apache_avro::Schema; use apache_avro::Reader; let reader_raw_schema = r#" { "type": "record", "name": "test", "fields": [\ {"name": "a", "type": "long", "default": 42},\ {"name": "b", "type": "string"},\ {"name": "c", "type": "long", "default": 43}\ ] } "#; let reader_schema = Schema::parse_str(reader_raw_schema).unwrap(); // reader creation can fail in case the input to read from is not Avro-compatible or malformed let reader = Reader::with_schema(&reader_schema, &input[..]).unwrap(); The library will also automatically perform schema resolution while reading the data. For more information about schema compatibility and resolution, please refer to the [Avro Specification](https://avro.apache.org/docs/current/specification/#schema-declaration) . As usual, there are two ways to handle Avro data in Rust, as you can see below. **NOTE:** The library also provides a low-level interface for decoding a single datum in Avro bytecode without markers and header (for advanced use), but we highly recommend the `Reader` interface to leverage all Avro features. Please read the API reference in case you are interested. ### [§](https://docs.rs/apache-avro/latest/apache_avro/#the-avro-way-1) The avro way We can just read directly instances of `Value` out of the `Reader` iterator: use apache_avro::Reader; let reader = Reader::new(&input[..]).unwrap(); // value is a Result of an Avro Value in case the read operation fails for value in reader { println!("{:?}", value.unwrap()); } ### [§](https://docs.rs/apache-avro/latest/apache_avro/#the-serde-way-1) The serde way Alternatively, we can use a Rust type implementing `Deserialize` and representing our schema to read the data into: use apache_avro::Reader; use apache_avro::from_value; #[derive(Debug, Deserialize)] struct Test { a: i64, b: String, } let reader = Reader::new(&input[..]).unwrap(); // value is a Result in case the read operation fails for value in reader { println!("{:?}", from_value::(&value.unwrap())); } [§](https://docs.rs/apache-avro/latest/apache_avro/#putting-everything-together) Putting everything together ------------------------------------------------------------------------------------------------------------ The following is an example of how to combine everything showed so far and it is meant to be a quick reference of the library interface: use apache_avro::{Codec, DeflateSettings, Reader, Schema, Writer, from_value, types::Record, Error}; use serde::{Deserialize, Serialize}; #[derive(Debug, Deserialize, Serialize)] struct Test { a: i64, b: String, } fn main() -> Result<(), Error> { let raw_schema = r#" { "type": "record", "name": "test", "fields": [\ {"name": "a", "type": "long", "default": 42},\ {"name": "b", "type": "string"}\ ] } "#; let schema = Schema::parse_str(raw_schema)?; println!("{:?}", schema); let mut writer = Writer::with_codec(&schema, Vec::new(), Codec::Deflate(DeflateSettings::default())); let mut record = Record::new(writer.schema()).unwrap(); record.put("a", 27i64); record.put("b", "foo"); writer.append(record)?; let test = Test { a: 27, b: "foo".to_owned(), }; writer.append_ser(test)?; let input = writer.into_inner()?; let reader = Reader::with_schema(&schema, &input[..])?; for record in reader { println!("{:?}", from_value::(&record?)); } Ok(()) } `apache-avro` also supports the logical types listed in the [Avro specification](https://avro.apache.org/docs/current/specification/#logical-types) : 1. `Decimal` using the [`num_bigint`](https://docs.rs/num-bigint/latest/num_bigint) crate 2. UUID using the [`uuid`](https://docs.rs/uuid/latest/uuid) crate 3. Date, Time (milli) as `i32` and Time (micro) as `i64` 4. Timestamp (milli and micro) as `i64` 5. Local timestamp (milli and micro) as `i64` 6. Duration as a custom type with `months`, `days` and `millis` accessor methods each of which returns an `i32` Note that the on-disk representation is identical to the underlying primitive/complex type. #### [§](https://docs.rs/apache-avro/latest/apache_avro/#read-and-write-logical-types) Read and write logical types use apache_avro::{ types::Record, types::Value, Codec, Days, Decimal, DeflateSettings, Duration, Millis, Months, Reader, Schema, Writer, Error, }; use num_bigint::ToBigInt; fn main() -> Result<(), Error> { let raw_schema = r#" { "type": "record", "name": "test", "fields": [\ {\ "name": "decimal_fixed",\ "type": {\ "type": "fixed",\ "size": 2,\ "name": "decimal"\ },\ "logicalType": "decimal",\ "precision": 4,\ "scale": 2\ },\ {\ "name": "decimal_var",\ "type": "bytes",\ "logicalType": "decimal",\ "precision": 10,\ "scale": 3\ },\ {\ "name": "uuid",\ "type": "string",\ "logicalType": "uuid"\ },\ {\ "name": "date",\ "type": "int",\ "logicalType": "date"\ },\ {\ "name": "time_millis",\ "type": "int",\ "logicalType": "time-millis"\ },\ {\ "name": "time_micros",\ "type": "long",\ "logicalType": "time-micros"\ },\ {\ "name": "timestamp_millis",\ "type": "long",\ "logicalType": "timestamp-millis"\ },\ {\ "name": "timestamp_micros",\ "type": "long",\ "logicalType": "timestamp-micros"\ },\ {\ "name": "local_timestamp_millis",\ "type": "long",\ "logicalType": "local-timestamp-millis"\ },\ {\ "name": "local_timestamp_micros",\ "type": "long",\ "logicalType": "local-timestamp-micros"\ },\ {\ "name": "duration",\ "type": {\ "type": "fixed",\ "size": 12,\ "name": "duration"\ },\ "logicalType": "duration"\ }\ ] } "#; let schema = Schema::parse_str(raw_schema)?; println!("{:?}", schema); let mut writer = Writer::with_codec(&schema, Vec::new(), Codec::Deflate(DeflateSettings::default())); let mut record = Record::new(writer.schema()).unwrap(); record.put("decimal_fixed", Decimal::from(9936.to_bigint().unwrap().to_signed_bytes_be())); record.put("decimal_var", Decimal::from(((-32442).to_bigint().unwrap()).to_signed_bytes_be())); record.put("uuid", uuid::Uuid::parse_str("550e8400-e29b-41d4-a716-446655440000").unwrap()); record.put("date", Value::Date(1)); record.put("time_millis", Value::TimeMillis(2)); record.put("time_micros", Value::TimeMicros(3)); record.put("timestamp_millis", Value::TimestampMillis(4)); record.put("timestamp_micros", Value::TimestampMicros(5)); record.put("timestamp_nanos", Value::TimestampNanos(6)); record.put("local_timestamp_millis", Value::LocalTimestampMillis(4)); record.put("local_timestamp_micros", Value::LocalTimestampMicros(5)); record.put("local_timestamp_nanos", Value::LocalTimestampMicros(6)); record.put("duration", Duration::new(Months::new(6), Days::new(7), Millis::new(8))); writer.append(record)?; let input = writer.into_inner()?; let reader = Reader::with_schema(&schema, &input[..])?; for record in reader { println!("{:?}", record?); } Ok(()) } ### [§](https://docs.rs/apache-avro/latest/apache_avro/#calculate-avro-schema-fingerprint) Calculate Avro schema fingerprint This library supports calculating the following fingerprints: * SHA-256 * MD5 * Rabin An example of fingerprinting for the supported fingerprints: use apache_avro::rabin::Rabin; use apache_avro::{Schema, Error}; use md5::Md5; use sha2::Sha256; fn main() -> Result<(), Error> { let raw_schema = r#" { "type": "record", "name": "test", "fields": [\ {"name": "a", "type": "long", "default": 42},\ {"name": "b", "type": "string"}\ ] } "#; let schema = Schema::parse_str(raw_schema)?; println!("{}", schema.fingerprint::()); println!("{}", schema.fingerprint::()); println!("{}", schema.fingerprint::()); Ok(()) } ### [§](https://docs.rs/apache-avro/latest/apache_avro/#ill-formed-data) Ill-formed data In order to ease decoding, the Binary Encoding specification of Avro data requires some fields to have their length encoded alongside the data. If encoded data passed to a `Reader` has been ill-formed, it can happen that the bytes meant to contain the length of data are bogus and could result in extravagant memory allocation. To shield users from ill-formed data, `apache-avro` sets a limit (default: 512MB) to any allocation it will perform when decoding data. If you expect some of your data fields to be larger than this limit, be sure to make use of the `max_allocation_bytes` function before reading **any** data (we leverage Rust’s [`std::sync::Once`](https://doc.rust-lang.org/std/sync/struct.Once.html) mechanism to initialize this value, if any call to decode is made before a call to `max_allocation_bytes`, the limit will be 512MB throughout the lifetime of the program). use apache_avro::max_allocation_bytes; max_allocation_bytes(2 * 1024 * 1024 * 1024); // 2GB // ... happily decode large data ### [§](https://docs.rs/apache-avro/latest/apache_avro/#check-schemas-compatibility) Check schemas compatibility This library supports checking for schemas compatibility. Examples of checking for compatibility: 1. Compatible schemas Explanation: an int array schema can be read by a long array schema- an int (32bit signed integer) fits into a long (64bit signed integer) use apache_avro::{Schema, schema_compatibility::SchemaCompatibility}; let writers_schema = Schema::parse_str(r#"{"type": "array", "items":"int"}"#).unwrap(); let readers_schema = Schema::parse_str(r#"{"type": "array", "items":"long"}"#).unwrap(); assert!(SchemaCompatibility::can_read(&writers_schema, &readers_schema).is_ok()); 2. Incompatible schemas (a long array schema cannot be read by an int array schema) Explanation: a long array schema cannot be read by an int array schema- a long (64bit signed integer) does not fit into an int (32bit signed integer) use apache_avro::{Schema, schema_compatibility::SchemaCompatibility}; let writers_schema = Schema::parse_str(r#"{"type": "array", "items":"long"}"#).unwrap(); let readers_schema = Schema::parse_str(r#"{"type": "array", "items":"int"}"#).unwrap(); assert!(SchemaCompatibility::can_read(&writers_schema, &readers_schema).is_err()); ### [§](https://docs.rs/apache-avro/latest/apache_avro/#custom-names-validators) Custom names validators By default the library follows the rules by the [Avro specification](https://avro.apache.org/docs/1.11.1/specification/#names) ! Some of the other Apache Avro language SDKs are not that strict and allow more characters in names. For interoperability with those SDKs, the library provides a way to customize the names validation. use apache_avro::AvroResult; use apache_avro::schema::Namespace; use apache_avro::validator::{SchemaNameValidator, set_schema_name_validator}; struct MyCustomValidator; impl SchemaNameValidator for MyCustomValidator { fn validate(&self, name: &str) -> AvroResult<(String, Namespace)> { todo!() } } // don't parse any schema before registering the custom validator(s) ! set_schema_name_validator(Box::new(MyCustomValidator)); // ... use the library Similar logic could be applied to the schema namespace, enum symbols and field names validation. **Note**: the library allows to set a validator only once per the application lifetime! If the application parses schemas before setting a validator, the default validator will be registered and used! ### [§](https://docs.rs/apache-avro/latest/apache_avro/#custom-schema-equality-comparators) Custom schema equality comparators The library provides two implementations of schema equality comparators: 1. `SpecificationEq` - a comparator that serializes the schemas to their canonical forms (i.e. JSON) and compares them as strings. It is the only implementation until apache\_avro 0.16.0. See the [Avro specification](https://avro.apache.org/docs/1.11.1/specification/#parsing-canonical-form-for-schemas) for more information! 2. `StructFieldEq` - a comparator that compares the schemas structurally. It is faster than the `SpecificationEq` because it returns `false` as soon as a difference is found and is recommended for use! It is the default comparator since apache\_avro 0.17.0. To use a custom comparator, you need to implement the `SchemataEq` trait and set it using the `set_schemata_equality_comparator` function: use apache_avro::{AvroResult, Schema}; use apache_avro::schema::Namespace; use apache_avro::schema_equality::{SchemataEq, set_schemata_equality_comparator}; #[derive(Debug)] struct MyCustomSchemataEq; impl SchemataEq for MyCustomSchemataEq { fn compare(&self, schema_one: &Schema, schema_two: &Schema) -> bool { todo!() } } // don't parse any schema before registering the custom comparator ! set_schemata_equality_comparator(Box::new(MyCustomSchemataEq)); // ... use the library **Note**: the library allows to set a comparator only once per the application lifetime! If the application parses schemas before setting a comparator, the default comparator will be registered and used! ### [§](https://docs.rs/apache-avro/latest/apache_avro/#deserializing-avro-byte-arrays) Deserializing Avro Byte Arrays If using the Serde way to deserialize avro files, there are sometimes special derive statements that need to be applied in the case of byte arrays. use serde::{Deserialize, Serialize}; #[derive(Debug, Deserialize, Serialize)] struct SampleStruct { #[serde(with = "apache_avro::serde_avro_bytes")] non_optional_bytes: Vec, #[serde(with = "apache_avro::serde_avro_bytes_opt")] optional_bytes: Option>, #[serde(with = "apache_avro::serde_avro_fixed")] non_optional_fixed: [u8; 6], #[serde(with = "apache_avro::serde_avro_fixed_opt")] optional_fixed: Option<[u8; 6]>, } Here is a complete example of a serde round trip of a struct with a nullable byte array: use serde::{Deserialize, Serialize}; #[derive(Debug, Deserialize, PartialEq, Serialize)] struct ExampleByteArray { #[serde(with = "apache_avro::serde_avro_bytes_opt")] data_bytes: Option>, description: Option, } fn serde_byte_array() { let raw_schema = r#" { "type": "record", "name": "SimpleRecord", "fields": [\ {"name": "data_bytes", "type": ["null", "bytes"], "default": null},\ {"name": "description", "type": ["null", "string"], "default": null}\ ] }"#; let schema = apache_avro::Schema::parse_str(raw_schema).unwrap(); // Create vector of ExampleByteArray let records = vec![\ ExampleByteArray {\ data_bytes: Some(vec![1, 2, 3, 4, 5]),\ description: Some("First record".to_string()),\ },\ ExampleByteArray {\ data_bytes: None,\ description: Some("Second record".to_string()),\ },\ ExampleByteArray {\ data_bytes: Some(vec![10, 20, 30]),\ description: None,\ },\ ]; // Serialize records to Avro binary format with the schema let mut writer = apache_avro::Writer::new(&schema, Vec::new()); for record in &records { writer.append_ser(record).unwrap(); } let avro_data = writer.into_inner().unwrap(); // Deserialize Avro binary data back into ExampleByteArray structs let reader = apache_avro::Reader::new(&avro_data[..]).unwrap(); let deserialized_records: Vec = reader .map(|value| apache_avro::from_value::(&value.unwrap()).unwrap()) .collect(); assert_eq!(records, deserialized_records); } Full implementation and other options for things like fixed byte arrays can found in src/bytes.rs Re-exports[§](https://docs.rs/apache-avro/latest/apache_avro/#reexports) ------------------------------------------------------------------------- `pub use error::[Error](https://docs.rs/apache-avro/latest/apache_avro/error/struct.Error.html "struct apache_avro::error::Error") ;` `pub use schema::[AvroSchema](https://docs.rs/apache-avro/latest/apache_avro/schema/trait.AvroSchema.html "trait apache_avro::schema::AvroSchema") ;` `pub use schema::[Schema](https://docs.rs/apache-avro/latest/apache_avro/schema/enum.Schema.html "enum apache_avro::schema::Schema") ;` Modules[§](https://docs.rs/apache-avro/latest/apache_avro/#modules) -------------------------------------------------------------------- [error](https://docs.rs/apache-avro/latest/apache_avro/error/index.html "mod apache_avro::error") [headers](https://docs.rs/apache-avro/latest/apache_avro/headers/index.html "mod apache_avro::headers") Handling of Avro magic headers [rabin](https://docs.rs/apache-avro/latest/apache_avro/rabin/index.html "mod apache_avro::rabin") Implementation of the Rabin fingerprint algorithm [schema](https://docs.rs/apache-avro/latest/apache_avro/schema/index.html "mod apache_avro::schema") Logic for parsing and interacting with schemas in Avro format. [schema\_compatibility](https://docs.rs/apache-avro/latest/apache_avro/schema_compatibility/index.html "mod apache_avro::schema_compatibility") Logic for checking schema compatibility [schema\_equality](https://docs.rs/apache-avro/latest/apache_avro/schema_equality/index.html "mod apache_avro::schema_equality") [serde\_avro\_bytes](https://docs.rs/apache-avro/latest/apache_avro/serde_avro_bytes/index.html "mod apache_avro::serde_avro_bytes") Efficient (de)serialization of Avro bytes values. [serde\_avro\_bytes\_opt](https://docs.rs/apache-avro/latest/apache_avro/serde_avro_bytes_opt/index.html "mod apache_avro::serde_avro_bytes_opt") Efficient (de)serialization of optional Avro bytes values. [serde\_avro\_fixed](https://docs.rs/apache-avro/latest/apache_avro/serde_avro_fixed/index.html "mod apache_avro::serde_avro_fixed") Efficient (de)serialization of Avro fixed values. [serde\_avro\_fixed\_opt](https://docs.rs/apache-avro/latest/apache_avro/serde_avro_fixed_opt/index.html "mod apache_avro::serde_avro_fixed_opt") Efficient (de)serialization of optional Avro fixed values. [serde\_avro\_slice](https://docs.rs/apache-avro/latest/apache_avro/serde_avro_slice/index.html "mod apache_avro::serde_avro_slice") Efficient (de)serialization of Avro bytes/fixed borrowed values. [serde\_avro\_slice\_opt](https://docs.rs/apache-avro/latest/apache_avro/serde_avro_slice_opt/index.html "mod apache_avro::serde_avro_slice_opt") Efficient (de)serialization of optional Avro bytes/fixed borrowed values. [types](https://docs.rs/apache-avro/latest/apache_avro/types/index.html "mod apache_avro::types") Logic handling the intermediate representation of Avro values. [util](https://docs.rs/apache-avro/latest/apache_avro/util/index.html "mod apache_avro::util") Utility functions, like configuring various global settings. [validator](https://docs.rs/apache-avro/latest/apache_avro/validator/index.html "mod apache_avro::validator") Structs[§](https://docs.rs/apache-avro/latest/apache_avro/#structs) -------------------------------------------------------------------- [BigDecimal](https://docs.rs/apache-avro/latest/apache_avro/struct.BigDecimal.html "struct apache_avro::BigDecimal") A big decimal type. [Bzip2Settings](https://docs.rs/apache-avro/latest/apache_avro/struct.Bzip2Settings.html "struct apache_avro::Bzip2Settings") [Days](https://docs.rs/apache-avro/latest/apache_avro/struct.Days.html "struct apache_avro::Days") [Decimal](https://docs.rs/apache-avro/latest/apache_avro/struct.Decimal.html "struct apache_avro::Decimal") [DeflateSettings](https://docs.rs/apache-avro/latest/apache_avro/struct.DeflateSettings.html "struct apache_avro::DeflateSettings") Settings for the `Deflate` codec. [Duration](https://docs.rs/apache-avro/latest/apache_avro/struct.Duration.html "struct apache_avro::Duration") A struct representing duration that hides the details of endianness and conversion between platform-native u32 and byte arrays. [GenericSingleObjectReader](https://docs.rs/apache-avro/latest/apache_avro/struct.GenericSingleObjectReader.html "struct apache_avro::GenericSingleObjectReader") [GenericSingleObjectWriter](https://docs.rs/apache-avro/latest/apache_avro/struct.GenericSingleObjectWriter.html "struct apache_avro::GenericSingleObjectWriter") Writer that encodes messages according to the single object encoding v1 spec Uses an API similar to the current File Writer Writes all object bytes at once, and drains internal buffer [Millis](https://docs.rs/apache-avro/latest/apache_avro/struct.Millis.html "struct apache_avro::Millis") [Months](https://docs.rs/apache-avro/latest/apache_avro/struct.Months.html "struct apache_avro::Months") [Reader](https://docs.rs/apache-avro/latest/apache_avro/struct.Reader.html "struct apache_avro::Reader") Main interface for reading Avro formatted values. [SpecificSingleObjectReader](https://docs.rs/apache-avro/latest/apache_avro/struct.SpecificSingleObjectReader.html "struct apache_avro::SpecificSingleObjectReader") [SpecificSingleObjectWriter](https://docs.rs/apache-avro/latest/apache_avro/struct.SpecificSingleObjectWriter.html "struct apache_avro::SpecificSingleObjectWriter") Writer that encodes messages according to the single object encoding v1 spec [Uuid](https://docs.rs/apache-avro/latest/apache_avro/struct.Uuid.html "struct apache_avro::Uuid") A Universally Unique Identifier (UUID). [Writer](https://docs.rs/apache-avro/latest/apache_avro/struct.Writer.html "struct apache_avro::Writer") Main interface for writing Avro formatted values. [WriterBuilder](https://docs.rs/apache-avro/latest/apache_avro/struct.WriterBuilder.html "struct apache_avro::WriterBuilder") Use builder syntax to set the inputs and finish with [`build()`](https://docs.rs/apache-avro/latest/apache_avro/struct.WriterBuilder.html#method.build "method apache_avro::WriterBuilder::build") . [XzSettings](https://docs.rs/apache-avro/latest/apache_avro/struct.XzSettings.html "struct apache_avro::XzSettings") [ZstandardSettings](https://docs.rs/apache-avro/latest/apache_avro/struct.ZstandardSettings.html "struct apache_avro::ZstandardSettings") Enums[§](https://docs.rs/apache-avro/latest/apache_avro/#enums) ---------------------------------------------------------------- [Codec](https://docs.rs/apache-avro/latest/apache_avro/enum.Codec.html "enum apache_avro::Codec") The compression codec used to compress blocks. Functions[§](https://docs.rs/apache-avro/latest/apache_avro/#functions) ------------------------------------------------------------------------ [from\_avro\_datum](https://docs.rs/apache-avro/latest/apache_avro/fn.from_avro_datum.html "fn apache_avro::from_avro_datum") Decode a `Value` encoded in Avro format given its `Schema` and anything implementing `io::Read` to read from. [from\_avro\_datum\_reader\_schemata](https://docs.rs/apache-avro/latest/apache_avro/fn.from_avro_datum_reader_schemata.html "fn apache_avro::from_avro_datum_reader_schemata") Decode a `Value` encoded in Avro format given the provided `Schema` and anything implementing `io::Read` to read from. If the writer schema is incomplete, i.e. contains `Schema::Ref`s then it will use the provided schemata to resolve any dependencies. [from\_avro\_datum\_schemata](https://docs.rs/apache-avro/latest/apache_avro/fn.from_avro_datum_schemata.html "fn apache_avro::from_avro_datum_schemata") Decode a `Value` encoded in Avro format given the provided `Schema` and anything implementing `io::Read` to read from. If the writer schema is incomplete, i.e. contains `Schema::Ref`s then it will use the provided schemata to resolve any dependencies. [from\_value](https://docs.rs/apache-avro/latest/apache_avro/fn.from_value.html "fn apache_avro::from_value") Interpret a `Value` as an instance of type `D`. [max\_allocation\_bytes](https://docs.rs/apache-avro/latest/apache_avro/fn.max_allocation_bytes.html "fn apache_avro::max_allocation_bytes") Deprecated Set the maximum number of bytes that can be allocated when decoding data. [read\_marker](https://docs.rs/apache-avro/latest/apache_avro/fn.read_marker.html "fn apache_avro::read_marker") Reads the marker bytes from Avro bytes generated earlier by a `Writer` [set\_serde\_human\_readable](https://docs.rs/apache-avro/latest/apache_avro/fn.set_serde_human_readable.html "fn apache_avro::set_serde_human_readable") Deprecated Set whether the serializer and deserializer should indicate to types that the format is human-readable. [to\_avro\_datum](https://docs.rs/apache-avro/latest/apache_avro/fn.to_avro_datum.html "fn apache_avro::to_avro_datum") Encode a compatible value (implementing the `ToAvro` trait) into Avro format, also performing schema validation. [to\_avro\_datum\_schemata](https://docs.rs/apache-avro/latest/apache_avro/fn.to_avro_datum_schemata.html "fn apache_avro::to_avro_datum_schemata") Encode a compatible value (implementing the `ToAvro` trait) into Avro format, also performing schema validation. If the provided `schema` is incomplete then its dependencies must be provided in `schemata` [to\_value](https://docs.rs/apache-avro/latest/apache_avro/fn.to_value.html "fn apache_avro::to_value") Interpret a serializeable instance as a `Value`. [write\_avro\_datum\_ref](https://docs.rs/apache-avro/latest/apache_avro/fn.write_avro_datum_ref.html "fn apache_avro::write_avro_datum_ref") Write the referenced [Serialize](https://docs.rs/serde_core/1.0.228/x86_64-unknown-linux-gnu/serde_core/ser/trait.Serialize.html "trait serde_core::ser::Serialize") able object to the provided [Write](https://doc.rust-lang.org/nightly/std/io/trait.Write.html "trait std::io::Write") object. Returns a result with the number of bytes written. Type Aliases[§](https://docs.rs/apache-avro/latest/apache_avro/#types) ----------------------------------------------------------------------- [AvroResult](https://docs.rs/apache-avro/latest/apache_avro/type.AvroResult.html "type apache_avro::AvroResult") A convenience type alias for `Result`s with `Error`s. Derive Macros[§](https://docs.rs/apache-avro/latest/apache_avro/#derives) -------------------------------------------------------------------------- [AvroSchema](https://docs.rs/apache-avro/latest/apache_avro/derive.AvroSchema.html "derive apache_avro::AvroSchema") --- # clap - Rust [Docs.rs](https://docs.rs/) * [clap-4.6.0](https://docs.rs/clap/latest/clap/# "A simple to use, efficient, and full-featured Command Line Argument Parser") * clap 4.6.0 * [Permalink](https://docs.rs/clap/4.6.0/clap/ "Get a link to this specific version") * [Docs.rs crate page](https://docs.rs/crate/clap/latest "See clap in docs.rs") * [MIT](https://spdx.org/licenses/MIT) OR [Apache-2.0](https://spdx.org/licenses/Apache-2.0) * Links * [Repository](https://github.com/clap-rs/clap) * [crates.io](https://crates.io/crates/clap "See clap in crates.io") * [Source](https://docs.rs/crate/clap/latest/source/ "Browse source of clap-4.6.0") * Owners * [kbknapp](https://crates.io/users/kbknapp) * [github:clap-rs:admins](https://crates.io/teams/github:clap-rs:admins) * [github:rust-cli:maintainers](https://crates.io/teams/github:rust-cli:maintainers) * Dependencies * * [clap\_builder =4.6.0 _normal_](https://docs.rs/clap_builder/=4.6.0/) * [clap\_derive =4.6.0 _normal_ _optional_](https://docs.rs/clap_derive/=4.6.0/) * [automod ^1.0.16 _dev_](https://docs.rs/automod/^1.0.16/) * [clap-cargo ^0.15.2 _dev_](https://docs.rs/clap-cargo/^0.15.2/) * [jiff ^0.2.23 _dev_](https://docs.rs/jiff/^0.2.23/) * [rustversion ^1.0.22 _dev_](https://docs.rs/rustversion/^1.0.22/) * [semver ^1.0.27 _dev_](https://docs.rs/semver/^1.0.27/) * [shlex ^1.3.0 _dev_](https://docs.rs/shlex/^1.3.0/) * [snapbox ^1.1.0 _dev_](https://docs.rs/snapbox/^1.1.0/) * [trybuild ^1.0.116 _dev_](https://docs.rs/trybuild/^1.0.116/) * [trycmd ^1.1.1 _dev_](https://docs.rs/trycmd/^1.1.1/) * Versions * [**48.61%** of the crate is documented](https://docs.rs/crate/clap/latest) * [Platform](https://docs.rs/clap/latest/clap/#) * [aarch64-apple-darwin](https://docs.rs/crate/clap/latest/target-redirect/aarch64-apple-darwin/clap/) * [aarch64-unknown-linux-gnu](https://docs.rs/crate/clap/latest/target-redirect/aarch64-unknown-linux-gnu/clap/) * [i686-pc-windows-msvc](https://docs.rs/crate/clap/latest/target-redirect/i686-pc-windows-msvc/clap/) * [x86\_64-pc-windows-msvc](https://docs.rs/crate/clap/latest/target-redirect/x86_64-pc-windows-msvc/clap/) * [x86\_64-unknown-linux-gnu](https://docs.rs/crate/clap/latest/target-redirect/clap/) * [Feature flags](https://docs.rs/crate/clap/latest/features "Browse available feature flags of clap-4.6.0") * [docs.rs](https://docs.rs/clap/latest/clap/#) * [About docs.rs](https://docs.rs/about) * [Badges](https://docs.rs/about/badges) * [Builds](https://docs.rs/about/builds) * [Metadata](https://docs.rs/about/metadata) * [Shorthand URLs](https://docs.rs/about/redirections) * [Download](https://docs.rs/about/download) * [Rustdoc JSON](https://docs.rs/about/rustdoc-json) * [Build queue](https://docs.rs/releases/queue) * [Privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#docs.rs) * [Rust](https://docs.rs/clap/latest/clap/#) * [Rust website](https://www.rust-lang.org/) * [The Book](https://doc.rust-lang.org/book/) * [Standard Library API Reference](https://doc.rust-lang.org/std/) * [Rust by Example](https://doc.rust-lang.org/rust-by-example/) * [The Cargo Guide](https://doc.rust-lang.org/cargo/guide/) * [Clippy Documentation](https://doc.rust-lang.org/nightly/clippy) [Skip to main content](https://docs.rs/clap/latest/clap/#main-content) [Crate clap](https://docs.rs/clap/latest/clap/#) ------------------------------------------------- Crate clap Copy item path ========================= [Source](https://docs.rs/clap/latest/src/clap/lib.rs.html#6-110) Expand description > **Command Line Argument Parser for Rust** Quick Links: * Derive [tutorial](https://docs.rs/clap/latest/clap/_derive/_tutorial/index.html "mod clap::_derive::_tutorial") and [reference](https://docs.rs/clap/latest/clap/_derive/index.html "mod clap::_derive") * Builder [tutorial](https://docs.rs/clap/latest/clap/_tutorial/index.html "mod clap::_tutorial") and [reference](https://docs.rs/clap/latest/clap/struct.Command.html "struct clap::Command") * [Cookbook](https://docs.rs/clap/latest/clap/_cookbook/index.html "mod clap::_cookbook") * [CLI Concepts](https://docs.rs/clap/latest/clap/_concepts/index.html "mod clap::_concepts") * [FAQ](https://docs.rs/clap/latest/clap/_faq/index.html "mod clap::_faq") * [Discussions](https://github.com/clap-rs/clap/discussions) * [CHANGELOG](https://github.com/clap-rs/clap/blob/v4.6.0/CHANGELOG.md) (includes major version migration guides) ### [§](https://docs.rs/clap/latest/clap/#aspirations) Aspirations * Out of the box, users get a polished CLI experience * Including common argument behavior, help generation, suggested fixes for users, colored output, [shell completions](https://github.com/clap-rs/clap/tree/master/clap_complete) , etc * Flexible enough to port your existing CLI interface * However, we won’t necessarily streamline support for each use case * Reasonable parse performance * Resilient maintainership, including * Willing to break compatibility rather than batching up breaking changes in large releases * Leverage feature flags to keep to one active branch * Being under [WG-CLI](https://github.com/rust-cli/team/) to increase the bus factor * We follow semver and will wait about 6-9 months between major breaking changes * We will support the last two minor Rust releases (MSRV, currently 1.74) While these aspirations can be at odds with fast build times and low binary size, we will still strive to keep these reasonable for the flexibility you get. Check out the [argparse-benchmarks](https://github.com/rust-cli/argparse-benchmarks-rs) for CLI parsers optimized for other use cases. ### [§](https://docs.rs/clap/latest/clap/#example) Example Run $ cargo add clap --features derive _(See also [feature flag reference](https://docs.rs/clap/latest/clap/_features/index.html "mod clap::_features") )_ Then define your CLI in `main.rs`: use clap::Parser; /// Simple program to greet a person #[derive(Parser, Debug)] #[command(version, about, long_about = None)] struct Args { /// Name of the person to greet #[arg(short, long)] name: String, /// Number of times to greet #[arg(short, long, default_value_t = 1)] count: u8, } fn main() { let args = Args::parse(); for _ in 0..args.count { println!("Hello {}!", args.name); } } And try it out: $ demo --help A simple to use, efficient, and full-featured Command Line Argument Parser Usage: demo[EXE] [OPTIONS] --name Options: -n, --name Name of the person to greet -c, --count Number of times to greet [default: 1] -h, --help Print help -V, --version Print version $ demo --name Me Hello Me! _(version number and `.exe` extension on windows replaced by placeholders)_ See also the derive [tutorial](https://docs.rs/clap/latest/clap/_derive/_tutorial/index.html "mod clap::_derive::_tutorial") and [reference](https://docs.rs/clap/latest/clap/_derive/index.html "mod clap::_derive") #### [§](https://docs.rs/clap/latest/clap/#related-projects) Related Projects Augment clap: * [wild](https://crates.io/crates/wild) for supporting wildcards (`*`) on Windows like you do Linux * [argfile](https://crates.io/crates/argfile) for loading additional arguments from a file (aka response files) * [shadow-rs](https://crates.io/crates/shadow-rs) for generating `Command::long_version` * [clap\_mangen](https://crates.io/crates/clap_mangen) for generating man page source (roff) * [clap\_complete](https://crates.io/crates/clap_complete) for shell completion support * [clap-i18n-richformatter](https://crates.io/crates/clap-i18n-richformatter) for i18n support with `clap::error::RichFormatter` CLI Helpers * [clio](https://crates.io/crates/clio) for reading/writing to files specified as arguments * [clap-verbosity-flag](https://crates.io/crates/clap-verbosity-flag) * [clap-cargo](https://crates.io/crates/clap-cargo) * [colorchoice-clap](https://crates.io/crates/colorchoice-clap) Testing * [`trycmd`](https://crates.io/crates/trycmd) : Bulk snapshot testing * [`snapbox`](https://crates.io/crates/snapbox) : Specialized snapshot testing * [`assert_cmd`](https://crates.io/crates/assert_cmd) and [`assert_fs`](https://crates.io/crates/assert_fs) : Customized testing Documentation: * [Command-line Apps for Rust](https://rust-cli.github.io/book/index.html) book Modules[§](https://docs.rs/clap/latest/clap/#modules) ------------------------------------------------------ [\_concepts](https://docs.rs/clap/latest/clap/_concepts/index.html "mod clap::_concepts") `unstable-doc` CLI Concepts [\_cookbook](https://docs.rs/clap/latest/clap/_cookbook/index.html "mod clap::_cookbook") `unstable-doc` Documentation: Cookbook [\_derive](https://docs.rs/clap/latest/clap/_derive/index.html "mod clap::_derive") `unstable-doc` Documentation: Derive Reference [\_faq](https://docs.rs/clap/latest/clap/_faq/index.html "mod clap::_faq") `unstable-doc` Documentation: FAQ [\_features](https://docs.rs/clap/latest/clap/_features/index.html "mod clap::_features") `unstable-doc` Documentation: Feature Flags [\_tutorial](https://docs.rs/clap/latest/clap/_tutorial/index.html "mod clap::_tutorial") `unstable-doc` Tutorial for the Builder API [builder](https://docs.rs/clap/latest/clap/builder/index.html "mod clap::builder") Define [`Command`](https://docs.rs/clap/latest/clap/struct.Command.html "struct clap::Command") line [arguments](https://docs.rs/clap/latest/clap/struct.Arg.html "struct clap::Arg") [error](https://docs.rs/clap/latest/clap/error/index.html "mod clap::error") Error reporting [parser](https://docs.rs/clap/latest/clap/parser/index.html "mod clap::parser") [`Command`](https://docs.rs/clap/latest/clap/struct.Command.html "struct clap::Command") line argument parser Macros[§](https://docs.rs/clap/latest/clap/#macros) ---------------------------------------------------- [arg](https://docs.rs/clap/latest/clap/macro.arg.html "macro clap::arg") Create an [`Arg`](https://docs.rs/clap/latest/clap/struct.Arg.html "struct clap::Arg") from a usage string. [command](https://docs.rs/clap/latest/clap/macro.command.html "macro clap::command") `cargo` Allows you to build the `Command` instance from your Cargo.toml at compile time. [crate\_authors](https://docs.rs/clap/latest/clap/macro.crate_authors.html "macro clap::crate_authors") `cargo` Allows you to pull the authors for the command from your Cargo.toml at compile time in the form: `"author1 lastname :author2 lastname "` [crate\_description](https://docs.rs/clap/latest/clap/macro.crate_description.html "macro clap::crate_description") `cargo` Allows you to pull the description from your Cargo.toml at compile time. [crate\_name](https://docs.rs/clap/latest/clap/macro.crate_name.html "macro clap::crate_name") `cargo` Allows you to pull the name from your Cargo.toml at compile time. [crate\_version](https://docs.rs/clap/latest/clap/macro.crate_version.html "macro clap::crate_version") `cargo` Allows you to pull the version from your Cargo.toml at compile time as `MAJOR.MINOR.PATCH_PKGVERSION_PRE` [value\_parser](https://docs.rs/clap/latest/clap/macro.value_parser.html "macro clap::value_parser") Select a [`ValueParser`](https://docs.rs/clap/latest/clap/builder/struct.ValueParser.html "struct clap::builder::ValueParser") implementation from the intended type Structs[§](https://docs.rs/clap/latest/clap/#structs) ------------------------------------------------------ [Arg](https://docs.rs/clap/latest/clap/struct.Arg.html "struct clap::Arg") The abstract representation of a command line argument. Used to set all the options and relationships that define a valid argument for the program. [ArgGroup](https://docs.rs/clap/latest/clap/struct.ArgGroup.html "struct clap::ArgGroup") Specifies a logical group of [arguments](https://docs.rs/clap/latest/clap/struct.Arg.html "struct clap::Arg") [ArgMatches](https://docs.rs/clap/latest/clap/struct.ArgMatches.html "struct clap::ArgMatches") Container for parse results. [Command](https://docs.rs/clap/latest/clap/struct.Command.html "struct clap::Command") Build a command-line interface. [Id](https://docs.rs/clap/latest/clap/struct.Id.html "struct clap::Id") [`Arg`](https://docs.rs/clap/latest/clap/struct.Arg.html "struct clap::Arg") or [`ArgGroup`](https://docs.rs/clap/latest/clap/struct.ArgGroup.html "struct clap::ArgGroup") identifier Enums[§](https://docs.rs/clap/latest/clap/#enums) -------------------------------------------------- [ArgAction](https://docs.rs/clap/latest/clap/enum.ArgAction.html "enum clap::ArgAction") Behavior of arguments when they are encountered while parsing [ColorChoice](https://docs.rs/clap/latest/clap/enum.ColorChoice.html "enum clap::ColorChoice") Represents the color preferences for program output [ValueHint](https://docs.rs/clap/latest/clap/enum.ValueHint.html "enum clap::ValueHint") Provide shell with hint on how to complete an argument. Traits[§](https://docs.rs/clap/latest/clap/#traits) ---------------------------------------------------- [Args](https://docs.rs/clap/latest/clap/trait.Args.html "trait clap::Args") Parse a set of arguments into a user-defined container. [CommandFactory](https://docs.rs/clap/latest/clap/trait.CommandFactory.html "trait clap::CommandFactory") Create a [`Command`](https://docs.rs/clap/latest/clap/struct.Command.html "struct clap::Command") relevant for a user-defined container. [FromArgMatches](https://docs.rs/clap/latest/clap/trait.FromArgMatches.html "trait clap::FromArgMatches") Converts an instance of [`ArgMatches`](https://docs.rs/clap/latest/clap/struct.ArgMatches.html "struct clap::ArgMatches") to a user-defined container. [Parser](https://docs.rs/clap/latest/clap/trait.Parser.html "trait clap::Parser") Parse command-line arguments into `Self`. [Subcommand](https://docs.rs/clap/latest/clap/trait.Subcommand.html "trait clap::Subcommand") Parse a sub-command into a user-defined enum. [ValueEnum](https://docs.rs/clap/latest/clap/trait.ValueEnum.html "trait clap::ValueEnum") Parse arguments into enums. Type Aliases[§](https://docs.rs/clap/latest/clap/#types) --------------------------------------------------------- [Error](https://docs.rs/clap/latest/clap/type.Error.html "type clap::Error") Command Line Argument Parser Error --- # Mmap in memmap2 - Rust [Docs.rs](https://docs.rs/) * [memmap2-0.9.10](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html# "Cross-platform Rust API for memory-mapped file IO") * memmap2 0.9.10 * [Docs.rs crate page](https://docs.rs/crate/memmap2/0.9.10 "See memmap2 in docs.rs") * [MIT](https://spdx.org/licenses/MIT) OR [Apache-2.0](https://spdx.org/licenses/Apache-2.0) * Links * [Repository](https://github.com/RazrFalcon/memmap2-rs) * [crates.io](https://crates.io/crates/memmap2 "See memmap2 in crates.io") * [Source](https://docs.rs/crate/memmap2/0.9.10/source/ "Browse source of memmap2-0.9.10") * Owners * [tbu-](https://crates.io/users/tbu-) * [RazrFalcon](https://crates.io/users/RazrFalcon) * [de-vri-es](https://crates.io/users/de-vri-es) * [allan2](https://crates.io/users/allan2) * Dependencies * * [stable\_deref\_trait ^1.0 _normal_ _optional_](https://docs.rs/stable_deref_trait/^1.0/) * [owning\_ref ^0.4.1 _dev_](https://docs.rs/owning_ref/^0.4.1/) * [tempfile ^3 _dev_](https://docs.rs/tempfile/^3/) * [libc ^0.2.151 _normal_](https://docs.rs/libc/^0.2.151/) * Versions * [**96.47%** of the crate is documented](https://docs.rs/crate/memmap2/0.9.10) * [Platform](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#) * [aarch64-apple-darwin](https://docs.rs/crate/memmap2/0.9.10/target-redirect/aarch64-apple-darwin/memmap2/struct.Mmap.html) * [aarch64-unknown-linux-gnu](https://docs.rs/crate/memmap2/0.9.10/target-redirect/aarch64-unknown-linux-gnu/memmap2/struct.Mmap.html) * [i686-pc-windows-msvc](https://docs.rs/crate/memmap2/0.9.10/target-redirect/i686-pc-windows-msvc/memmap2/struct.Mmap.html) * [x86\_64-pc-windows-msvc](https://docs.rs/crate/memmap2/0.9.10/target-redirect/x86_64-pc-windows-msvc/memmap2/struct.Mmap.html) * [x86\_64-unknown-linux-gnu](https://docs.rs/crate/memmap2/0.9.10/target-redirect/memmap2/struct.Mmap.html) * [Feature flags](https://docs.rs/crate/memmap2/0.9.10/features "Browse available feature flags of memmap2-0.9.10") * [docs.rs](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#) * [About docs.rs](https://docs.rs/about) * [Badges](https://docs.rs/about/badges) * [Builds](https://docs.rs/about/builds) * [Metadata](https://docs.rs/about/metadata) * [Shorthand URLs](https://docs.rs/about/redirections) * [Download](https://docs.rs/about/download) * [Rustdoc JSON](https://docs.rs/about/rustdoc-json) * [Build queue](https://docs.rs/releases/queue) * [Privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#docs.rs) * [Rust](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#) * [Rust website](https://www.rust-lang.org/) * [The Book](https://doc.rust-lang.org/book/) * [Standard Library API Reference](https://doc.rust-lang.org/std/) * [Rust by Example](https://doc.rust-lang.org/rust-by-example/) * [The Cargo Guide](https://doc.rust-lang.org/cargo/guide/) * [Clippy Documentation](https://doc.rust-lang.org/nightly/clippy) [Skip to main content](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#main-content) [Mmap](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#) ----------------------------------------------------------------- [memmap2](https://docs.rs/memmap2/0.9.10/memmap2/index.html) Struct Mmap Copy item path ========================== [Source](https://docs.rs/memmap2/0.9.10/src/memmap2/lib.rs.html#721-723) pub struct Mmap { /* private fields */ } Expand description A handle to an immutable memory mapped buffer. A `Mmap` may be backed by a file, or it can be anonymous map, backed by volatile memory. Use [`MmapOptions`](https://docs.rs/memmap2/0.9.10/memmap2/struct.MmapOptions.html "struct memmap2::MmapOptions") or [`map()`](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#method.map "associated function memmap2::Mmap::map") to create a file-backed memory map. To create an immutable anonymous memory map, first create a mutable anonymous memory map, and then make it immutable with [`MmapMut::make_read_only()`](https://docs.rs/memmap2/0.9.10/memmap2/struct.MmapMut.html#method.make_read_only "method memmap2::MmapMut::make_read_only") . A file backed `Mmap` is created by `&File` reference, and will remain valid even after the `File` is dropped. In other words, the `Mmap` handle is completely independent of the `File` used to create it. For consistency, on some platforms this is achieved by duplicating the underlying file handle. The memory will be unmapped when the `Mmap` handle is dropped. Dereferencing and accessing the bytes of the buffer may result in page faults (e.g. swapping the mapped pages into physical memory) though the details of this are platform specific. `Mmap` is [`Sync`](https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html "trait core::marker::Sync") and [`Send`](https://doc.rust-lang.org/nightly/core/marker/trait.Send.html "trait core::marker::Send") . See [`MmapMut`](https://docs.rs/memmap2/0.9.10/memmap2/struct.MmapMut.html "struct memmap2::MmapMut") for the mutable version. ### [§](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#safety) Safety All file-backed memory map constructors are marked `unsafe` because of the potential for _Undefined Behavior_ (UB) using the map if the underlying file is subsequently modified, in or out of process. Applications must consider the risk and take appropriate precautions when using file-backed maps. Solutions such as file permissions, locks or process-private (e.g. unlinked) files exist but are platform specific and limited. ### [§](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#example) Example use memmap2::MmapOptions; use std::io::Write; use std::fs::File; let file = File::open("README.md")?; let mmap = unsafe { MmapOptions::new().map(&file)? }; assert_eq!(b"# memmap2", &mmap[0..9]); Implementations[§](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#implementations) -------------------------------------------------------------------------------------------- [Source](https://docs.rs/memmap2/0.9.10/src/memmap2/lib.rs.html#725-893) [§](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#impl-Mmap) ### impl [Mmap](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html "struct memmap2::Mmap") [Source](https://docs.rs/memmap2/0.9.10/src/memmap2/lib.rs.html#761-763) #### pub unsafe fn [map](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#method.map) (file: T) -> [Result](https://doc.rust-lang.org/nightly/std/io/error/type.Result.html "type std::io::error::Result") <[Mmap](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html "struct memmap2::Mmap") \> Creates a read-only memory map backed by a file. This is equivalent to calling `MmapOptions::new().map(file)`. ##### [§](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#safety-1) Safety See the [type-level](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html "struct memmap2::Mmap") docs for why this function is unsafe. ##### [§](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#errors) Errors This method returns an error when the underlying system call fails, which can happen for a variety of reasons, such as when the file is not open with read permissions. Returns [`ErrorKind::Unsupported`](https://doc.rust-lang.org/nightly/std/io/error/enum.ErrorKind.html#variant.Unsupported "variant std::io::error::ErrorKind::Unsupported") on unsupported platforms. ##### [§](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#example-1) Example use std::fs::File; use std::io::Read; use memmap2::Mmap; let mut file = File::open("LICENSE-APACHE")?; let mut contents = Vec::new(); file.read_to_end(&mut contents)?; let mmap = unsafe { Mmap::map(&file)? }; assert_eq!(&contents[..], &mmap[..]); [Source](https://docs.rs/memmap2/0.9.10/src/memmap2/lib.rs.html#800-803) #### pub fn [make\_mut](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#method.make_mut) (self) -> [Result](https://doc.rust-lang.org/nightly/std/io/error/type.Result.html "type std::io::error::Result") <[MmapMut](https://docs.rs/memmap2/0.9.10/memmap2/struct.MmapMut.html "struct memmap2::MmapMut") \> Transition the memory map to be writable. If the memory map is file-backed, the file must have been opened with write permissions. ##### [§](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#errors-1) Errors This method returns an error when the underlying system call fails, which can happen for a variety of reasons, such as when the file is not open with writable permissions. ##### [§](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#example-2) Example use memmap2::Mmap; use std::ops::DerefMut; use std::io::Write; let file = /* file opened with write permissions */ let mmap = unsafe { Mmap::map(&file)? }; // ... use the read-only memory map ... let mut mut_mmap = mmap.make_mut()?; mut_mmap.deref_mut().write_all(b"hello, world!")?; [Source](https://docs.rs/memmap2/0.9.10/src/memmap2/lib.rs.html#811-814) #### pub fn [advise](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#method.advise) (&self, advice: [Advice](https://docs.rs/memmap2/0.9.10/memmap2/enum.Advice.html "enum memmap2::Advice") ) -> [Result](https://doc.rust-lang.org/nightly/std/io/error/type.Result.html "type std::io::error::Result") <[()](https://doc.rust-lang.org/nightly/std/primitive.unit.html) \> Advise OS how this memory map will be accessed. Only supported on Unix. See [madvise()](https://man7.org/linux/man-pages/man2/madvise.2.html) map page. [Source](https://docs.rs/memmap2/0.9.10/src/memmap2/lib.rs.html#822-825) #### pub unsafe fn [unchecked\_advise](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#method.unchecked_advise) (&self, advice: [UncheckedAdvice](https://docs.rs/memmap2/0.9.10/memmap2/enum.UncheckedAdvice.html "enum memmap2::UncheckedAdvice") ) -> [Result](https://doc.rust-lang.org/nightly/std/io/error/type.Result.html "type std::io::error::Result") <[()](https://doc.rust-lang.org/nightly/std/primitive.unit.html) \> Advise OS how this memory map will be accessed. Used with the [unchecked flags](https://docs.rs/memmap2/0.9.10/memmap2/enum.UncheckedAdvice.html "enum memmap2::UncheckedAdvice") . Only supported on Unix. See [madvise()](https://man7.org/linux/man-pages/man2/madvise.2.html) map page. [Source](https://docs.rs/memmap2/0.9.10/src/memmap2/lib.rs.html#835-837) #### pub fn [advise\_range](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#method.advise_range) ( &self, advice: [Advice](https://docs.rs/memmap2/0.9.10/memmap2/enum.Advice.html "enum memmap2::Advice") , offset: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) , len: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) , ) -> [Result](https://doc.rust-lang.org/nightly/std/io/error/type.Result.html "type std::io::error::Result") <[()](https://doc.rust-lang.org/nightly/std/primitive.unit.html) \> Advise OS how this range of memory map will be accessed. Only supported on Unix. The offset and length must be in the bounds of the memory map. See [madvise()](https://man7.org/linux/man-pages/man2/madvise.2.html) map page. [Source](https://docs.rs/memmap2/0.9.10/src/memmap2/lib.rs.html#847-854) #### pub unsafe fn [unchecked\_advise\_range](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#method.unchecked_advise_range) ( &self, advice: [UncheckedAdvice](https://docs.rs/memmap2/0.9.10/memmap2/enum.UncheckedAdvice.html "enum memmap2::UncheckedAdvice") , offset: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) , len: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) , ) -> [Result](https://doc.rust-lang.org/nightly/std/io/error/type.Result.html "type std::io::error::Result") <[()](https://doc.rust-lang.org/nightly/std/primitive.unit.html) \> Advise OS how this range of memory map will be accessed. Used with the [unchecked flags](https://docs.rs/memmap2/0.9.10/memmap2/enum.UncheckedAdvice.html "enum memmap2::UncheckedAdvice") . Only supported on Unix. The offset and length must be in the bounds of the memory map. See [madvise()](https://man7.org/linux/man-pages/man2/madvise.2.html) map page. [Source](https://docs.rs/memmap2/0.9.10/src/memmap2/lib.rs.html#860-862) #### pub fn [lock](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#method.lock) (&self) -> [Result](https://doc.rust-lang.org/nightly/std/io/error/type.Result.html "type std::io::error::Result") <[()](https://doc.rust-lang.org/nightly/std/primitive.unit.html) \> Lock the whole memory map into RAM. Only supported on Unix. See [mlock()](https://man7.org/linux/man-pages/man2/mlock.2.html) map page. [Source](https://docs.rs/memmap2/0.9.10/src/memmap2/lib.rs.html#868-870) #### pub fn [unlock](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#method.unlock) (&self) -> [Result](https://doc.rust-lang.org/nightly/std/io/error/type.Result.html "type std::io::error::Result") <[()](https://doc.rust-lang.org/nightly/std/primitive.unit.html) \> Unlock the whole memory map. Only supported on Unix. See [munlock()](https://man7.org/linux/man-pages/man2/munlock.2.html) map page. [Source](https://docs.rs/memmap2/0.9.10/src/memmap2/lib.rs.html#890-892) #### pub unsafe fn [remap](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#method.remap) ( &mut self, new\_len: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) , options: [RemapOptions](https://docs.rs/memmap2/0.9.10/memmap2/struct.RemapOptions.html "struct memmap2::RemapOptions") , ) -> [Result](https://doc.rust-lang.org/nightly/std/io/error/type.Result.html "type std::io::error::Result") <[()](https://doc.rust-lang.org/nightly/std/primitive.unit.html) \> Adjust the size of the memory mapping. This will try to resize the memory mapping in place. If [`RemapOptions::may_move`](https://docs.rs/memmap2/0.9.10/memmap2/struct.RemapOptions.html#method.may_move "method memmap2::RemapOptions::may_move") is specified it will move the mapping if it could not resize in place, otherwise it will error. Only supported on Linux. See the [`mremap(2)`](https://man7.org/linux/man-pages/man2/mremap.2.html) man page. ##### [§](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#safety-2) Safety Resizing the memory mapping beyond the end of the mapped file will result in UB should you happen to access memory beyond the end of the file. Methods from [Deref](https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html "trait core::ops::deref::Deref") [§](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#deref-methods-%5Bu8%5D) ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 1.23.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/ascii.rs.html#18) #### pub fn [is\_ascii](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#method.is_ascii) (&self) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) Checks if all bytes in this slice are within the ASCII range. An empty slice returns `true`. [Source](https://doc.rust-lang.org/nightly/src/core/slice/ascii.rs.html#27) #### pub fn [as\_ascii](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#method.as_ascii) (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <&\[[AsciiChar](https://doc.rust-lang.org/nightly/core/ascii/ascii_char/enum.AsciiChar.html "enum core::ascii::ascii_char::AsciiChar")\ \]> 🔬This is a nightly-only experimental API. (`ascii_char`) If this slice [`is_ascii`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.is_ascii "method slice::is_ascii") , returns it as a slice of [ASCII characters](https://doc.rust-lang.org/nightly/core/ascii/ascii_char/enum.AsciiChar.html "enum core::ascii::ascii_char::AsciiChar") , otherwise returns `None`. [Source](https://doc.rust-lang.org/nightly/src/core/slice/ascii.rs.html#45) #### pub unsafe fn [as\_ascii\_unchecked](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#method.as_ascii_unchecked) (&self) -> &\[[AsciiChar](https://doc.rust-lang.org/nightly/core/ascii/ascii_char/enum.AsciiChar.html "enum core::ascii::ascii_char::AsciiChar")\ \] 🔬This is a nightly-only experimental API. (`ascii_char`) Converts this slice of bytes into a slice of ASCII characters, without checking whether they’re valid. ##### [§](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#safety-3) Safety Every byte in the slice must be in `0..=127`, or else this is UB. 1.23.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/ascii.rs.html#60) #### pub fn [eq\_ignore\_ascii\_case](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#method.eq_ignore_ascii_case) (&self, other: &\[[u8](https://doc.rust-lang.org/nightly/std/primitive.u8.html)\ \]) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) Checks that two slices are an ASCII case-insensitive match. Same as `to_ascii_lowercase(a) == to_ascii_lowercase(b)`, but without allocating and copying temporaries. 1.60.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/ascii.rs.html#218) #### pub fn [escape\_ascii](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#method.escape_ascii) (&self) -> [EscapeAscii](https://doc.rust-lang.org/nightly/core/slice/ascii/struct.EscapeAscii.html "struct core::slice::ascii::EscapeAscii") <'\_> Returns an iterator that produces an escaped version of this slice, treating it as an ASCII string. ##### [§](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#examples) Examples let s = b"0\t\r\n'\"\\\x9d"; let escaped = s.escape_ascii().to_string(); assert_eq!(escaped, "0\\t\\r\\n\\'\\\"\\\\\\x9d"); 1.80.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/ascii.rs.html#237) #### pub fn [trim\_ascii\_start](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#method.trim_ascii_start) (&self) -> &\[[u8](https://doc.rust-lang.org/nightly/std/primitive.u8.html)\ \] [ⓘ](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#) Returns a byte slice with leading ASCII whitespace bytes removed. ‘Whitespace’ refers to the definition used by [`u8::is_ascii_whitespace`](https://doc.rust-lang.org/nightly/std/primitive.u8.html#method.is_ascii_whitespace "method u8::is_ascii_whitespace") . ##### [§](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#examples-1) Examples assert_eq!(b" \t hello world\n".trim_ascii_start(), b"hello world\n"); assert_eq!(b" ".trim_ascii_start(), b""); assert_eq!(b"".trim_ascii_start(), b""); 1.80.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/ascii.rs.html#266) #### pub fn [trim\_ascii\_end](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#method.trim_ascii_end) (&self) -> &\[[u8](https://doc.rust-lang.org/nightly/std/primitive.u8.html)\ \] [ⓘ](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#) Returns a byte slice with trailing ASCII whitespace bytes removed. ‘Whitespace’ refers to the definition used by [`u8::is_ascii_whitespace`](https://doc.rust-lang.org/nightly/std/primitive.u8.html#method.is_ascii_whitespace "method u8::is_ascii_whitespace") . ##### [§](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#examples-2) Examples assert_eq!(b"\r hello world\n ".trim_ascii_end(), b"\r hello world"); assert_eq!(b" ".trim_ascii_end(), b""); assert_eq!(b"".trim_ascii_end(), b""); 1.80.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/ascii.rs.html#296) #### pub fn [trim\_ascii](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#method.trim_ascii) (&self) -> &\[[u8](https://doc.rust-lang.org/nightly/std/primitive.u8.html)\ \] [ⓘ](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#) Returns a byte slice with leading and trailing ASCII whitespace bytes removed. ‘Whitespace’ refers to the definition used by [`u8::is_ascii_whitespace`](https://doc.rust-lang.org/nightly/std/primitive.u8.html#method.is_ascii_whitespace "method u8::is_ascii_whitespace") . ##### [§](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#examples-3) Examples assert_eq!(b"\r hello world\n ".trim_ascii(), b"hello world"); assert_eq!(b" ".trim_ascii(), b""); assert_eq!(b"".trim_ascii(), b""); 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#116) #### pub fn [len](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#method.len) (&self) -> [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) Returns the number of elements in the slice. ##### [§](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#examples-4) Examples let a = [1, 2, 3]; assert_eq!(a.len(), 3); 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#136) #### pub fn [is\_empty](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#method.is_empty) (&self) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) Returns `true` if the slice has a length of 0. ##### [§](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#examples-5) Examples let a = [1, 2, 3]; assert!(!a.is_empty()); let b: &[i32] = &[]; assert!(b.is_empty()); 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#155) #### pub fn [first](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#method.first) (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <[&T](https://doc.rust-lang.org/nightly/std/primitive.reference.html) \> Returns the first element of the slice, or `None` if it is empty. ##### [§](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#examples-6) Examples let v = [10, 40, 30]; assert_eq!(Some(&10), v.first()); let w: &[i32] = &[]; assert_eq!(None, w.first()); 1.5.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#198) #### pub fn [split\_first](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#method.split_first) (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <([&T](https://doc.rust-lang.org/nightly/std/primitive.reference.html) , &[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html) )> Returns the first and all the rest of the elements of the slice, or `None` if it is empty. ##### [§](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#examples-7) Examples let x = &[0, 1, 2]; if let Some((first, elements)) = x.split_first() { assert_eq!(first, &0); assert_eq!(elements, &[1, 2]); } 1.5.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#240) #### pub fn [split\_last](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#method.split_last) (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <([&T](https://doc.rust-lang.org/nightly/std/primitive.reference.html) , &[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html) )> Returns the last and all the rest of the elements of the slice, or `None` if it is empty. ##### [§](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#examples-8) Examples let x = &[0, 1, 2]; if let Some((last, elements)) = x.split_last() { assert_eq!(last, &2); assert_eq!(elements, &[0, 1]); } 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#281) #### pub fn [last](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#method.last) (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <[&T](https://doc.rust-lang.org/nightly/std/primitive.reference.html) \> Returns the last element of the slice, or `None` if it is empty. ##### [§](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#examples-9) Examples let v = [10, 40, 30]; assert_eq!(Some(&30), v.last()); let w: &[i32] = &[]; assert_eq!(None, w.last()); 1.77.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#327) #### pub fn [first\_chunk](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#method.first_chunk) (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <&[\[T; N\]](https://doc.rust-lang.org/nightly/std/primitive.array.html) \> Returns an array reference to the first `N` items in the slice. If the slice is not at least `N` in length, this will return `None`. ##### [§](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#examples-10) Examples let u = [10, 40, 30]; assert_eq!(Some(&[10, 40]), u.first_chunk::<2>()); let v: &[i32] = &[10]; assert_eq!(None, v.first_chunk::<2>()); let w: &[i32] = &[]; assert_eq!(Some(&[]), w.first_chunk::<0>()); 1.77.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#387) #### pub fn [split\_first\_chunk](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#method.split_first_chunk) (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <(&[\[T; N\]](https://doc.rust-lang.org/nightly/std/primitive.array.html) , &[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html) )> Returns an array reference to the first `N` items in the slice and the remaining slice. If the slice is not at least `N` in length, this will return `None`. ##### [§](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#examples-11) Examples let x = &[0, 1, 2]; if let Some((first, elements)) = x.split_first_chunk::<2>() { assert_eq!(first, &[0, 1]); assert_eq!(elements, &[2]); } assert_eq!(None, x.split_first_chunk::<4>()); 1.77.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#447) #### pub fn [split\_last\_chunk](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#method.split_last_chunk) (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <(&[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html) , &[\[T; N\]](https://doc.rust-lang.org/nightly/std/primitive.array.html) )> Returns an array reference to the last `N` items in the slice and the remaining slice. If the slice is not at least `N` in length, this will return `None`. ##### [§](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#examples-12) Examples let x = &[0, 1, 2]; if let Some((elements, last)) = x.split_last_chunk::<2>() { assert_eq!(elements, &[0]); assert_eq!(last, &[1, 2]); } assert_eq!(None, x.split_last_chunk::<4>()); 1.77.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#509) #### pub fn [last\_chunk](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#method.last_chunk) (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <&[\[T; N\]](https://doc.rust-lang.org/nightly/std/primitive.array.html) \> Returns an array reference to the last `N` items in the slice. If the slice is not at least `N` in length, this will return `None`. ##### [§](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#examples-13) Examples let u = [10, 40, 30]; assert_eq!(Some(&[40, 30]), u.last_chunk::<2>()); let v: &[i32] = &[10]; assert_eq!(None, v.last_chunk::<2>()); let w: &[i32] = &[]; assert_eq!(Some(&[]), w.last_chunk::<0>()); 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#572-574) #### pub fn [get](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#method.get) (&self, index: I) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <&>::[Output](https://doc.rust-lang.org/nightly/core/slice/index/trait.SliceIndex.html#associatedtype.Output "type core::slice::index::SliceIndex::Output") \> where I: [SliceIndex](https://doc.rust-lang.org/nightly/core/slice/index/trait.SliceIndex.html "trait core::slice::index::SliceIndex") <[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html) \>, Returns a reference to an element or subslice depending on the type of index. * If given a position, returns a reference to the element at that position or `None` if out of bounds. * If given a range, returns the subslice corresponding to that range, or `None` if out of bounds. ##### [§](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#examples-14) Examples let v = [10, 40, 30]; assert_eq!(Some(&40), v.get(1)); assert_eq!(Some(&[10, 40][..]), v.get(0..2)); assert_eq!(None, v.get(3)); assert_eq!(None, v.get(0..4)); 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#639-641) #### pub unsafe fn [get\_unchecked](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#method.get_unchecked) ( &self, index: I, ) -> &>::[Output](https://doc.rust-lang.org/nightly/core/slice/index/trait.SliceIndex.html#associatedtype.Output "type core::slice::index::SliceIndex::Output") where I: [SliceIndex](https://doc.rust-lang.org/nightly/core/slice/index/trait.SliceIndex.html "trait core::slice::index::SliceIndex") <[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html) \>, Returns a reference to an element or subslice, without doing bounds checking. For a safe alternative see [`get`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.get "method slice::get") . ##### [§](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#safety-4) Safety Calling this method with an out-of-bounds index is _[undefined behavior](https://doc.rust-lang.org/reference/behavior-considered-undefined.html) _ even if the resulting reference is not used. You can think of this like `.get(index).unwrap_unchecked()`. It’s UB to call `.get_unchecked(len)`, even if you immediately convert to a pointer. And it’s UB to call `.get_unchecked(..len + 1)`, `.get_unchecked(..=len)`, or similar. ##### [§](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#examples-15) Examples let x = &[1, 2, 4]; unsafe { assert_eq!(x.get_unchecked(1), &2); } 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#726) #### pub fn [as\_ptr](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#method.as_ptr) (&self) -> [\*const T](https://doc.rust-lang.org/nightly/std/primitive.pointer.html) Returns a raw pointer to the slice’s buffer. The caller must ensure that the slice outlives the pointer this function returns, or else it will end up dangling. The caller must also ensure that the memory the pointer (non-transitively) points to is never written to (except inside an `UnsafeCell`) using this pointer or any pointer derived from it. If you need to mutate the contents of the slice, use [`as_mut_ptr`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.as_mut_ptr "method slice::as_mut_ptr") . Modifying the container referenced by this slice may cause its buffer to be reallocated, which would also make any pointers to it invalid. ##### [§](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#examples-16) Examples let x = &[1, 2, 4]; let x_ptr = x.as_ptr(); unsafe { for i in 0..x.len() { assert_eq!(x.get_unchecked(i), &*x_ptr.add(i)); } } 1.48.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#793) #### pub fn [as\_ptr\_range](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#method.as_ptr_range) (&self) -> [Range](https://doc.rust-lang.org/nightly/core/ops/range/struct.Range.html "struct core::ops::range::Range") <[\*const T](https://doc.rust-lang.org/nightly/std/primitive.pointer.html) \> Returns the two raw pointers spanning the slice. The returned range is half-open, which means that the end pointer points _one past_ the last element of the slice. This way, an empty slice is represented by two equal pointers, and the difference between the two pointers represents the size of the slice. See [`as_ptr`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.as_ptr "method slice::as_ptr") for warnings on using these pointers. The end pointer requires extra caution, as it does not point to a valid element in the slice. This function is useful for interacting with foreign interfaces which use two pointers to refer to a range of elements in memory, as is common in C++. It can also be useful to check if a pointer to an element refers to an element of this slice: let a = [1, 2, 3]; let x = &a[1] as *const _; let y = &5 as *const _; assert!(a.as_ptr_range().contains(&x)); assert!(!a.as_ptr_range().contains(&y)); 1.93.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#850) #### pub fn [as\_array](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#method.as_array) (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <&[\[T; N\]](https://doc.rust-lang.org/nightly/std/primitive.array.html) \> Gets a reference to the underlying array. If `N` is not exactly equal to the length of `self`, then this method returns `None`. 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#1040) #### pub fn [iter](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#method.iter) (&self) -> [Iter](https://doc.rust-lang.org/nightly/core/slice/iter/struct.Iter.html "struct core::slice::iter::Iter") <'\_, T> Returns an iterator over the slice. The iterator yields all items from start to end. ##### [§](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#examples-17) Examples let x = &[1, 2, 4]; let mut iterator = x.iter(); assert_eq!(iterator.next(), Some(&1)); assert_eq!(iterator.next(), Some(&2)); assert_eq!(iterator.next(), Some(&4)); assert_eq!(iterator.next(), None); 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#1115) #### pub fn [windows](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#method.windows) (&self, size: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) ) -> [Windows](https://doc.rust-lang.org/nightly/core/slice/iter/struct.Windows.html "struct core::slice::iter::Windows") <'\_, T> Returns an iterator over all contiguous windows of length `size`. The windows overlap. If the slice is shorter than `size`, the iterator returns no values. ##### [§](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#panics) Panics Panics if `size` is zero. ##### [§](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#examples-18) Examples let slice = ['l', 'o', 'r', 'e', 'm']; let mut iter = slice.windows(3); assert_eq!(iter.next().unwrap(), &['l', 'o', 'r']); assert_eq!(iter.next().unwrap(), &['o', 'r', 'e']); assert_eq!(iter.next().unwrap(), &['r', 'e', 'm']); assert!(iter.next().is_none()); If the slice is shorter than `size`: let slice = ['f', 'o', 'o']; let mut iter = slice.windows(4); assert!(iter.next().is_none()); Because the [Iterator](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html "trait core::iter::traits::iterator::Iterator") trait cannot represent the required lifetimes, there is no `windows_mut` analog to `windows`; `[0,1,2].windows_mut(2).collect()` would violate [the rules of references](https://doc.rust-lang.org/book/ch04-02-references-and-borrowing.html#the-rules-of-references) (though a [LendingIterator](https://blog.rust-lang.org/2022/10/28/gats-stabilization.html) analog is possible). You can sometimes use [`Cell::as_slice_of_cells`](https://doc.rust-lang.org/nightly/core/cell/struct.Cell.html#method.as_slice_of_cells "method core::cell::Cell::as_slice_of_cells") in conjunction with `windows` instead: use std::cell::Cell; let mut array = ['R', 'u', 's', 't', ' ', '2', '0', '1', '5']; let slice = &mut array[..]; let slice_of_cells: &[Cell] = Cell::from_mut(slice).as_slice_of_cells(); for w in slice_of_cells.windows(3) { Cell::swap(&w[0], &w[2]); } assert_eq!(array, ['s', 't', ' ', '2', '0', '1', '5', 'u', 'R']); 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#1155) #### pub fn [chunks](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#method.chunks) (&self, chunk\_size: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) ) -> [Chunks](https://doc.rust-lang.org/nightly/core/slice/iter/struct.Chunks.html "struct core::slice::iter::Chunks") <'\_, T> Returns an iterator over `chunk_size` elements of the slice at a time, starting at the beginning of the slice. The chunks are slices and do not overlap. If `chunk_size` does not divide the length of the slice, then the last chunk will not have length `chunk_size`. See [`chunks_exact`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.chunks_exact "method slice::chunks_exact") for a variant of this iterator that returns chunks of always exactly `chunk_size` elements, and [`rchunks`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.rchunks "method slice::rchunks") for the same iterator but starting at the end of the slice. If your `chunk_size` is a constant, consider using [`as_chunks`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.as_chunks "method slice::as_chunks") instead, which will give references to arrays of exactly that length, rather than slices. ##### [§](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#panics-1) Panics Panics if `chunk_size` is zero. ##### [§](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#examples-19) Examples let slice = ['l', 'o', 'r', 'e', 'm']; let mut iter = slice.chunks(2); assert_eq!(iter.next().unwrap(), &['l', 'o']); assert_eq!(iter.next().unwrap(), &['r', 'e']); assert_eq!(iter.next().unwrap(), &['m']); assert!(iter.next().is_none()); 1.31.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#1242) #### pub fn [chunks\_exact](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#method.chunks_exact) (&self, chunk\_size: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) ) -> [ChunksExact](https://doc.rust-lang.org/nightly/core/slice/iter/struct.ChunksExact.html "struct core::slice::iter::ChunksExact") <'\_, T> Returns an iterator over `chunk_size` elements of the slice at a time, starting at the beginning of the slice. The chunks are slices and do not overlap. If `chunk_size` does not divide the length of the slice, then the last up to `chunk_size-1` elements will be omitted and can be retrieved from the `remainder` function of the iterator. Due to each chunk having exactly `chunk_size` elements, the compiler can often optimize the resulting code better than in the case of [`chunks`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.chunks "method slice::chunks") . See [`chunks`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.chunks "method slice::chunks") for a variant of this iterator that also returns the remainder as a smaller chunk, and [`rchunks_exact`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.rchunks_exact "method slice::rchunks_exact") for the same iterator but starting at the end of the slice. If your `chunk_size` is a constant, consider using [`as_chunks`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.as_chunks "method slice::as_chunks") instead, which will give references to arrays of exactly that length, rather than slices. ##### [§](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#panics-2) Panics Panics if `chunk_size` is zero. ##### [§](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#examples-20) Examples let slice = ['l', 'o', 'r', 'e', 'm']; let mut iter = slice.chunks_exact(2); assert_eq!(iter.next().unwrap(), &['l', 'o']); assert_eq!(iter.next().unwrap(), &['r', 'e']); assert!(iter.next().is_none()); assert_eq!(iter.remainder(), &['m']); 1.88.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#1338) #### pub unsafe fn [as\_chunks\_unchecked](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#method.as_chunks_unchecked) (&self) -> &\[[\[T; N\]](https://doc.rust-lang.org/nightly/std/primitive.array.html)\ \] Splits the slice into a slice of `N`\-element arrays, assuming that there’s no remainder. This is the inverse operation to [`as_flattened`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.as_flattened "method slice::as_flattened") . As this is `unsafe`, consider whether you could use [`as_chunks`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.as_chunks "method slice::as_chunks") or [`as_rchunks`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.as_rchunks "method slice::as_rchunks") instead, perhaps via something like `if let (chunks, []) = slice.as_chunks()` or `let (chunks, []) = slice.as_chunks() else { unreachable!() };`. ##### [§](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#safety-5) Safety This may only be called when * The slice splits exactly into `N`\-element chunks (aka `self.len() % N == 0`). * `N != 0`. ##### [§](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#examples-21) Examples let slice: &[char] = &['l', 'o', 'r', 'e', 'm', '!']; let chunks: &[[char; 1]] = // SAFETY: 1-element chunks never have remainder unsafe { slice.as_chunks_unchecked() }; assert_eq!(chunks, &[['l'], ['o'], ['r'], ['e'], ['m'], ['!']]); let chunks: &[[char; 3]] = // SAFETY: The slice length (6) is a multiple of 3 unsafe { slice.as_chunks_unchecked() }; assert_eq!(chunks, &[['l', 'o', 'r'], ['e', 'm', '!']]); // These would be unsound: // let chunks: &[[_; 5]] = slice.as_chunks_unchecked() // The slice length is not a multiple of 5 // let chunks: &[[_; 0]] = slice.as_chunks_unchecked() // Zero-length chunks are never allowed 1.88.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#1396) #### pub fn [as\_chunks](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#method.as_chunks) (&self) -> (&\[[\[T; N\]](https://doc.rust-lang.org/nightly/std/primitive.array.html)\ \], &[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html) ) Splits the slice into a slice of `N`\-element arrays, starting at the beginning of the slice, and a remainder slice with length strictly less than `N`. The remainder is meaningful in the division sense. Given `let (chunks, remainder) = slice.as_chunks()`, then: * `chunks.len()` equals `slice.len() / N`, * `remainder.len()` equals `slice.len() % N`, and * `slice.len()` equals `chunks.len() * N + remainder.len()`. You can flatten the chunks back into a slice-of-`T` with [`as_flattened`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.as_flattened "method slice::as_flattened") . ##### [§](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#panics-3) Panics Panics if `N` is zero. Note that this check is against a const generic parameter, not a runtime value, and thus a particular monomorphization will either always panic or it will never panic. ##### [§](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#examples-22) Examples let slice = ['l', 'o', 'r', 'e', 'm']; let (chunks, remainder) = slice.as_chunks(); assert_eq!(chunks, &[['l', 'o'], ['r', 'e']]); assert_eq!(remainder, &['m']); If you expect the slice to be an exact multiple, you can combine `let`\-`else` with an empty slice pattern: let slice = ['R', 'u', 's', 't']; let (chunks, []) = slice.as_chunks::<2>() else { panic!("slice didn't have even length") }; assert_eq!(chunks, &[['R', 'u'], ['s', 't']]); 1.88.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#1443) #### pub fn [as\_rchunks](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#method.as_rchunks) (&self) -> (&[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html) , &\[[\[T; N\]](https://doc.rust-lang.org/nightly/std/primitive.array.html)\ \]) Splits the slice into a slice of `N`\-element arrays, starting at the end of the slice, and a remainder slice with length strictly less than `N`. The remainder is meaningful in the division sense. Given `let (remainder, chunks) = slice.as_rchunks()`, then: * `remainder.len()` equals `slice.len() % N`, * `chunks.len()` equals `slice.len() / N`, and * `slice.len()` equals `chunks.len() * N + remainder.len()`. You can flatten the chunks back into a slice-of-`T` with [`as_flattened`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.as_flattened "method slice::as_flattened") . ##### [§](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#panics-4) Panics Panics if `N` is zero. Note that this check is against a const generic parameter, not a runtime value, and thus a particular monomorphization will either always panic or it will never panic. ##### [§](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#examples-23) Examples let slice = ['l', 'o', 'r', 'e', 'm']; let (remainder, chunks) = slice.as_rchunks(); assert_eq!(remainder, &['l']); assert_eq!(chunks, &[['o', 'r'], ['e', 'm']]); 1.94.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#1646) #### pub fn [array\_windows](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#method.array_windows) (&self) -> [ArrayWindows](https://doc.rust-lang.org/nightly/core/slice/iter/struct.ArrayWindows.html "struct core::slice::iter::ArrayWindows") <'\_, T, N> Returns an iterator over overlapping windows of `N` elements of a slice, starting at the beginning of the slice. This is the const generic equivalent of [`windows`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.windows "method slice::windows") . If `N` is greater than the size of the slice, it will return no windows. ##### [§](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#panics-5) Panics Panics if `N` is zero. Note that this check is against a const generic parameter, not a runtime value, and thus a particular monomorphization will either always panic or it will never panic. ##### [§](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#examples-24) Examples let slice = [0, 1, 2, 3]; let mut iter = slice.array_windows(); assert_eq!(iter.next().unwrap(), &[0, 1]); assert_eq!(iter.next().unwrap(), &[1, 2]); assert_eq!(iter.next().unwrap(), &[2, 3]); assert!(iter.next().is_none()); 1.31.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#1686) #### pub fn [rchunks](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#method.rchunks) (&self, chunk\_size: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) ) -> [RChunks](https://doc.rust-lang.org/nightly/core/slice/iter/struct.RChunks.html "struct core::slice::iter::RChunks") <'\_, T> Returns an iterator over `chunk_size` elements of the slice at a time, starting at the end of the slice. The chunks are slices and do not overlap. If `chunk_size` does not divide the length of the slice, then the last chunk will not have length `chunk_size`. See [`rchunks_exact`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.rchunks_exact "method slice::rchunks_exact") for a variant of this iterator that returns chunks of always exactly `chunk_size` elements, and [`chunks`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.chunks "method slice::chunks") for the same iterator but starting at the beginning of the slice. If your `chunk_size` is a constant, consider using [`as_rchunks`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.as_rchunks "method slice::as_rchunks") instead, which will give references to arrays of exactly that length, rather than slices. ##### [§](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#panics-6) Panics Panics if `chunk_size` is zero. ##### [§](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#examples-25) Examples let slice = ['l', 'o', 'r', 'e', 'm']; let mut iter = slice.rchunks(2); assert_eq!(iter.next().unwrap(), &['e', 'm']); assert_eq!(iter.next().unwrap(), &['o', 'r']); assert_eq!(iter.next().unwrap(), &['l']); assert!(iter.next().is_none()); 1.31.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#1775) #### pub fn [rchunks\_exact](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#method.rchunks_exact) (&self, chunk\_size: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) ) -> [RChunksExact](https://doc.rust-lang.org/nightly/core/slice/iter/struct.RChunksExact.html "struct core::slice::iter::RChunksExact") <'\_, T> Returns an iterator over `chunk_size` elements of the slice at a time, starting at the end of the slice. The chunks are slices and do not overlap. If `chunk_size` does not divide the length of the slice, then the last up to `chunk_size-1` elements will be omitted and can be retrieved from the `remainder` function of the iterator. Due to each chunk having exactly `chunk_size` elements, the compiler can often optimize the resulting code better than in the case of [`rchunks`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.rchunks "method slice::rchunks") . See [`rchunks`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.rchunks "method slice::rchunks") for a variant of this iterator that also returns the remainder as a smaller chunk, and [`chunks_exact`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.chunks_exact "method slice::chunks_exact") for the same iterator but starting at the beginning of the slice. If your `chunk_size` is a constant, consider using [`as_rchunks`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.as_rchunks "method slice::as_rchunks") instead, which will give references to arrays of exactly that length, rather than slices. ##### [§](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#panics-7) Panics Panics if `chunk_size` is zero. ##### [§](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#examples-26) Examples let slice = ['l', 'o', 'r', 'e', 'm']; let mut iter = slice.rchunks_exact(2); assert_eq!(iter.next().unwrap(), &['e', 'm']); assert_eq!(iter.next().unwrap(), &['o', 'r']); assert!(iter.next().is_none()); assert_eq!(iter.remainder(), &['l']); 1.77.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#1864-1866) #### pub fn [chunk\_by](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#method.chunk_by) (&self, pred: F) -> [ChunkBy](https://doc.rust-lang.org/nightly/core/slice/iter/struct.ChunkBy.html "struct core::slice::iter::ChunkBy") <'\_, T, F> where F: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut") ([&T](https://doc.rust-lang.org/nightly/std/primitive.reference.html) , [&T](https://doc.rust-lang.org/nightly/std/primitive.reference.html) ) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) , Returns an iterator over the slice producing non-overlapping runs of elements using the predicate to separate them. The predicate is called for every pair of consecutive elements, meaning that it is called on `slice[0]` and `slice[1]`, followed by `slice[1]` and `slice[2]`, and so on. ##### [§](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#examples-27) Examples let slice = &[1, 1, 1, 3, 3, 2, 2, 2]; let mut iter = slice.chunk_by(|a, b| a == b); assert_eq!(iter.next(), Some(&[1, 1, 1][..])); assert_eq!(iter.next(), Some(&[3, 3][..])); assert_eq!(iter.next(), Some(&[2, 2, 2][..])); assert_eq!(iter.next(), None); This method can be used to extract the sorted subslices: let slice = &[1, 1, 2, 3, 2, 3, 2, 3, 4]; let mut iter = slice.chunk_by(|a, b| a <= b); assert_eq!(iter.next(), Some(&[1, 1, 2, 3][..])); assert_eq!(iter.next(), Some(&[2, 3][..])); assert_eq!(iter.next(), Some(&[2, 3, 4][..])); assert_eq!(iter.next(), None); 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#1952) #### pub fn [split\_at](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#method.split_at) (&self, mid: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) ) -> (&[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html) , &[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html) ) Divides one slice into two at an index. The first will contain all indices from `[0, mid)` (excluding the index `mid` itself) and the second will contain all indices from `[mid, len)` (excluding the index `len` itself).\ \ ##### [§](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#panics-8)\ Panics\ \ Panics if `mid > len`. For a non-panicking alternative see [`split_at_checked`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.split_at_checked "method slice::split_at_checked")\ .\ \ ##### [§](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#examples-28)\ Examples\ \ let v = ['a', 'b', 'c'];\ \ {\ let (left, right) = v.split_at(0);\ assert_eq!(left, []);\ assert_eq!(right, ['a', 'b', 'c']);\ }\ \ {\ let (left, right) = v.split_at(2);\ assert_eq!(left, ['a', 'b']);\ assert_eq!(right, ['c']);\ }\ \ {\ let (left, right) = v.split_at(3);\ assert_eq!(left, ['a', 'b', 'c']);\ assert_eq!(right, []);\ }\ \ 1.79.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#2038)\ \ #### pub unsafe fn [split\_at\_unchecked](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#method.split_at_unchecked)\ (&self, mid: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html)\ ) -> (&[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ , &[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ )\ \ Divides one slice into two at an index, without doing bounds checking.\ \ The first will contain all indices from `[0, mid)` (excluding the index `mid` itself) and the second will contain all indices from `[mid, len)` (excluding the index `len` itself).\ \ For a safe alternative see [`split_at`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.split_at "method slice::split_at")\ .\ \ ##### [§](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#safety-6)\ Safety\ \ Calling this method with an out-of-bounds index is _[undefined behavior](https://doc.rust-lang.org/reference/behavior-considered-undefined.html)\ _ even if the resulting reference is not used. The caller has to ensure that `0 <= mid <= self.len()`.\ \ ##### [§](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#examples-29)\ Examples\ \ let v = ['a', 'b', 'c'];\ \ unsafe {\ let (left, right) = v.split_at_unchecked(0);\ assert_eq!(left, []);\ assert_eq!(right, ['a', 'b', 'c']);\ }\ \ unsafe {\ let (left, right) = v.split_at_unchecked(2);\ assert_eq!(left, ['a', 'b']);\ assert_eq!(right, ['c']);\ }\ \ unsafe {\ let (left, right) = v.split_at_unchecked(3);\ assert_eq!(left, ['a', 'b', 'c']);\ assert_eq!(right, []);\ }\ \ 1.80.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#2153)\ \ #### pub fn [split\_at\_checked](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#method.split_at_checked)\ (&self, mid: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html)\ ) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option")\ <(&[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ , &[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ )>\ \ Divides one slice into two at an index, returning `None` if the slice is too short.\ \ If `mid ≤ len` returns a pair of slices where the first will contain all indices from `[0, mid)` (excluding the index `mid` itself) and the second will contain all indices from `[mid, len)` (excluding the index `len` itself).\ \ Otherwise, if `mid > len`, returns `None`.\ \ ##### [§](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#examples-30)\ Examples\ \ let v = [1, -2, 3, -4, 5, -6];\ \ {\ let (left, right) = v.split_at_checked(0).unwrap();\ assert_eq!(left, []);\ assert_eq!(right, [1, -2, 3, -4, 5, -6]);\ }\ \ {\ let (left, right) = v.split_at_checked(2).unwrap();\ assert_eq!(left, [1, -2]);\ assert_eq!(right, [3, -4, 5, -6]);\ }\ \ {\ let (left, right) = v.split_at_checked(6).unwrap();\ assert_eq!(left, [1, -2, 3, -4, 5, -6]);\ assert_eq!(right, []);\ }\ \ assert_eq!(None, v.split_at_checked(7));\ \ 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#2244-2246)\ \ #### pub fn [split](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#method.split)\ (&self, pred: F) -> [Split](https://doc.rust-lang.org/nightly/core/slice/iter/struct.Split.html "struct core::slice::iter::Split")\ <'\_, T, F>\ \ where F: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut")\ ([&T](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ ) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html)\ ,\ \ Returns an iterator over subslices separated by elements that match `pred`. The matched element is not contained in the subslices.\ \ ##### [§](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#examples-31)\ Examples\ \ let slice = [10, 40, 33, 20];\ let mut iter = slice.split(|num| num % 3 == 0);\ \ assert_eq!(iter.next().unwrap(), &[10, 40]);\ assert_eq!(iter.next().unwrap(), &[20]);\ assert!(iter.next().is_none());\ \ If the first element is matched, an empty slice will be the first item returned by the iterator. Similarly, if the last element in the slice is matched, an empty slice will be the last item returned by the iterator:\ \ let slice = [10, 40, 33];\ let mut iter = slice.split(|num| num % 3 == 0);\ \ assert_eq!(iter.next().unwrap(), &[10, 40]);\ assert_eq!(iter.next().unwrap(), &[]);\ assert!(iter.next().is_none());\ \ If two matched elements are directly adjacent, an empty slice will be present between them:\ \ let slice = [10, 6, 33, 20];\ let mut iter = slice.split(|num| num % 3 == 0);\ \ assert_eq!(iter.next().unwrap(), &[10]);\ assert_eq!(iter.next().unwrap(), &[]);\ assert_eq!(iter.next().unwrap(), &[20]);\ assert!(iter.next().is_none());\ \ 1.51.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#2302-2304)\ \ #### pub fn [split\_inclusive](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#method.split_inclusive)\ (&self, pred: F) -> [SplitInclusive](https://doc.rust-lang.org/nightly/core/slice/iter/struct.SplitInclusive.html "struct core::slice::iter::SplitInclusive")\ <'\_, T, F>\ \ where F: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut")\ ([&T](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ ) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html)\ ,\ \ Returns an iterator over subslices separated by elements that match `pred`. The matched element is contained in the end of the previous subslice as a terminator.\ \ ##### [§](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#examples-32)\ Examples\ \ let slice = [10, 40, 33, 20];\ let mut iter = slice.split_inclusive(|num| num % 3 == 0);\ \ assert_eq!(iter.next().unwrap(), &[10, 40, 33]);\ assert_eq!(iter.next().unwrap(), &[20]);\ assert!(iter.next().is_none());\ \ If the last element of the slice is matched, that element will be considered the terminator of the preceding slice. That slice will be the last item returned by the iterator.\ \ let slice = [3, 10, 40, 33];\ let mut iter = slice.split_inclusive(|num| num % 3 == 0);\ \ assert_eq!(iter.next().unwrap(), &[3]);\ assert_eq!(iter.next().unwrap(), &[10, 40, 33]);\ assert!(iter.next().is_none());\ \ 1.27.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#2362-2364)\ \ #### pub fn [rsplit](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#method.rsplit)\ (&self, pred: F) -> [RSplit](https://doc.rust-lang.org/nightly/core/slice/iter/struct.RSplit.html "struct core::slice::iter::RSplit")\ <'\_, T, F>\ \ where F: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut")\ ([&T](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ ) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html)\ ,\ \ Returns an iterator over subslices separated by elements that match `pred`, starting at the end of the slice and working backwards. The matched element is not contained in the subslices.\ \ ##### [§](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#examples-33)\ Examples\ \ let slice = [11, 22, 33, 0, 44, 55];\ let mut iter = slice.rsplit(|num| *num == 0);\ \ assert_eq!(iter.next().unwrap(), &[44, 55]);\ assert_eq!(iter.next().unwrap(), &[11, 22, 33]);\ assert_eq!(iter.next(), None);\ \ As with `split()`, if the first or last element is matched, an empty slice will be the first (or last) item returned by the iterator.\ \ let v = &[0, 1, 1, 2, 3, 5, 8];\ let mut it = v.rsplit(|n| *n % 2 == 0);\ assert_eq!(it.next().unwrap(), &[]);\ assert_eq!(it.next().unwrap(), &[3, 5]);\ assert_eq!(it.next().unwrap(), &[1, 1]);\ assert_eq!(it.next().unwrap(), &[]);\ assert_eq!(it.next(), None);\ \ 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#2416-2418)\ \ #### pub fn [splitn](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#method.splitn)\ (&self, n: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html)\ , pred: F) -> [SplitN](https://doc.rust-lang.org/nightly/core/slice/iter/struct.SplitN.html "struct core::slice::iter::SplitN")\ <'\_, T, F>\ \ where F: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut")\ ([&T](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ ) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html)\ ,\ \ Returns an iterator over subslices separated by elements that match `pred`, limited to returning at most `n` items. The matched element is not contained in the subslices.\ \ The last element returned, if any, will contain the remainder of the slice.\ \ ##### [§](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#examples-34)\ Examples\ \ Print the slice split once by numbers divisible by 3 (i.e., `[10, 40]`, `[20, 60, 50]`):\ \ let v = [10, 40, 30, 20, 60, 50];\ \ for group in v.splitn(2, |num| *num % 3 == 0) {\ println!("{group:?}");\ }\ \ 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#2471-2473)\ \ #### pub fn [rsplitn](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#method.rsplitn)\ (&self, n: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html)\ , pred: F) -> [RSplitN](https://doc.rust-lang.org/nightly/core/slice/iter/struct.RSplitN.html "struct core::slice::iter::RSplitN")\ <'\_, T, F>\ \ where F: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut")\ ([&T](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ ) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html)\ ,\ \ Returns an iterator over subslices separated by elements that match `pred` limited to returning at most `n` items. This starts at the end of the slice and works backwards. The matched element is not contained in the subslices.\ \ The last element returned, if any, will contain the remainder of the slice.\ \ ##### [§](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#examples-35)\ Examples\ \ Print the slice split once, starting from the end, by numbers divisible by 3 (i.e., `[50]`, `[10, 40, 30, 20]`):\ \ let v = [10, 40, 30, 20, 60, 50];\ \ for group in v.rsplitn(2, |num| *num % 3 == 0) {\ println!("{group:?}");\ }\ \ [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#2525-2527)\ \ #### pub fn [split\_once](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#method.split_once)\ (&self, pred: F) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option")\ <(&[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ , &[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ )>\ \ where F: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut")\ ([&T](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ ) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html)\ ,\ \ 🔬This is a nightly-only experimental API. (`slice_split_once`)\ \ Splits the slice on the first element that matches the specified predicate.\ \ If any matching elements are present in the slice, returns the prefix before the match and suffix after. The matching element itself is not included. If no elements match, returns `None`.\ \ ##### [§](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#examples-36)\ Examples\ \ #![feature(slice_split_once)]\ let s = [1, 2, 3, 2, 4];\ assert_eq!(s.split_once(|&x| x == 2), Some((\ &[1][..],\ &[3, 2, 4][..]\ )));\ assert_eq!(s.split_once(|&x| x == 0), None);\ \ [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#2553-2555)\ \ #### pub fn [rsplit\_once](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#method.rsplit_once)\ (&self, pred: F) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option")\ <(&[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ , &[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ )>\ \ where F: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut")\ ([&T](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ ) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html)\ ,\ \ 🔬This is a nightly-only experimental API. (`slice_split_once`)\ \ Splits the slice on the last element that matches the specified predicate.\ \ If any matching elements are present in the slice, returns the prefix before the match and suffix after. The matching element itself is not included. If no elements match, returns `None`.\ \ ##### [§](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#examples-37)\ Examples\ \ #![feature(slice_split_once)]\ let s = [1, 2, 3, 2, 4];\ assert_eq!(s.rsplit_once(|&x| x == 2), Some((\ &[1, 2, 3][..],\ &[4][..]\ )));\ assert_eq!(s.rsplit_once(|&x| x == 0), None);\ \ 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#2589-2591)\ \ #### pub fn [contains](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#method.contains)\ (&self, x: [&T](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ ) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html)\ \ where T: [PartialEq](https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html "trait core::cmp::PartialEq")\ ,\ \ Returns `true` if the slice contains an element with the given value.\ \ This operation is _O_(_n_).\ \ Note that if you have a sorted slice, [`binary_search`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.binary_search "method slice::binary_search")\ may be faster.\ \ ##### [§](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#examples-38)\ Examples\ \ let v = [10, 40, 30];\ assert!(v.contains(&30));\ assert!(!v.contains(&50));\ \ If you do not have a `&T`, but some other value that you can compare with one (for example, `String` implements `PartialEq`), you can use `iter().any`:\ \ let v = [String::from("hello"), String::from("world")]; // slice of `String`\ assert!(v.iter().any(|e| e == "hello")); // search with `&str`\ assert!(!v.iter().any(|e| e == "hi"));\ \ 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#2619-2621)\ \ #### pub fn [starts\_with](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#method.starts_with)\ (&self, needle: &[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ ) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html)\ \ where T: [PartialEq](https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html "trait core::cmp::PartialEq")\ ,\ \ Returns `true` if `needle` is a prefix of the slice or equal to the slice.\ \ ##### [§](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#examples-39)\ Examples\ \ let v = [10, 40, 30];\ assert!(v.starts_with(&[10]));\ assert!(v.starts_with(&[10, 40]));\ assert!(v.starts_with(&v));\ assert!(!v.starts_with(&[50]));\ assert!(!v.starts_with(&[10, 50]));\ \ Always returns `true` if `needle` is an empty slice:\ \ let v = &[10, 40, 30];\ assert!(v.starts_with(&[]));\ let v: &[u8] = &[];\ assert!(v.starts_with(&[]));\ \ 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#2650-2652)\ \ #### pub fn [ends\_with](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#method.ends_with)\ (&self, needle: &[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ ) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html)\ \ where T: [PartialEq](https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html "trait core::cmp::PartialEq")\ ,\ \ Returns `true` if `needle` is a suffix of the slice or equal to the slice.\ \ ##### [§](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#examples-40)\ Examples\ \ let v = [10, 40, 30];\ assert!(v.ends_with(&[30]));\ assert!(v.ends_with(&[40, 30]));\ assert!(v.ends_with(&v));\ assert!(!v.ends_with(&[50]));\ assert!(!v.ends_with(&[50, 30]));\ \ Always returns `true` if `needle` is an empty slice:\ \ let v = &[10, 40, 30];\ assert!(v.ends_with(&[]));\ let v: &[u8] = &[];\ assert!(v.ends_with(&[]));\ \ 1.51.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#2682-2684)\ \ #### pub fn [strip\_prefix](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#method.strip_prefix)\

(&self, prefix: [&P](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ ) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option")\ <&[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ \>\ \ where P: [SlicePattern](https://doc.rust-lang.org/nightly/core/slice/trait.SlicePattern.html "trait core::slice::SlicePattern")\ + ?[Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized")\ , T: [PartialEq](https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html "trait core::cmp::PartialEq")\ ,\ \ Returns a subslice with the prefix removed.\ \ If the slice starts with `prefix`, returns the subslice after the prefix, wrapped in `Some`. If `prefix` is empty, simply returns the original slice. If `prefix` is equal to the original slice, returns an empty slice.\ \ If the slice does not start with `prefix`, returns `None`.\ \ ##### [§](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#examples-41)\ Examples\ \ let v = &[10, 40, 30];\ assert_eq!(v.strip_prefix(&[10]), Some(&[40, 30][..]));\ assert_eq!(v.strip_prefix(&[10, 40]), Some(&[30][..]));\ assert_eq!(v.strip_prefix(&[10, 40, 30]), Some(&[][..]));\ assert_eq!(v.strip_prefix(&[50]), None);\ assert_eq!(v.strip_prefix(&[10, 50]), None);\ \ let prefix : &str = "he";\ assert_eq!(b"hello".strip_prefix(prefix.as_bytes()),\ Some(b"llo".as_ref()));\ \ 1.51.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#2718-2720)\ \ #### pub fn [strip\_suffix](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#method.strip_suffix)\

(&self, suffix: [&P](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ ) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option")\ <&[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ \>\ \ where P: [SlicePattern](https://doc.rust-lang.org/nightly/core/slice/trait.SlicePattern.html "trait core::slice::SlicePattern")\ + ?[Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized")\ , T: [PartialEq](https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html "trait core::cmp::PartialEq")\ ,\ \ Returns a subslice with the suffix removed.\ \ If the slice ends with `suffix`, returns the subslice before the suffix, wrapped in `Some`. If `suffix` is empty, simply returns the original slice. If `suffix` is equal to the original slice, returns an empty slice.\ \ If the slice does not end with `suffix`, returns `None`.\ \ ##### [§](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#examples-42)\ Examples\ \ let v = &[10, 40, 30];\ assert_eq!(v.strip_suffix(&[30]), Some(&[10, 40][..]));\ assert_eq!(v.strip_suffix(&[40, 30]), Some(&[10][..]));\ assert_eq!(v.strip_suffix(&[10, 40, 30]), Some(&[][..]));\ assert_eq!(v.strip_suffix(&[50]), None);\ assert_eq!(v.strip_suffix(&[50, 30]), None);\ \ [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#2757-2761)\ \ #### pub fn [strip\_circumfix](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#method.strip_circumfix)\ (&self, prefix: [&P](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ , suffix: [&S](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ ) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option")\ <&[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ \>\ \ where T: [PartialEq](https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html "trait core::cmp::PartialEq")\ , S: [SlicePattern](https://doc.rust-lang.org/nightly/core/slice/trait.SlicePattern.html "trait core::slice::SlicePattern")\ + ?[Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized")\ , P: [SlicePattern](https://doc.rust-lang.org/nightly/core/slice/trait.SlicePattern.html "trait core::slice::SlicePattern")\ + ?[Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized")\ ,\ \ 🔬This is a nightly-only experimental API. (`strip_circumfix`)\ \ Returns a subslice with the prefix and suffix removed.\ \ If the slice starts with `prefix` and ends with `suffix`, returns the subslice after the prefix and before the suffix, wrapped in `Some`.\ \ If the slice does not start with `prefix` or does not end with `suffix`, returns `None`.\ \ ##### [§](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#examples-43)\ Examples\ \ #![feature(strip_circumfix)]\ \ let v = &[10, 50, 40, 30];\ assert_eq!(v.strip_circumfix(&[10], &[30]), Some(&[50, 40][..]));\ assert_eq!(v.strip_circumfix(&[10], &[40, 30]), Some(&[50][..]));\ assert_eq!(v.strip_circumfix(&[10, 50], &[40, 30]), Some(&[][..]));\ assert_eq!(v.strip_circumfix(&[50], &[30]), None);\ assert_eq!(v.strip_circumfix(&[10], &[40]), None);\ assert_eq!(v.strip_circumfix(&[], &[40, 30]), Some(&[10, 50][..]));\ assert_eq!(v.strip_circumfix(&[10, 50], &[]), Some(&[40, 30][..]));\ \ [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#2793-2795)\ \ #### pub fn [trim\_prefix](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#method.trim_prefix)\

(&self, prefix: [&P](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ ) -> &[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ \ where P: [SlicePattern](https://doc.rust-lang.org/nightly/core/slice/trait.SlicePattern.html "trait core::slice::SlicePattern")\ + ?[Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized")\ , T: [PartialEq](https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html "trait core::cmp::PartialEq")\ ,\ \ 🔬This is a nightly-only experimental API. (`trim_prefix_suffix`)\ \ Returns a subslice with the optional prefix removed.\ \ If the slice starts with `prefix`, returns the subslice after the prefix. If `prefix` is empty or the slice does not start with `prefix`, simply returns the original slice. If `prefix` is equal to the original slice, returns an empty slice.\ \ ##### [§](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#examples-44)\ Examples\ \ #![feature(trim_prefix_suffix)]\ \ let v = &[10, 40, 30];\ \ // Prefix present - removes it\ assert_eq!(v.trim_prefix(&[10]), &[40, 30][..]);\ assert_eq!(v.trim_prefix(&[10, 40]), &[30][..]);\ assert_eq!(v.trim_prefix(&[10, 40, 30]), &[][..]);\ \ // Prefix absent - returns original slice\ assert_eq!(v.trim_prefix(&[50]), &[10, 40, 30][..]);\ assert_eq!(v.trim_prefix(&[10, 50]), &[10, 40, 30][..]);\ \ let prefix : &str = "he";\ assert_eq!(b"hello".trim_prefix(prefix.as_bytes()), b"llo".as_ref());\ \ [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#2833-2835)\ \ #### pub fn [trim\_suffix](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#method.trim_suffix)\

(&self, suffix: [&P](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ ) -> &[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ \ where P: [SlicePattern](https://doc.rust-lang.org/nightly/core/slice/trait.SlicePattern.html "trait core::slice::SlicePattern")\ + ?[Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized")\ , T: [PartialEq](https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html "trait core::cmp::PartialEq")\ ,\ \ 🔬This is a nightly-only experimental API. (`trim_prefix_suffix`)\ \ Returns a subslice with the optional suffix removed.\ \ If the slice ends with `suffix`, returns the subslice before the suffix. If `suffix` is empty or the slice does not end with `suffix`, simply returns the original slice. If `suffix` is equal to the original slice, returns an empty slice.\ \ ##### [§](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#examples-45)\ Examples\ \ #![feature(trim_prefix_suffix)]\ \ let v = &[10, 40, 30];\ \ // Suffix present - removes it\ assert_eq!(v.trim_suffix(&[30]), &[10, 40][..]);\ assert_eq!(v.trim_suffix(&[40, 30]), &[10][..]);\ assert_eq!(v.trim_suffix(&[10, 40, 30]), &[][..]);\ \ // Suffix absent - returns original slice\ assert_eq!(v.trim_suffix(&[50]), &[10, 40, 30][..]);\ assert_eq!(v.trim_suffix(&[50, 30]), &[10, 40, 30][..]);\ \ 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#2919-2921)\ \ #### pub fn [binary\_search](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#method.binary_search)\ (&self, x: [&T](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ ) -> [Result](https://doc.rust-lang.org/nightly/core/result/enum.Result.html "enum core::result::Result")\ <[usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html)\ , [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html)\ \>\ \ where T: [Ord](https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html "trait core::cmp::Ord")\ ,\ \ Binary searches this slice for a given element. If the slice is not sorted, the returned result is unspecified and meaningless.\ \ If the value is found then [`Result::Ok`](https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Ok "variant core::result::Result::Ok")\ is returned, containing the index of the matching element. If there are multiple matches, then any one of the matches could be returned. The index is chosen deterministically, but is subject to change in future versions of Rust. If the value is not found then [`Result::Err`](https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Err "variant core::result::Result::Err")\ is returned, containing the index where a matching element could be inserted while maintaining sorted order.\ \ See also [`binary_search_by`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.binary_search_by "method slice::binary_search_by")\ , [`binary_search_by_key`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.binary_search_by_key "method slice::binary_search_by_key")\ , and [`partition_point`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.partition_point "method slice::partition_point")\ .\ \ ##### [§](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#examples-46)\ Examples\ \ Looks up a series of four elements. The first is found, with a uniquely determined position; the second and third are not found; the fourth could match any position in `[1, 4]`.\ \ let s = [0, 1, 1, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55];\ \ assert_eq!(s.binary_search(&13), Ok(9));\ assert_eq!(s.binary_search(&4), Err(7));\ assert_eq!(s.binary_search(&100), Err(13));\ let r = s.binary_search(&1);\ assert!(match r { Ok(1..=4) => true, _ => false, });\ \ If you want to find that whole _range_ of matching items, rather than an arbitrary matching one, that can be done using [`partition_point`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.partition_point "method slice::partition_point")\ :\ \ let s = [0, 1, 1, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55];\ \ let low = s.partition_point(|x| x < &1);\ assert_eq!(low, 1);\ let high = s.partition_point(|x| x <= &1);\ assert_eq!(high, 5);\ let r = s.binary_search(&1);\ assert!((low..high).contains(&r.unwrap()));\ \ assert!(s[..low].iter().all(|&x| x < 1));\ assert!(s[low..high].iter().all(|&x| x == 1));\ assert!(s[high..].iter().all(|&x| x > 1));\ \ // For something not found, the "range" of equal items is empty\ assert_eq!(s.partition_point(|x| x < &11), 9);\ assert_eq!(s.partition_point(|x| x <= &11), 9);\ assert_eq!(s.binary_search(&11), Err(9));\ \ If you want to insert an item to a sorted vector, while maintaining sort order, consider using [`partition_point`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.partition_point "method slice::partition_point")\ :\ \ let mut s = vec![0, 1, 1, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55];\ let num = 42;\ let idx = s.partition_point(|&x| x <= num);\ // If `num` is unique, `s.partition_point(|&x| x < num)` (with `<`) is equivalent to\ // `s.binary_search(&num).unwrap_or_else(|x| x)`, but using `<=` will allow `insert`\ // to shift less elements.\ s.insert(idx, num);\ assert_eq!(s, [0, 1, 1, 1, 1, 2, 3, 5, 8, 13, 21, 34, 42, 55]);\ \ 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#2970-2972)\ \ #### pub fn [binary\_search\_by](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#method.binary_search_by)\ <'a, F>(&'a self, f: F) -> [Result](https://doc.rust-lang.org/nightly/core/result/enum.Result.html "enum core::result::Result")\ <[usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html)\ , [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html)\ \>\ \ where F: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut")\ ([&'a T](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ ) -> [Ordering](https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html "enum core::cmp::Ordering")\ ,\ \ Binary searches this slice with a comparator function.\ \ The comparator function should return an order code that indicates whether its argument is `Less`, `Equal` or `Greater` the desired target. If the slice is not sorted or if the comparator function does not implement an order consistent with the sort order of the underlying slice, the returned result is unspecified and meaningless.\ \ If the value is found then [`Result::Ok`](https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Ok "variant core::result::Result::Ok")\ is returned, containing the index of the matching element. If there are multiple matches, then any one of the matches could be returned. The index is chosen deterministically, but is subject to change in future versions of Rust. If the value is not found then [`Result::Err`](https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Err "variant core::result::Result::Err")\ is returned, containing the index where a matching element could be inserted while maintaining sorted order.\ \ See also [`binary_search`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.binary_search "method slice::binary_search")\ , [`binary_search_by_key`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.binary_search_by_key "method slice::binary_search_by_key")\ , and [`partition_point`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.partition_point "method slice::partition_point")\ .\ \ ##### [§](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#examples-47)\ Examples\ \ Looks up a series of four elements. The first is found, with a uniquely determined position; the second and third are not found; the fourth could match any position in `[1, 4]`.\ \ let s = [0, 1, 1, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55];\ \ let seek = 13;\ assert_eq!(s.binary_search_by(|probe| probe.cmp(&seek)), Ok(9));\ let seek = 4;\ assert_eq!(s.binary_search_by(|probe| probe.cmp(&seek)), Err(7));\ let seek = 100;\ assert_eq!(s.binary_search_by(|probe| probe.cmp(&seek)), Err(13));\ let seek = 1;\ let r = s.binary_search_by(|probe| probe.cmp(&seek));\ assert!(match r { Ok(1..=4) => true, _ => false, });\ \ 1.10.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#3071-3074)\ \ #### pub fn [binary\_search\_by\_key](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#method.binary_search_by_key)\ <'a, B, F>( &'a self, b: [&B](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ , f: F, ) -> [Result](https://doc.rust-lang.org/nightly/core/result/enum.Result.html "enum core::result::Result")\ <[usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html)\ , [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html)\ \>\ \ where F: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut")\ ([&'a T](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ ) -> B, B: [Ord](https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html "trait core::cmp::Ord")\ ,\ \ Binary searches this slice with a key extraction function.\ \ Assumes that the slice is sorted by the key, for instance with [`sort_by_key`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.sort_by_key "method slice::sort_by_key")\ using the same key extraction function. If the slice is not sorted by the key, the returned result is unspecified and meaningless.\ \ If the value is found then [`Result::Ok`](https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Ok "variant core::result::Result::Ok")\ is returned, containing the index of the matching element. If there are multiple matches, then any one of the matches could be returned. The index is chosen deterministically, but is subject to change in future versions of Rust. If the value is not found then [`Result::Err`](https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Err "variant core::result::Result::Err")\ is returned, containing the index where a matching element could be inserted while maintaining sorted order.\ \ See also [`binary_search`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.binary_search "method slice::binary_search")\ , [`binary_search_by`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.binary_search_by "method slice::binary_search_by")\ , and [`partition_point`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.partition_point "method slice::partition_point")\ .\ \ ##### [§](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#examples-48)\ Examples\ \ Looks up a series of four elements in a slice of pairs sorted by their second elements. The first is found, with a uniquely determined position; the second and third are not found; the fourth could match any position in `[1, 4]`.\ \ let s = [(0, 0), (2, 1), (4, 1), (5, 1), (3, 1),\ (1, 2), (2, 3), (4, 5), (5, 8), (3, 13),\ (1, 21), (2, 34), (4, 55)];\ \ assert_eq!(s.binary_search_by_key(&13, |&(a, b)| b), Ok(9));\ assert_eq!(s.binary_search_by_key(&4, |&(a, b)| b), Err(7));\ assert_eq!(s.binary_search_by_key(&100, |&(a, b)| b), Err(13));\ let r = s.binary_search_by_key(&1, |&(a, b)| b);\ assert!(match r { Ok(1..=4) => true, _ => false, });\ \ 1.30.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#4499)\ \ #### pub unsafe fn [align\_to](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#method.align_to)\ (&self) -> (&[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ , &[\[U\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ , &[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ )\ \ Transmutes the slice to a slice of another type, ensuring alignment of the types is maintained.\ \ This method splits the slice into three distinct slices: prefix, correctly aligned middle slice of a new type, and the suffix slice. The middle part will be as big as possible under the given alignment constraint and element size.\ \ This method has no purpose when either input element `T` or output element `U` are zero-sized and will return the original slice without splitting anything.\ \ ##### [§](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#safety-7)\ Safety\ \ This method is essentially a `transmute` with respect to the elements in the returned middle slice, so all the usual caveats pertaining to `transmute::` also apply here.\ \ ##### [§](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#examples-49)\ Examples\ \ Basic usage:\ \ unsafe {\ let bytes: [u8; 7] = [1, 2, 3, 4, 5, 6, 7];\ let (prefix, shorts, suffix) = bytes.align_to::();\ // less_efficient_algorithm_for_bytes(prefix);\ // more_efficient_algorithm_for_aligned_shorts(shorts);\ // less_efficient_algorithm_for_bytes(suffix);\ }\ \ [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#4655-4658)\ \ #### pub fn [as\_simd](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#method.as_simd)\ (&self) -> (&[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ , &\[[Simd](https://doc.rust-lang.org/nightly/core/core_simd/vector/struct.Simd.html "struct core::core_simd::vector::Simd")\ \], &[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ )\ \ where [Simd](https://doc.rust-lang.org/nightly/core/core_simd/vector/struct.Simd.html "struct core::core_simd::vector::Simd")\ : [AsRef](https://doc.rust-lang.org/nightly/core/convert/trait.AsRef.html "trait core::convert::AsRef")\ <[\[T; LANES\]](https://doc.rust-lang.org/nightly/std/primitive.array.html)\ \>, T: [SimdElement](https://doc.rust-lang.org/nightly/core/core_simd/vector/trait.SimdElement.html "trait core::core_simd::vector::SimdElement")\ ,\ \ 🔬This is a nightly-only experimental API. (`portable_simd`)\ \ Splits a slice into a prefix, a middle of aligned SIMD types, and a suffix.\ \ This is a safe wrapper around [`slice::align_to`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.align_to "method slice::align_to")\ , so inherits the same guarantees as that method.\ \ ##### [§](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#panics-9)\ Panics\ \ This will panic if the size of the SIMD type is different from `LANES` times that of the scalar.\ \ At the time of writing, the trait restrictions on `Simd` keeps that from ever happening, as only power-of-two numbers of lanes are supported. It’s possible that, in the future, those restrictions might be lifted in a way that would make it possible to see panics from this method for something like `LANES == 3`.\ \ ##### [§](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#examples-50)\ Examples\ \ #![feature(portable_simd)]\ use core::simd::prelude::*;\ \ let short = &[1, 2, 3];\ let (prefix, middle, suffix) = short.as_simd::<4>();\ assert_eq!(middle, []); // Not enough elements for anything in the middle\ \ // They might be split in any possible way between prefix and suffix\ let it = prefix.iter().chain(suffix).copied();\ assert_eq!(it.collect::>(), vec![1, 2, 3]);\ \ fn basic_simd_sum(x: &[f32]) -> f32 {\ use std::ops::Add;\ let (prefix, middle, suffix) = x.as_simd();\ let sums = f32x4::from_array([\ prefix.iter().copied().sum(),\ 0.0,\ 0.0,\ suffix.iter().copied().sum(),\ ]);\ let sums = middle.iter().copied().fold(sums, f32x4::add);\ sums.reduce_sum()\ }\ \ let numbers: Vec = (1..101).map(|x| x as _).collect();\ assert_eq!(basic_simd_sum(&numbers[1..99]), 4949.0);\ \ 1.82.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#4728-4730)\ \ #### pub fn [is\_sorted](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#method.is_sorted)\ (&self) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html)\ \ where T: [PartialOrd](https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html "trait core::cmp::PartialOrd")\ ,\ \ Checks if the elements of this slice are sorted.\ \ That is, for each element `a` and its following element `b`, `a <= b` must hold. If the slice yields exactly zero or one element, `true` is returned.\ \ Note that if `Self::Item` is only `PartialOrd`, but not `Ord`, the above definition implies that this function returns `false` if any two consecutive items are not comparable.\ \ ##### [§](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#examples-51)\ Examples\ \ let empty: [i32; 0] = [];\ \ assert!([1, 2, 2, 9].is_sorted());\ assert!(![1, 3, 2, 4].is_sorted());\ assert!([0].is_sorted());\ assert!(empty.is_sorted());\ assert!(![0.0, 1.0, f32::NAN].is_sorted());\ \ 1.82.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#4771-4773)\ \ #### pub fn [is\_sorted\_by](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#method.is_sorted_by)\ <'a, F>(&'a self, compare: F) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html)\ \ where F: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut")\ ([&'a T](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ , [&'a T](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ ) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html)\ ,\ \ Checks if the elements of this slice are sorted using the given comparator function.\ \ Instead of using `PartialOrd::partial_cmp`, this function uses the given `compare` function to determine whether two elements are to be considered in sorted order.\ \ ##### [§](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#examples-52)\ Examples\ \ assert!([1, 2, 2, 9].is_sorted_by(|a, b| a <= b));\ assert!(![1, 2, 2, 9].is_sorted_by(|a, b| a < b));\ \ assert!([0].is_sorted_by(|a, b| true));\ assert!([0].is_sorted_by(|a, b| false));\ \ let empty: [i32; 0] = [];\ assert!(empty.is_sorted_by(|a, b| false));\ assert!(empty.is_sorted_by(|a, b| true));\ \ 1.82.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#4795-4798)\ \ #### pub fn [is\_sorted\_by\_key](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#method.is_sorted_by_key)\ <'a, F, K>(&'a self, f: F) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html)\ \ where F: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut")\ ([&'a T](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ ) -> K, K: [PartialOrd](https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html "trait core::cmp::PartialOrd")\ ,\ \ Checks if the elements of this slice are sorted using the given key extraction function.\ \ Instead of comparing the slice’s elements directly, this function compares the keys of the elements, as determined by `f`. Apart from that, it’s equivalent to [`is_sorted`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.is_sorted "method slice::is_sorted")\ ; see its documentation for more information.\ \ ##### [§](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#examples-53)\ Examples\ \ assert!(["c", "bb", "aaa"].is_sorted_by_key(|s| s.len()));\ assert!(![-2i32, -1, 0, 3].is_sorted_by_key(|n| n.abs()));\ \ 1.52.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#4854-4856)\ \ #### pub fn [partition\_point](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#method.partition_point)\

(&self, pred: P) -> [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html)\ \ where P: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut")\ ([&T](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ ) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html)\ ,\ \ Returns the index of the partition point according to the given predicate (the index of the first element of the second partition).\ \ The slice is assumed to be partitioned according to the given predicate. This means that all elements for which the predicate returns true are at the start of the slice and all elements for which the predicate returns false are at the end. For example, `[7, 15, 3, 5, 4, 12, 6]` is partitioned under the predicate `x % 2 != 0` (all odd numbers are at the start, all even at the end).\ \ If this slice is not partitioned, the returned result is unspecified and meaningless, as this method performs a kind of binary search.\ \ See also [`binary_search`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.binary_search "method slice::binary_search")\ , [`binary_search_by`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.binary_search_by "method slice::binary_search_by")\ , and [`binary_search_by_key`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.binary_search_by_key "method slice::binary_search_by_key")\ .\ \ ##### [§](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#examples-54)\ Examples\ \ let v = [1, 2, 3, 3, 5, 6, 7];\ let i = v.partition_point(|&x| x < 5);\ \ assert_eq!(i, 4);\ assert!(v[..i].iter().all(|&x| x < 5));\ assert!(v[i..].iter().all(|&x| !(x < 5)));\ \ If all elements of the slice match the predicate, including if the slice is empty, then the length of the slice will be returned:\ \ let a = [2, 4, 8];\ assert_eq!(a.partition_point(|x| x < &100), a.len());\ let a: [i32; 0] = [];\ assert_eq!(a.partition_point(|x| x < &100), 0);\ \ If you want to insert an item to a sorted vector, while maintaining sort order:\ \ let mut s = vec![0, 1, 1, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55];\ let num = 42;\ let idx = s.partition_point(|&x| x <= num);\ s.insert(idx, num);\ assert_eq!(s, [0, 1, 1, 1, 1, 2, 3, 5, 8, 13, 21, 34, 42, 55]);\ \ 1.94.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#5260)\ \ #### pub fn [element\_offset](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#method.element_offset)\ (&self, element: [&T](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ ) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option")\ <[usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html)\ \>\ \ Returns the index that an element reference points to.\ \ Returns `None` if `element` does not point to the start of an element within the slice.\ \ This method is useful for extending slice iterators like [`slice::split`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.split "method slice::split")\ .\ \ Note that this uses pointer arithmetic and **does not compare elements**. To find the index of an element via comparison, use [`.iter().position()`](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.position "method core::iter::traits::iterator::Iterator::position")\ instead.\ \ ##### [§](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#panics-10)\ Panics\ \ Panics if `T` is zero-sized.\ \ ##### [§](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#examples-55)\ Examples\ \ Basic usage:\ \ let nums: &[u32] = &[1, 7, 1, 1];\ let num = &nums[2];\ \ assert_eq!(num, &1);\ assert_eq!(nums.element_offset(num), Some(2));\ \ Returning `None` with an unaligned element:\ \ let arr: &[[u32; 2]] = &[[0, 1], [2, 3]];\ let flat_arr: &[u32] = arr.as_flattened();\ \ let ok_elm: &[u32; 2] = flat_arr[0..2].try_into().unwrap();\ let weird_elm: &[u32; 2] = flat_arr[1..3].try_into().unwrap();\ \ assert_eq!(ok_elm, &[0, 1]);\ assert_eq!(weird_elm, &[1, 2]);\ \ assert_eq!(arr.element_offset(ok_elm), Some(0)); // Points to element 0\ assert_eq!(arr.element_offset(weird_elm), None); // Points between element 0 and 1\ \ [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#5314)\ \ #### pub fn [subslice\_range](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#method.subslice_range)\ (&self, subslice: &[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ ) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option")\ <[Range](https://doc.rust-lang.org/nightly/core/ops/range/struct.Range.html "struct core::ops::range::Range")\ <[usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html)\ \>>\ \ 🔬This is a nightly-only experimental API. (`substr_range`)\ \ Returns the range of indices that a subslice points to.\ \ Returns `None` if `subslice` does not point within the slice or if it is not aligned with the elements in the slice.\ \ This method **does not compare elements**. Instead, this method finds the location in the slice that `subslice` was obtained from. To find the index of a subslice via comparison, instead use [`.windows()`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.windows "method slice::windows")\ [`.position()`](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.position "method core::iter::traits::iterator::Iterator::position")\ .\ \ This method is useful for extending slice iterators like [`slice::split`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.split "method slice::split")\ .\ \ Note that this may return a false positive (either `Some(0..0)` or `Some(self.len()..self.len())`) if `subslice` has a length of zero and points to the beginning or end of another, separate, slice.\ \ ##### [§](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#panics-11)\ Panics\ \ Panics if `T` is zero-sized.\ \ ##### [§](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#examples-56)\ Examples\ \ Basic usage:\ \ #![feature(substr_range)]\ \ let nums = &[0, 5, 10, 0, 0, 5];\ \ let mut iter = nums\ .split(|t| *t == 0)\ .map(|n| nums.subslice_range(n).unwrap());\ \ assert_eq!(iter.next(), Some(0..0));\ assert_eq!(iter.next(), Some(1..3));\ assert_eq!(iter.next(), Some(4..4));\ assert_eq!(iter.next(), Some(5..6));\ \ [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#5341)\ \ #### pub fn [as\_slice](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#method.as_slice)\ (&self) -> &[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ \ 🔬This is a nightly-only experimental API. (`str_as_str`)\ \ Returns the same slice `&[T]`.\ \ This method is redundant when used directly on `&[T]`, but it helps dereferencing other “container” types to slices, for example `Box<[T]>` or `Arc<[T]>`.\ \ 1.79.0 · [Source](https://doc.rust-lang.org/nightly/src/core/str/lossy.rs.html#45)\ \ #### pub fn [utf8\_chunks](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#method.utf8_chunks)\ (&self) -> [Utf8Chunks](https://doc.rust-lang.org/nightly/core/str/lossy/struct.Utf8Chunks.html "struct core::str::lossy::Utf8Chunks")\ <'\_>\ \ Creates an iterator over the contiguous valid UTF-8 ranges of this slice, and the non-UTF-8 fragments in between.\ \ See the [`Utf8Chunk`](https://doc.rust-lang.org/nightly/core/str/lossy/struct.Utf8Chunk.html "struct core::str::lossy::Utf8Chunk")\ type for documentation of the items yielded by this iterator.\ \ ##### [§](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#examples-57)\ Examples\ \ This function formats arbitrary but mostly-UTF-8 bytes into Rust source code in the form of a C-string literal (`c"..."`).\ \ use std::fmt::Write as _;\ \ pub fn cstr_literal(bytes: &[u8]) -> String {\ let mut repr = String::new();\ repr.push_str("c\"");\ for chunk in bytes.utf8_chunks() {\ for ch in chunk.valid().chars() {\ // Escapes \0, \t, \r, \n, \\, \', \", and uses \u{...} for non-printable characters.\ write!(repr, "{}", ch.escape_debug()).unwrap();\ }\ for byte in chunk.invalid() {\ write!(repr, "\\x{:02X}", byte).unwrap();\ }\ }\ repr.push('"');\ repr\ }\ \ fn main() {\ let lit = cstr_literal(b"\xferris the \xf0\x9f\xa6\x80\x07");\ let expected = stringify!(c"\xFErris the 🦀\u{7}");\ assert_eq!(lit, expected);\ }\ \ 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/alloc/slice.rs.html#372-374)\ \ #### pub fn [to\_vec](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#method.to_vec)\ (&self) -> [Vec](https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html "struct alloc::vec::Vec")\ \ \ where T: [Clone](https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html "trait core::clone::Clone")\ ,\ \ Copies `self` into a new `Vec`.\ \ ##### [§](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#examples-58)\ Examples\ \ let s = [10, 40, 30];\ let x = s.to_vec();\ // Here, `s` and `x` can be modified independently.\ \ [Source](https://doc.rust-lang.org/nightly/src/alloc/slice.rs.html#396-398)\ \ #### pub fn [to\_vec\_in](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#method.to_vec_in)\ (&self, alloc: A) -> [Vec](https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html "struct alloc::vec::Vec")\ \ \ where A: [Allocator](https://doc.rust-lang.org/nightly/core/alloc/trait.Allocator.html "trait core::alloc::Allocator")\ , T: [Clone](https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html "trait core::clone::Clone")\ ,\ \ 🔬This is a nightly-only experimental API. (`allocator_api`)\ \ Copies `self` into a new `Vec` with an allocator.\ \ ##### [§](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#examples-59)\ Examples\ \ #![feature(allocator_api)]\ \ use std::alloc::System;\ \ let s = [10, 40, 30];\ let x = s.to_vec_in(System);\ // Here, `s` and `x` can be modified independently.\ \ 1.40.0 · [Source](https://doc.rust-lang.org/nightly/src/alloc/slice.rs.html#510-512)\ \ #### pub fn [repeat](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#method.repeat)\ (&self, n: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html)\ ) -> [Vec](https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html "struct alloc::vec::Vec")\ \ \ where T: [Copy](https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html "trait core::marker::Copy")\ ,\ \ Creates a vector by copying a slice `n` times.\ \ ##### [§](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#panics-12)\ Panics\ \ This function will panic if the capacity would overflow.\ \ ##### [§](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#examples-60)\ Examples\ \ assert_eq!([1, 2].repeat(3), vec![1, 2, 1, 2, 1, 2]);\ \ A panic upon overflow:\ \ [ⓘ](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html# "This example panics")\ \ // this will panic at runtime\ b"0123456789abcdef".repeat(usize::MAX);\ \ 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/alloc/slice.rs.html#578-580)\ \ #### pub fn [concat](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#method.concat)\ (&self) -> <[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ as [Concat](https://doc.rust-lang.org/nightly/alloc/slice/trait.Concat.html "trait alloc::slice::Concat")\ >::[Output](https://doc.rust-lang.org/nightly/alloc/slice/trait.Concat.html#associatedtype.Output "type alloc::slice::Concat::Output")\ [ⓘ](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#)\ \ where [\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ : [Concat](https://doc.rust-lang.org/nightly/alloc/slice/trait.Concat.html "trait alloc::slice::Concat")\ , Item: ?[Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized")\ ,\ \ Flattens a slice of `T` into a single value `Self::Output`.\ \ ##### [§](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#examples-61)\ Examples\ \ assert_eq!(["hello", "world"].concat(), "helloworld");\ assert_eq!([[1, 2], [3, 4]].concat(), [1, 2, 3, 4]);\ \ 1.3.0 · [Source](https://doc.rust-lang.org/nightly/src/alloc/slice.rs.html#597-599)\ \ #### pub fn [join](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#method.join)\ ( &self, sep: Separator, ) -> <[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ as [Join](https://doc.rust-lang.org/nightly/alloc/slice/trait.Join.html "trait alloc::slice::Join")\ >::[Output](https://doc.rust-lang.org/nightly/alloc/slice/trait.Join.html#associatedtype.Output "type alloc::slice::Join::Output")\ [ⓘ](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#)\ \ where [\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ : [Join](https://doc.rust-lang.org/nightly/alloc/slice/trait.Join.html "trait alloc::slice::Join")\ ,\ \ Flattens a slice of `T` into a single value `Self::Output`, placing a given separator between each.\ \ ##### [§](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#examples-62)\ Examples\ \ assert_eq!(["hello", "world"].join(" "), "hello world");\ assert_eq!([[1, 2], [3, 4]].join(&0), [1, 2, 0, 3, 4]);\ assert_eq!([[1, 2], [3, 4]].join(&[0, 0][..]), [1, 2, 0, 0, 3, 4]);\ \ 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/alloc/slice.rs.html#617-619)\ \ #### pub fn [connect](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#method.connect)\ ( &self, sep: Separator, ) -> <[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ as [Join](https://doc.rust-lang.org/nightly/alloc/slice/trait.Join.html "trait alloc::slice::Join")\ >::[Output](https://doc.rust-lang.org/nightly/alloc/slice/trait.Join.html#associatedtype.Output "type alloc::slice::Join::Output")\ [ⓘ](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#)\ \ where [\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ : [Join](https://doc.rust-lang.org/nightly/alloc/slice/trait.Join.html "trait alloc::slice::Join")\ ,\ \ 👎Deprecated since 1.3.0: renamed to join\ \ Flattens a slice of `T` into a single value `Self::Output`, placing a given separator between each.\ \ ##### [§](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#examples-63)\ Examples\ \ assert_eq!(["hello", "world"].connect(" "), "hello world");\ assert_eq!([[1, 2], [3, 4]].connect(&0), [1, 2, 0, 3, 4]);\ \ 1.23.0 · [Source](https://doc.rust-lang.org/nightly/src/alloc/slice.rs.html#641)\ \ #### pub fn [to\_ascii\_uppercase](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#method.to_ascii_uppercase)\ (&self) -> [Vec](https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html "struct alloc::vec::Vec")\ <[u8](https://doc.rust-lang.org/nightly/std/primitive.u8.html)\ \> [ⓘ](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#)\ \ Returns a vector containing a copy of this slice where each byte is mapped to its ASCII upper case equivalent.\ \ ASCII letters ‘a’ to ‘z’ are mapped to ‘A’ to ‘Z’, but non-ASCII letters are unchanged.\ \ To uppercase the value in-place, use [`make_ascii_uppercase`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.make_ascii_uppercase "method slice::make_ascii_uppercase")\ .\ \ 1.23.0 · [Source](https://doc.rust-lang.org/nightly/src/alloc/slice.rs.html#662)\ \ #### pub fn [to\_ascii\_lowercase](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#method.to_ascii_lowercase)\ (&self) -> [Vec](https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html "struct alloc::vec::Vec")\ <[u8](https://doc.rust-lang.org/nightly/std/primitive.u8.html)\ \> [ⓘ](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#)\ \ Returns a vector containing a copy of this slice where each byte is mapped to its ASCII lower case equivalent.\ \ ASCII letters ‘A’ to ‘Z’ are mapped to ‘a’ to ‘z’, but non-ASCII letters are unchanged.\ \ To lowercase the value in-place, use [`make_ascii_lowercase`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.make_ascii_lowercase "method slice::make_ascii_lowercase")\ .\ \ Trait Implementations[§](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#trait-implementations)\ \ --------------------------------------------------------------------------------------------------------\ \ [Source](https://docs.rs/memmap2/0.9.10/src/memmap2/lib.rs.html#907-912)\ [§](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#impl-AsRef%3C%5Bu8%5D%3E-for-Mmap)\ \ ### impl [AsRef](https://doc.rust-lang.org/nightly/core/convert/trait.AsRef.html "trait core::convert::AsRef")\ <\[[u8](https://doc.rust-lang.org/nightly/std/primitive.u8.html)\ \]> for [Mmap](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html "struct memmap2::Mmap")\ \ [Source](https://docs.rs/memmap2/0.9.10/src/memmap2/lib.rs.html#909-911)\ [§](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#method.as_ref)\ \ #### fn [as\_ref](https://doc.rust-lang.org/nightly/core/convert/trait.AsRef.html#tymethod.as_ref)\ (&self) -> &\[[u8](https://doc.rust-lang.org/nightly/std/primitive.u8.html)\ \] [ⓘ](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#)\ \ Converts this type into a shared reference of the (usually inferred) input type.\ \ [Source](https://docs.rs/memmap2/0.9.10/src/memmap2/lib.rs.html#914-921)\ [§](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#impl-Debug-for-Mmap)\ \ ### impl [Debug](https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html "trait core::fmt::Debug")\ for [Mmap](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html "struct memmap2::Mmap")\ \ [Source](https://docs.rs/memmap2/0.9.10/src/memmap2/lib.rs.html#915-920)\ [§](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#method.fmt)\ \ #### fn [fmt](https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt)\ (&self, fmt: &mut [Formatter](https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html "struct core::fmt::Formatter")\ <'\_>) -> [Result](https://doc.rust-lang.org/nightly/core/fmt/type.Result.html "type core::fmt::Result")\ \ Formats the value using the given formatter. [Read more](https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt)\ \ [Source](https://docs.rs/memmap2/0.9.10/src/memmap2/lib.rs.html#898-905)\ [§](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#impl-Deref-for-Mmap)\ \ ### impl [Deref](https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html "trait core::ops::deref::Deref")\ for [Mmap](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html "struct memmap2::Mmap")\ \ [Source](https://docs.rs/memmap2/0.9.10/src/memmap2/lib.rs.html#899)\ [§](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#associatedtype.Target)\ \ #### type [Target](https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html#associatedtype.Target)\ = \[[u8](https://doc.rust-lang.org/nightly/std/primitive.u8.html)\ \]\ \ The resulting type after dereferencing.\ \ [Source](https://docs.rs/memmap2/0.9.10/src/memmap2/lib.rs.html#902-904)\ [§](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#method.deref)\ \ #### fn [deref](https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html#tymethod.deref)\ (&self) -> &\[[u8](https://doc.rust-lang.org/nightly/std/primitive.u8.html)\ \] [ⓘ](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#)\ \ Dereferences the value.\ \ [Source](https://docs.rs/memmap2/0.9.10/src/memmap2/lib.rs.html#1150-1154)\ [§](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#impl-From%3CMmap%3E-for-MmapRaw)\ \ ### impl [From](https://doc.rust-lang.org/nightly/core/convert/trait.From.html "trait core::convert::From")\ <[Mmap](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html "struct memmap2::Mmap")\ \> for [MmapRaw](https://docs.rs/memmap2/0.9.10/memmap2/struct.MmapRaw.html "struct memmap2::MmapRaw")\ \ [Source](https://docs.rs/memmap2/0.9.10/src/memmap2/lib.rs.html#1151-1153)\ [§](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#method.from)\ \ #### fn [from](https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from)\ (value: [Mmap](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html "struct memmap2::Mmap")\ ) -> Self\ \ Converts to this type from the input type.\ \ Auto Trait Implementations[§](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#synthetic-implementations)\ \ -----------------------------------------------------------------------------------------------------------------\ \ [§](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#impl-Freeze-for-Mmap)\ \ ### impl [Freeze](https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html "trait core::marker::Freeze")\ for [Mmap](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html "struct memmap2::Mmap")\ \ [§](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#impl-RefUnwindSafe-for-Mmap)\ \ ### impl [RefUnwindSafe](https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html "trait core::panic::unwind_safe::RefUnwindSafe")\ for [Mmap](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html "struct memmap2::Mmap")\ \ [§](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#impl-Send-for-Mmap)\ \ ### impl [Send](https://doc.rust-lang.org/nightly/core/marker/trait.Send.html "trait core::marker::Send")\ for [Mmap](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html "struct memmap2::Mmap")\ \ [§](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#impl-Sync-for-Mmap)\ \ ### impl [Sync](https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html "trait core::marker::Sync")\ for [Mmap](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html "struct memmap2::Mmap")\ \ [§](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#impl-Unpin-for-Mmap)\ \ ### impl [Unpin](https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html "trait core::marker::Unpin")\ for [Mmap](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html "struct memmap2::Mmap")\ \ [§](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#impl-UnwindSafe-for-Mmap)\ \ ### impl [UnwindSafe](https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html "trait core::panic::unwind_safe::UnwindSafe")\ for [Mmap](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html "struct memmap2::Mmap")\ \ Blanket Implementations[§](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#blanket-implementations)\ \ ------------------------------------------------------------------------------------------------------------\ \ [Source](https://doc.rust-lang.org/nightly/src/core/any.rs.html#138)\ [§](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#impl-Any-for-T)\ \ ### impl [Any](https://doc.rust-lang.org/nightly/core/any/trait.Any.html "trait core::any::Any")\ for T\ \ where T: 'static + ?[Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized")\ ,\ \ [Source](https://doc.rust-lang.org/nightly/src/core/any.rs.html#139)\ [§](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#method.type_id)\ \ #### fn [type\_id](https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id)\ (&self) -> [TypeId](https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html "struct core::any::TypeId")\ \ Gets the `TypeId` of `self`. [Read more](https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id)\ \ [Source](https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#212)\ [§](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#impl-Borrow%3CT%3E-for-T)\ \ ### impl [Borrow](https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html "trait core::borrow::Borrow")\ for T\ \ where T: ?[Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized")\ ,\ \ [Source](https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#214)\ [§](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#method.borrow)\ \ #### fn [borrow](https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow)\ (&self) -> [&T](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ \ Immutably borrows from an owned value. [Read more](https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow)\ \ [Source](https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#221)\ [§](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#impl-BorrowMut%3CT%3E-for-T)\ \ ### impl [BorrowMut](https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html "trait core::borrow::BorrowMut")\ for T\ \ where T: ?[Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized")\ ,\ \ [Source](https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#222)\ [§](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#method.borrow_mut)\ \ #### fn [borrow\_mut](https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut)\ (&mut self) -> [&mut T](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ \ Mutably borrows from an owned value. [Read more](https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut)\ \ [Source](https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#785)\ [§](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#impl-From%3CT%3E-for-T)\ \ ### impl [From](https://doc.rust-lang.org/nightly/core/convert/trait.From.html "trait core::convert::From")\ for T\ \ [Source](https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#788)\ [§](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#method.from-1)\ \ #### fn [from](https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from)\ (t: T) -> T\ \ Returns the argument unchanged.\ \ [Source](https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#767-769)\ [§](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#impl-Into%3CU%3E-for-T)\ \ ### impl [Into](https://doc.rust-lang.org/nightly/core/convert/trait.Into.html "trait core::convert::Into")\ for T\ \ where U: [From](https://doc.rust-lang.org/nightly/core/convert/trait.From.html "trait core::convert::From")\ ,\ \ [Source](https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#777)\ [§](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#method.into)\ \ #### fn [into](https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into)\ (self) -> U\ \ Calls `U::from(self)`.\ \ That is, this conversion is whatever the implementation of `[From](https://doc.rust-lang.org/nightly/core/convert/trait.From.html "trait core::convert::From") for U` chooses to do.\ \ [Source](https://doc.rust-lang.org/nightly/src/core/ops/deref.rs.html#378-380)\ [§](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#impl-Receiver-for-P)\ \ ### impl [Receiver](https://doc.rust-lang.org/nightly/core/ops/deref/trait.Receiver.html "trait core::ops::deref::Receiver")\ for P\ \ where P: [Deref](https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html "trait core::ops::deref::Deref")\ + ?[Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized")\ , T: ?[Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized")\ ,\ \ [Source](https://doc.rust-lang.org/nightly/src/core/ops/deref.rs.html#382)\ [§](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#associatedtype.Target-1)\ \ #### type [Target](https://doc.rust-lang.org/nightly/core/ops/deref/trait.Receiver.html#associatedtype.Target)\ = T\ \ 🔬This is a nightly-only experimental API. (`arbitrary_self_types`)\ \ The target type on which the method may be called.\ \ [Source](https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#827-829)\ [§](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#impl-TryFrom%3CU%3E-for-T)\ \ ### impl [TryFrom](https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html "trait core::convert::TryFrom")\ for T\ \ where U: [Into](https://doc.rust-lang.org/nightly/core/convert/trait.Into.html "trait core::convert::Into")\ ,\ \ [Source](https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#831)\ [§](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#associatedtype.Error-1)\ \ #### type [Error](https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error)\ = [Infallible](https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html "enum core::convert::Infallible")\ \ The type returned in the event of a conversion error.\ \ [Source](https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#834)\ [§](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#method.try_from)\ \ #### fn [try\_from](https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from)\ (value: U) -> [Result](https://doc.rust-lang.org/nightly/core/result/enum.Result.html "enum core::result::Result")\ >::[Error](https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error "type core::convert::TryFrom::Error")\ \>\ \ Performs the conversion.\ \ [Source](https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#811-813)\ [§](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#impl-TryInto%3CU%3E-for-T)\ \ ### impl [TryInto](https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html "trait core::convert::TryInto")\ for T\ \ where U: [TryFrom](https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html "trait core::convert::TryFrom")\ ,\ \ [Source](https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#815)\ [§](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#associatedtype.Error)\ \ #### type [Error](https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error)\ = >::[Error](https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error "type core::convert::TryFrom::Error")\ \ The type returned in the event of a conversion error.\ \ [Source](https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#818)\ [§](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html#method.try_into)\ \ #### fn [try\_into](https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into)\ (self) -> [Result](https://doc.rust-lang.org/nightly/core/result/enum.Result.html "enum core::result::Result")\ >::[Error](https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error "type core::convert::TryFrom::Error")\ \>\ \ Performs the conversion. --- # FileReader in arrow_ipc::reader - Rust [Docs.rs](https://docs.rs/) * [arrow-ipc-58.1.0](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html# "Support for the Arrow IPC format") * arrow-ipc 58.1.0 * [Docs.rs crate page](https://docs.rs/crate/arrow-ipc/58.1.0 "See arrow-ipc in docs.rs") * [Apache-2.0](https://spdx.org/licenses/Apache-2.0) * Links * [Homepage](https://github.com/apache/arrow-rs) * [Repository](https://github.com/apache/arrow-rs) * [crates.io](https://crates.io/crates/arrow-ipc "See arrow-ipc in crates.io") * [Source](https://docs.rs/crate/arrow-ipc/58.1.0/source/ "Browse source of arrow-ipc-58.1.0") * Owners * [kou](https://crates.io/users/kou) * [xhochy](https://crates.io/users/xhochy) * [nevi-me](https://crates.io/users/nevi-me) * [alamb](https://crates.io/users/alamb) * [tustvold](https://crates.io/users/tustvold) * Dependencies * * [arrow-array ^58.1.0 _normal_](https://docs.rs/arrow-array/^58.1.0/) * [arrow-buffer ^58.1.0 _normal_](https://docs.rs/arrow-buffer/^58.1.0/) * [arrow-data ^58.1.0 _normal_](https://docs.rs/arrow-data/^58.1.0/) * [arrow-schema ^58.1.0 _normal_](https://docs.rs/arrow-schema/^58.1.0/) * [arrow-select ^58.1.0 _normal_](https://docs.rs/arrow-select/^58.1.0/) * [flatbuffers ^25.2.10 _normal_](https://docs.rs/flatbuffers/^25.2.10/) * [lz4\_flex ^0.13 _normal_ _optional_](https://docs.rs/lz4_flex/^0.13/) * [zstd ^0.13.0 _normal_ _optional_](https://docs.rs/zstd/^0.13.0/) * [bytes ^1.9 _dev_](https://docs.rs/bytes/^1.9/) * [criterion ^0.8.0 _dev_](https://docs.rs/criterion/^0.8.0/) * [memmap2 ^0.9.3 _dev_](https://docs.rs/memmap2/^0.9.3/) * [tempfile ^3.3 _dev_](https://docs.rs/tempfile/^3.3/) * [tokio ^1.43.0 _dev_](https://docs.rs/tokio/^1.43.0/) * Versions * [**100%** of the crate is documented](https://docs.rs/crate/arrow-ipc/58.1.0) * [Platform](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#) * [x86\_64-unknown-linux-gnu](https://docs.rs/crate/arrow-ipc/58.1.0/target-redirect/arrow_ipc/reader/struct.FileReader.html) * [Feature flags](https://docs.rs/crate/arrow-ipc/58.1.0/features "Browse available feature flags of arrow-ipc-58.1.0") * [docs.rs](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#) * [About docs.rs](https://docs.rs/about) * [Badges](https://docs.rs/about/badges) * [Builds](https://docs.rs/about/builds) * [Metadata](https://docs.rs/about/metadata) * [Shorthand URLs](https://docs.rs/about/redirections) * [Download](https://docs.rs/about/download) * [Rustdoc JSON](https://docs.rs/about/rustdoc-json) * [Build queue](https://docs.rs/releases/queue) * [Privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#docs.rs) * [Rust](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#) * [Rust website](https://www.rust-lang.org/) * [The Book](https://doc.rust-lang.org/book/) * [Standard Library API Reference](https://doc.rust-lang.org/std/) * [Rust by Example](https://doc.rust-lang.org/rust-by-example/) * [The Cargo Guide](https://doc.rust-lang.org/cargo/guide/) * [Clippy Documentation](https://doc.rust-lang.org/nightly/clippy) [Skip to main content](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#main-content) [FileReader](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#) ---------------------------------------------------------------------------------------- [arrow\_ipc](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/index.html) ::[reader](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/index.html) Struct FileReader Copy item path ================================ [Source](https://docs.rs/arrow-ipc/58.1.0/src/arrow_ipc/reader.rs.html#1291-1311) pub struct FileReader { /* private fields */ } Expand description Arrow File Reader Reads Arrow [`RecordBatch`](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/arrow_array/record_batch/struct.RecordBatch.html "struct arrow_array::record_batch::RecordBatch") es from bytes in the [IPC File Format](https://arrow.apache.org/docs/format/Columnar.html#ipc-file-format) , providing random access to the record batches. [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#see-also) See Also ----------------------------------------------------------------------------------------------- * [`Self::set_index`](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#method.set_index "method arrow_ipc::reader::FileReader::set_index") for random access * [`StreamReader`](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.StreamReader.html "struct arrow_ipc::reader::StreamReader") for reading streaming data [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#example-reading-from-a-file) Example: Reading from a `File` ---------------------------------------------------------------------------------------------------------------------------------------- use arrow_array::record_batch; let projection = None; // read all columns let mut reader = FileReader::try_new(&mut file, projection).unwrap(); // Position the reader to the second batch reader.set_index(1).unwrap(); // read batches from the reader using the Iterator trait let mut num_rows = 0; for batch in reader { let batch = batch.unwrap(); num_rows += batch.num_rows(); } assert_eq!(num_rows, 3); [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#example-reading-from-mmaped-file) Example: Reading from `mmap`ed file -------------------------------------------------------------------------------------------------------------------------------------------------- For an example creating Arrays without copying using memory mapped (`mmap`) files see the [`zero_copy_ipc`](https://github.com/apache/arrow-rs/blob/main/arrow/examples/zero_copy_ipc.rs) example. Implementations[§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#implementations) ------------------------------------------------------------------------------------------------------------- [Source](https://docs.rs/arrow-ipc/58.1.0/src/arrow_ipc/reader.rs.html#1324-1331) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#impl-FileReader%3CBufReader%3CR%3E%3E) ### impl [FileReader](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html "struct arrow_ipc::reader::FileReader") <[BufReader](https://doc.rust-lang.org/nightly/std/io/buffered/bufreader/struct.BufReader.html "struct std::io::buffered::bufreader::BufReader") > [Source](https://docs.rs/arrow-ipc/58.1.0/src/arrow_ipc/reader.rs.html#1328-1330) #### pub fn [try\_new\_buffered](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#method.try_new_buffered) ( reader: R, projection: [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <[Vec](https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html "struct alloc::vec::Vec") <[usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) \>>, ) -> [Result](https://doc.rust-lang.org/nightly/core/result/enum.Result.html "enum core::result::Result") Try to create a new file reader with the reader wrapped in a BufReader. See [`FileReader::try_new`](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#method.try_new "associated function arrow_ipc::reader::FileReader::try_new") for an unbuffered version. [Source](https://docs.rs/arrow-ipc/58.1.0/src/arrow_ipc/reader.rs.html#1333-1414) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#impl-FileReader%3CR%3E) ### impl [FileReader](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html "struct arrow_ipc::reader::FileReader") [Source](https://docs.rs/arrow-ipc/58.1.0/src/arrow_ipc/reader.rs.html#1344-1350) #### pub fn [try\_new](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#method.try_new) ( reader: R, projection: [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <[Vec](https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html "struct alloc::vec::Vec") <[usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) \>>, ) -> [Result](https://doc.rust-lang.org/nightly/core/result/enum.Result.html "enum core::result::Result") Try to create a new file reader. There is no internal buffering. If buffered reads are needed you likely want to use [`FileReader::try_new_buffered`](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#method.try_new_buffered "associated function arrow_ipc::reader::FileReader::try_new_buffered") instead. ##### [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#errors) Errors An [‘Err’](https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Err "variant core::result::Result::Err") may be returned if: * the file does not meet the Arrow Format footer requirements, or * file endianness does not match the target endianness. [Source](https://docs.rs/arrow-ipc/58.1.0/src/arrow_ipc/reader.rs.html#1353-1355) #### pub fn [custom\_metadata](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#method.custom_metadata) (&self) -> &[HashMap](https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html "struct std::collections::hash::map::HashMap") <[String](https://doc.rust-lang.org/nightly/alloc/string/struct.String.html "struct alloc::string::String") , [String](https://doc.rust-lang.org/nightly/alloc/string/struct.String.html "struct alloc::string::String") \> Return user defined customized metadata [Source](https://docs.rs/arrow-ipc/58.1.0/src/arrow_ipc/reader.rs.html#1358-1360) #### pub fn [num\_batches](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#method.num_batches) (&self) -> [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) Return the number of batches in the file [Source](https://docs.rs/arrow-ipc/58.1.0/src/arrow_ipc/reader.rs.html#1363-1365) #### pub fn [schema](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#method.schema) (&self) -> [SchemaRef](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/arrow_schema/schema/type.SchemaRef.html "type arrow_schema::schema::SchemaRef") Return the schema of the file [Source](https://docs.rs/arrow-ipc/58.1.0/src/arrow_ipc/reader.rs.html#1370-1380) #### pub fn [set\_index](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#method.set_index) (&mut self, index: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) ) -> [Result](https://doc.rust-lang.org/nightly/core/result/enum.Result.html "enum core::result::Result") <[()](https://doc.rust-lang.org/nightly/std/primitive.unit.html) , [ArrowError](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/arrow_schema/error/enum.ArrowError.html "enum arrow_schema::error::ArrowError") \> See to a specific [`RecordBatch`](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/arrow_array/record_batch/struct.RecordBatch.html "struct arrow_array::record_batch::RecordBatch") Sets the current block to the index, allowing random reads [Source](https://docs.rs/arrow-ipc/58.1.0/src/arrow_ipc/reader.rs.html#1394-1396) #### pub fn [get\_ref](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#method.get_ref) (&self) -> [&R](https://doc.rust-lang.org/nightly/std/primitive.reference.html) Gets a reference to the underlying reader. It is inadvisable to directly read from the underlying reader. [Source](https://docs.rs/arrow-ipc/58.1.0/src/arrow_ipc/reader.rs.html#1401-1403) #### pub fn [get\_mut](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#method.get_mut) (&mut self) -> [&mut R](https://doc.rust-lang.org/nightly/std/primitive.reference.html) Gets a mutable reference to the underlying reader. It is inadvisable to directly read from the underlying reader. [Source](https://docs.rs/arrow-ipc/58.1.0/src/arrow_ipc/reader.rs.html#1410-1413) #### pub unsafe fn [with\_skip\_validation](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#method.with_skip_validation) (self, skip\_validation: [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) ) -> Self Specifies if validation should be skipped when reading data (defaults to `false`) ##### [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#safety) Safety See [`FileDecoder::with_skip_validation`](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileDecoder.html#method.with_skip_validation "method arrow_ipc::reader::FileDecoder::with_skip_validation") Trait Implementations[§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#trait-implementations) ------------------------------------------------------------------------------------------------------------------------- [Source](https://docs.rs/arrow-ipc/58.1.0/src/arrow_ipc/reader.rs.html#1313-1322) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#impl-Debug-for-FileReader%3CR%3E) ### impl [Debug](https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html "trait core::fmt::Debug") for [FileReader](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html "struct arrow_ipc::reader::FileReader") [Source](https://docs.rs/arrow-ipc/58.1.0/src/arrow_ipc/reader.rs.html#1314-1321) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#method.fmt) #### fn [fmt](https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt) (&self, f: &mut [Formatter](https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html "struct core::fmt::Formatter") <'\_>) -> [Result](https://doc.rust-lang.org/nightly/core/result/enum.Result.html "enum core::result::Result") <[()](https://doc.rust-lang.org/nightly/std/primitive.unit.html) , [Error](https://doc.rust-lang.org/nightly/core/fmt/struct.Error.html "struct core::fmt::Error") \> Formats the value using the given formatter. [Read more](https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt) [Source](https://docs.rs/arrow-ipc/58.1.0/src/arrow_ipc/reader.rs.html#1416-1427) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#impl-Iterator-for-FileReader%3CR%3E) ### impl [Iterator](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html "trait core::iter::traits::iterator::Iterator") for [FileReader](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html "struct arrow_ipc::reader::FileReader") [Source](https://docs.rs/arrow-ipc/58.1.0/src/arrow_ipc/reader.rs.html#1417) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#associatedtype.Item) #### type [Item](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item) = [Result](https://doc.rust-lang.org/nightly/core/result/enum.Result.html "enum core::result::Result") <[RecordBatch](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/arrow_array/record_batch/struct.RecordBatch.html "struct arrow_array::record_batch::RecordBatch") , [ArrowError](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/arrow_schema/error/enum.ArrowError.html "enum arrow_schema::error::ArrowError") \> The type of the elements being iterated over. [Source](https://docs.rs/arrow-ipc/58.1.0/src/arrow_ipc/reader.rs.html#1419-1426) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#method.next) #### fn [next](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#tymethod.next) (&mut self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") Advances the iterator and returns the next value. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#tymethod.next) [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#112-116) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#method.next_chunk) #### fn [next\_chunk](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.next_chunk) ( &mut self, ) -> [Result](https://doc.rust-lang.org/nightly/core/result/enum.Result.html "enum core::result::Result") <\[Self::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item "type core::iter::traits::iterator::Iterator::Item")\ ; [N](https://doc.rust-lang.org/nightly/std/primitive.array.html)\ \], [IntoIter](https://doc.rust-lang.org/nightly/core/array/iter/struct.IntoIter.html "struct core::array::iter::IntoIter") > where Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , 🔬This is a nightly-only experimental API. (`iter_next_chunk`) Advances the iterator and returns an array containing the next `N` values. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.next_chunk) 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#189) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#method.size_hint) #### fn [size\_hint](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.size_hint) (&self) -> ([usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) , [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <[usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) \>) Returns the bounds on the remaining length of the iterator. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.size_hint) 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#225-227) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#method.count) #### fn [count](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.count) (self) -> [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) where Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , Consumes the iterator, counting the number of iterations and returning it. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.count) 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#258-260) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#method.last) #### fn [last](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.last) (self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") where Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , Consumes the iterator, returning the last element. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.last) [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#306) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#method.advance_by) #### fn [advance\_by](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.advance_by) (&mut self, n: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) ) -> [Result](https://doc.rust-lang.org/nightly/core/result/enum.Result.html "enum core::result::Result") <[()](https://doc.rust-lang.org/nightly/std/primitive.unit.html) , [NonZero](https://doc.rust-lang.org/nightly/core/num/nonzero/struct.NonZero.html "struct core::num::nonzero::NonZero") <[usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) \>> 🔬This is a nightly-only experimental API. (`iter_advance_by`) Advances the iterator by `n` elements. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.advance_by) 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#384) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#method.nth) #### fn [nth](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.nth) (&mut self, n: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) ) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") Returns the `n`th element of the iterator. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.nth) 1.28.0 · [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#435-437) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#method.step_by) #### fn [step\_by](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.step_by) (self, step: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) ) -> [StepBy](https://doc.rust-lang.org/nightly/core/iter/adapters/step_by/struct.StepBy.html "struct core::iter::adapters::step_by::StepBy") where Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , Creates an iterator starting at the same point, but stepping by the given amount at each iteration. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.step_by) 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#507-510) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#method.chain) #### fn [chain](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.chain) (self, other: U) -> [Chain](https://doc.rust-lang.org/nightly/core/iter/adapters/chain/struct.Chain.html "struct core::iter::adapters::chain::Chain") ::[IntoIter](https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.IntoIter "type core::iter::traits::collect::IntoIterator::IntoIter") \> where Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , U: [IntoIterator](https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html "trait core::iter::traits::collect::IntoIterator") , Takes two iterators and creates a new iterator over both in sequence. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.chain) 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#626-629) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#method.zip) #### fn [zip](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.zip) (self, other: U) -> [Zip](https://doc.rust-lang.org/nightly/core/iter/adapters/zip/struct.Zip.html "struct core::iter::adapters::zip::Zip") ::[IntoIter](https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.IntoIter "type core::iter::traits::collect::IntoIterator::IntoIter") \> where Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , U: [IntoIterator](https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html "trait core::iter::traits::collect::IntoIterator") , ‘Zips up’ two iterators into a single iterator of pairs. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.zip) [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#691-694) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#method.intersperse) #### fn [intersperse](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.intersperse) (self, separator: Self::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item "type core::iter::traits::iterator::Iterator::Item") ) -> [Intersperse](https://doc.rust-lang.org/nightly/core/iter/adapters/intersperse/struct.Intersperse.html "struct core::iter::adapters::intersperse::Intersperse") where Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , Self::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item "type core::iter::traits::iterator::Iterator::Item") : [Clone](https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html "trait core::clone::Clone") , 🔬This is a nightly-only experimental API. (`iter_intersperse`) Creates a new iterator which places a copy of `separator` between items of the original iterator. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.intersperse) [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#771-774) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#method.intersperse_with) #### fn [intersperse\_with](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.intersperse_with) (self, separator: G) -> [IntersperseWith](https://doc.rust-lang.org/nightly/core/iter/adapters/intersperse/struct.IntersperseWith.html "struct core::iter::adapters::intersperse::IntersperseWith") where Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , G: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut") () -> Self::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item "type core::iter::traits::iterator::Iterator::Item") , 🔬This is a nightly-only experimental API. (`iter_intersperse`) Creates a new iterator which places an item generated by `separator` between items of the original iterator. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.intersperse_with) 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#831-834) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#method.map) #### fn [map](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.map) (self, f: F) -> [Map](https://doc.rust-lang.org/nightly/core/iter/adapters/map/struct.Map.html "struct core::iter::adapters::map::Map") where Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , F: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut") (Self::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item "type core::iter::traits::iterator::Iterator::Item") ) -> B, Takes a closure and creates an iterator which calls that closure on each element. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.map) 1.21.0 · [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#877-880) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#method.for_each) #### fn [for\_each](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.for_each) (self, f: F) where Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , F: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut") (Self::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item "type core::iter::traits::iterator::Iterator::Item") ), Calls a closure on each element of an iterator. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.for_each) 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#953-956) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#method.filter) #### fn [filter](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.filter)

(self, predicate: P) -> [Filter](https://doc.rust-lang.org/nightly/core/iter/adapters/filter/struct.Filter.html "struct core::iter::adapters::filter::Filter") where Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , P: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut") (&Self::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item "type core::iter::traits::iterator::Iterator::Item") ) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) , Creates an iterator which uses a closure to determine if an element should be yielded. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.filter) 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#999-1002) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#method.filter_map) #### fn [filter\_map](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.filter_map) (self, f: F) -> [FilterMap](https://doc.rust-lang.org/nightly/core/iter/adapters/filter_map/struct.FilterMap.html "struct core::iter::adapters::filter_map::FilterMap") where Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , F: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut") (Self::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item "type core::iter::traits::iterator::Iterator::Item") ) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") , Creates an iterator that both filters and maps. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.filter_map) 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#1047-1049) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#method.enumerate) #### fn [enumerate](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.enumerate) (self) -> [Enumerate](https://doc.rust-lang.org/nightly/core/iter/adapters/enumerate/struct.Enumerate.html "struct core::iter::adapters::enumerate::Enumerate") where Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , Creates an iterator which gives the current iteration count as well as the next value. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.enumerate) 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#1119-1121) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#method.peekable) #### fn [peekable](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.peekable) (self) -> [Peekable](https://doc.rust-lang.org/nightly/core/iter/adapters/peekable/struct.Peekable.html "struct core::iter::adapters::peekable::Peekable") where Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , Creates an iterator which can use the [`peek`](https://doc.rust-lang.org/nightly/core/iter/adapters/peekable/struct.Peekable.html#method.peek "method core::iter::adapters::peekable::Peekable::peek") and [`peek_mut`](https://doc.rust-lang.org/nightly/core/iter/adapters/peekable/struct.Peekable.html#method.peek_mut "method core::iter::adapters::peekable::Peekable::peek_mut") methods to look at the next element of the iterator without consuming it. See their documentation for more information. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.peekable) 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#1185-1188) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#method.skip_while) #### fn [skip\_while](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.skip_while)

(self, predicate: P) -> [SkipWhile](https://doc.rust-lang.org/nightly/core/iter/adapters/skip_while/struct.SkipWhile.html "struct core::iter::adapters::skip_while::SkipWhile") where Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , P: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut") (&Self::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item "type core::iter::traits::iterator::Iterator::Item") ) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) , Creates an iterator that [`skip`](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.skip "method core::iter::traits::iterator::Iterator::skip") s elements based on a predicate. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.skip_while) 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#1264-1267) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#method.take_while) #### fn [take\_while](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.take_while)

(self, predicate: P) -> [TakeWhile](https://doc.rust-lang.org/nightly/core/iter/adapters/take_while/struct.TakeWhile.html "struct core::iter::adapters::take_while::TakeWhile") where Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , P: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut") (&Self::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item "type core::iter::traits::iterator::Iterator::Item") ) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) , Creates an iterator that yields elements based on a predicate. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.take_while) 1.57.0 · [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#1353-1356) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#method.map_while) #### fn [map\_while](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.map_while) (self, predicate: P) -> [MapWhile](https://doc.rust-lang.org/nightly/core/iter/adapters/map_while/struct.MapWhile.html "struct core::iter::adapters::map_while::MapWhile") where Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , P: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut") (Self::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item "type core::iter::traits::iterator::Iterator::Item") ) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") , Creates an iterator that both yields elements based on a predicate and maps. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.map_while) 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#1383-1385) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#method.skip) #### fn [skip](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.skip) (self, n: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) ) -> [Skip](https://doc.rust-lang.org/nightly/core/iter/adapters/skip/struct.Skip.html "struct core::iter::adapters::skip::Skip") where Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , Creates an iterator that skips the first `n` elements. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.skip) 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#1456-1458) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#method.take) #### fn [take](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.take) (self, n: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) ) -> [Take](https://doc.rust-lang.org/nightly/core/iter/adapters/take/struct.Take.html "struct core::iter::adapters::take::Take") where Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , Creates an iterator that yields the first `n` elements, or fewer if the underlying iterator ends sooner. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.take) 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#1504-1507) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#method.scan) #### fn [scan](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.scan) (self, initial\_state: St, f: F) -> [Scan](https://doc.rust-lang.org/nightly/core/iter/adapters/scan/struct.Scan.html "struct core::iter::adapters::scan::Scan") where Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , F: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut") ([&mut St](https://doc.rust-lang.org/nightly/std/primitive.reference.html) , Self::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item "type core::iter::traits::iterator::Iterator::Item") ) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") , An iterator adapter which, like [`fold`](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.fold "method core::iter::traits::iterator::Iterator::fold") , holds internal state, but unlike [`fold`](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.fold "method core::iter::traits::iterator::Iterator::fold") , produces a new iterator. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.scan) 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#1543-1547) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#method.flat_map) #### fn [flat\_map](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.flat_map) (self, f: F) -> [FlatMap](https://doc.rust-lang.org/nightly/core/iter/adapters/flatten/struct.FlatMap.html "struct core::iter::adapters::flatten::FlatMap") where Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , U: [IntoIterator](https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html "trait core::iter::traits::collect::IntoIterator") , F: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut") (Self::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item "type core::iter::traits::iterator::Iterator::Item") ) -> U, Creates an iterator that works like map, but flattens nested structure. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.flat_map) 1.29.0 · [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#1628-1631) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#method.flatten) #### fn [flatten](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.flatten) (self) -> [Flatten](https://doc.rust-lang.org/nightly/core/iter/adapters/flatten/struct.Flatten.html "struct core::iter::adapters::flatten::Flatten") where Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , Self::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item "type core::iter::traits::iterator::Iterator::Item") : [IntoIterator](https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html "trait core::iter::traits::collect::IntoIterator") , Creates an iterator that flattens nested structure. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.flatten) [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#1785-1788) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#method.map_windows) #### fn [map\_windows](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.map_windows) (self, f: F) -> [MapWindows](https://doc.rust-lang.org/nightly/core/iter/adapters/map_windows/struct.MapWindows.html "struct core::iter::adapters::map_windows::MapWindows") where Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , F: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut") (&\[Self::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item "type core::iter::traits::iterator::Iterator::Item")\ ; [N](https://doc.rust-lang.org/nightly/std/primitive.array.html)\ \]) -> R, 🔬This is a nightly-only experimental API. (`iter_map_windows`) Calls the given function `f` for each contiguous window of size `N` over `self` and returns an iterator over the outputs of `f`. Like [`slice::windows()`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.windows "method slice::windows") , the windows during mapping overlap as well. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.map_windows) 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#1848-1850) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#method.fuse) #### fn [fuse](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.fuse) (self) -> [Fuse](https://doc.rust-lang.org/nightly/core/iter/adapters/fuse/struct.Fuse.html "struct core::iter::adapters::fuse::Fuse") where Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , Creates an iterator which ends after the first [`None`](https://doc.rust-lang.org/nightly/core/option/enum.Option.html#variant.None "variant core::option::Option::None") . [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.fuse) 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#1933-1936) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#method.inspect) #### fn [inspect](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.inspect) (self, f: F) -> [Inspect](https://doc.rust-lang.org/nightly/core/iter/adapters/inspect/struct.Inspect.html "struct core::iter::adapters::inspect::Inspect") where Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , F: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut") (&Self::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item "type core::iter::traits::iterator::Iterator::Item") ), Does something with each element of an iterator, passing the value on. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.inspect) 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#1970-1972) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#method.by_ref) #### fn [by\_ref](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.by_ref) (&mut self) -> &mut Self where Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , Creates a “by reference” adapter for this instance of `Iterator`. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.by_ref) 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#2093-2095) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#method.collect) #### fn [collect](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.collect) (self) -> B where B: [FromIterator](https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.FromIterator.html "trait core::iter::traits::collect::FromIterator") , Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , Transforms an iterator into a collection. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.collect) [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#2181-2185) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#method.try_collect) #### fn [try\_collect](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.try_collect) ( &mut self, ) -> <::[Residual](https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Try.html#associatedtype.Residual "type core::ops::try_trait::Try::Residual") as [Residual](https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Residual.html "trait core::ops::try_trait::Residual") >::[TryType](https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Residual.html#associatedtype.TryType "type core::ops::try_trait::Residual::TryType") where Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , Self::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item "type core::iter::traits::iterator::Iterator::Item") : [Try](https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Try.html "trait core::ops::try_trait::Try") , ::[Residual](https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Try.html#associatedtype.Residual "type core::ops::try_trait::Try::Residual") : [Residual](https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Residual.html "trait core::ops::try_trait::Residual") , B: [FromIterator](https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.FromIterator.html "trait core::iter::traits::collect::FromIterator") <::[Output](https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Try.html#associatedtype.Output "type core::ops::try_trait::Try::Output") \>, 🔬This is a nightly-only experimental API. (`iterator_try_collect`) Fallibly transforms an iterator into a collection, short circuiting if a failure is encountered. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.try_collect) [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#2254-2256) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#method.collect_into) #### fn [collect\_into](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.collect_into) (self, collection: [&mut E](https://doc.rust-lang.org/nightly/std/primitive.reference.html) ) -> [&mut E](https://doc.rust-lang.org/nightly/std/primitive.reference.html) where E: [Extend](https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.Extend.html "trait core::iter::traits::collect::Extend") , Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , 🔬This is a nightly-only experimental API. (`iter_collect_into`) Collects all the items from an iterator into a collection. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.collect_into) 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#2287-2291) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#method.partition) #### fn [partition](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.partition) (self, f: F) -> [(B, B)](https://doc.rust-lang.org/nightly/std/primitive.tuple.html) where Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , B: [Default](https://doc.rust-lang.org/nightly/core/default/trait.Default.html "trait core::default::Default") + [Extend](https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.Extend.html "trait core::iter::traits::collect::Extend") , F: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut") (&Self::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item "type core::iter::traits::iterator::Iterator::Item") ) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) , Consumes an iterator, creating two collections from it. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.partition) [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#2408-2411) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#method.is_partitioned) #### fn [is\_partitioned](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.is_partitioned)

(self, predicate: P) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) where Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , P: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut") (Self::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item "type core::iter::traits::iterator::Iterator::Item") ) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) , 🔬This is a nightly-only experimental API. (`iter_is_partitioned`) Checks if the elements of this iterator are partitioned according to the given predicate, such that all those that return `true` precede all those that return `false`. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.is_partitioned) 1.27.0 · [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#2503-2507) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#method.try_fold) #### fn [try\_fold](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.try_fold) (&mut self, init: B, f: F) -> R where Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , F: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut") (B, Self::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item "type core::iter::traits::iterator::Iterator::Item") ) -> R, R: [Try](https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Try.html "trait core::ops::try_trait::Try") , An iterator method that applies a function as long as it returns successfully, producing a single, final value. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.try_fold) 1.27.0 · [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#2562-2566) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#method.try_for_each) #### fn [try\_for\_each](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.try_for_each) (&mut self, f: F) -> R where Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , F: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut") (Self::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item "type core::iter::traits::iterator::Iterator::Item") ) -> R, R: [Try](https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Try.html "trait core::ops::try_trait::Try") , An iterator method that applies a fallible function to each item in the iterator, stopping at the first error and returning that error. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.try_for_each) 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#2682-2685) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#method.fold) #### fn [fold](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.fold) (self, init: B, f: F) -> B where Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , F: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut") (B, Self::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item "type core::iter::traits::iterator::Iterator::Item") ) -> B, Folds every element into an accumulator by applying an operation, returning the final result. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.fold) 1.51.0 · [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#2720-2723) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#method.reduce) #### fn [reduce](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.reduce) (self, f: F) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") where Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , F: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut") (Self::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item "type core::iter::traits::iterator::Iterator::Item") , Self::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item "type core::iter::traits::iterator::Iterator::Item") ) -> Self::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item "type core::iter::traits::iterator::Iterator::Item") , Reduces the elements to a single one, by repeatedly applying a reducing operation. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.reduce) [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#2792-2798) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#method.try_reduce) #### fn [try\_reduce](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.try_reduce) ( &mut self, f: impl [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut") (Self::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item "type core::iter::traits::iterator::Iterator::Item") , Self::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item "type core::iter::traits::iterator::Iterator::Item") ) -> R, ) -> <::[Residual](https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Try.html#associatedtype.Residual "type core::ops::try_trait::Try::Residual") as [Residual](https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Residual.html "trait core::ops::try_trait::Residual") <[Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <::[Output](https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Try.html#associatedtype.Output "type core::ops::try_trait::Try::Output") \>>>::[TryType](https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Residual.html#associatedtype.TryType "type core::ops::try_trait::Residual::TryType") where Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , R: [Try](https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Try.html "trait core::ops::try_trait::Try") , ::[Residual](https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Try.html#associatedtype.Residual "type core::ops::try_trait::Try::Residual") : [Residual](https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Residual.html "trait core::ops::try_trait::Residual") <[Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") >, 🔬This is a nightly-only experimental API. (`iterator_try_reduce`) Reduces the elements to a single one by repeatedly applying a reducing operation. If the closure returns a failure, the failure is propagated back to the caller immediately. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.try_reduce) 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#2851-2854) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#method.all) #### fn [all](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.all) (&mut self, f: F) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) where Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , F: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut") (Self::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item "type core::iter::traits::iterator::Iterator::Item") ) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) , Tests if every element of the iterator matches a predicate. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.all) 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#2905-2908) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#method.any) #### fn [any](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.any) (&mut self, f: F) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) where Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , F: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut") (Self::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item "type core::iter::traits::iterator::Iterator::Item") ) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) , Tests if any element of the iterator matches a predicate. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.any) 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#2979-2982) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#method.find) #### fn [find](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.find)

(&mut self, predicate: P) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") where Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , P: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut") (&Self::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item "type core::iter::traits::iterator::Iterator::Item") ) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) , Searches for an element of an iterator that satisfies a predicate. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.find) 1.30.0 · [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#3011-3014) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#method.find_map) #### fn [find\_map](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.find_map) (&mut self, f: F) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") where Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , F: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut") (Self::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item "type core::iter::traits::iterator::Iterator::Item") ) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") , Applies function to the elements of iterator and returns the first non-none result. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.find_map) [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#3070-3076) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#method.try_find) #### fn [try\_find](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.try_find) ( &mut self, f: impl [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut") (&Self::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item "type core::iter::traits::iterator::Iterator::Item") ) -> R, ) -> <::[Residual](https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Try.html#associatedtype.Residual "type core::ops::try_trait::Try::Residual") as [Residual](https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Residual.html "trait core::ops::try_trait::Residual") <[Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") >>::[TryType](https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Residual.html#associatedtype.TryType "type core::ops::try_trait::Residual::TryType") where Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , R: [Try](https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Try.html "trait core::ops::try_trait::Try") , ::[Residual](https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Try.html#associatedtype.Residual "type core::ops::try_trait::Try::Residual") : [Residual](https://doc.rust-lang.org/nightly/core/ops/try_trait/trait.Residual.html "trait core::ops::try_trait::Residual") <[Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") >, 🔬This is a nightly-only experimental API. (`try_find`) Applies function to the elements of iterator and returns the first true result or the first error. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.try_find) 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#3154-3157) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#method.position) #### fn [position](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.position)

(&mut self, predicate: P) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <[usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) \> where Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , P: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut") (Self::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item "type core::iter::traits::iterator::Iterator::Item") ) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) , Searches for an element in an iterator, returning its index. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.position) 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#3270-3273) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#method.max) #### fn [max](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.max) (self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") where Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , Self::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item "type core::iter::traits::iterator::Iterator::Item") : [Ord](https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html "trait core::cmp::Ord") , Returns the maximum element of an iterator. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.max) 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#3307-3310) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#method.min) #### fn [min](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.min) (self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") where Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , Self::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item "type core::iter::traits::iterator::Iterator::Item") : [Ord](https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html "trait core::cmp::Ord") , Returns the minimum element of an iterator. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.min) 1.6.0 · [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#3330-3333) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#method.max_by_key) #### fn [max\_by\_key](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.max_by_key) (self, f: F) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") where B: [Ord](https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html "trait core::cmp::Ord") , Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , F: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut") (&Self::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item "type core::iter::traits::iterator::Iterator::Item") ) -> B, Returns the element that gives the maximum value from the specified function. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.max_by_key) 1.15.0 · [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#3364-3367) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#method.max_by) #### fn [max\_by](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.max_by) (self, compare: F) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") where Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , F: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut") (&Self::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item "type core::iter::traits::iterator::Iterator::Item") , &Self::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item "type core::iter::traits::iterator::Iterator::Item") ) -> [Ordering](https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html "enum core::cmp::Ordering") , Returns the element that gives the maximum value with respect to the specified comparison function. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.max_by) 1.6.0 · [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#3392-3395) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#method.min_by_key) #### fn [min\_by\_key](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.min_by_key) (self, f: F) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") where B: [Ord](https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html "trait core::cmp::Ord") , Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , F: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut") (&Self::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item "type core::iter::traits::iterator::Iterator::Item") ) -> B, Returns the element that gives the minimum value from the specified function. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.min_by_key) 1.15.0 · [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#3426-3429) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#method.min_by) #### fn [min\_by](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.min_by) (self, compare: F) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") where Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , F: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut") (&Self::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item "type core::iter::traits::iterator::Iterator::Item") , &Self::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item "type core::iter::traits::iterator::Iterator::Item") ) -> [Ordering](https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html "enum core::cmp::Ordering") , Returns the element that gives the minimum value with respect to the specified comparison function. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.min_by) 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#3501-3505) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#method.unzip) #### fn [unzip](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.unzip) (self) -> [(FromA, FromB)](https://doc.rust-lang.org/nightly/std/primitive.tuple.html) where FromA: [Default](https://doc.rust-lang.org/nightly/core/default/trait.Default.html "trait core::default::Default") + [Extend](https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.Extend.html "trait core::iter::traits::collect::Extend") , FromB: [Default](https://doc.rust-lang.org/nightly/core/default/trait.Default.html "trait core::default::Default") + [Extend](https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.Extend.html "trait core::iter::traits::collect::Extend") , Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") + [Iterator](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html "trait core::iter::traits::iterator::Iterator") , Converts an iterator of pairs into a pair of containers. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.unzip) 1.36.0 · [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#3533-3536) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#method.copied) #### fn [copied](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.copied) <'a, T>(self) -> [Copied](https://doc.rust-lang.org/nightly/core/iter/adapters/copied/struct.Copied.html "struct core::iter::adapters::copied::Copied") where T: [Copy](https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html "trait core::marker::Copy") + 'a, Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") + [Iterator](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html "trait core::iter::traits::iterator::Iterator") , Creates an iterator which copies all of its elements. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.copied) 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#3582-3585) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#method.cloned) #### fn [cloned](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.cloned) <'a, T>(self) -> [Cloned](https://doc.rust-lang.org/nightly/core/iter/adapters/cloned/struct.Cloned.html "struct core::iter::adapters::cloned::Cloned") where T: [Clone](https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html "trait core::clone::Clone") + 'a, Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") + [Iterator](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html "trait core::iter::traits::iterator::Iterator") , Creates an iterator which [`clone`](https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone "method core::clone::Clone::clone") s all of its elements. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.cloned) [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#3658-3660) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#method.array_chunks) #### fn [array\_chunks](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.array_chunks) (self) -> [ArrayChunks](https://doc.rust-lang.org/nightly/core/iter/adapters/array_chunks/struct.ArrayChunks.html "struct core::iter::adapters::array_chunks::ArrayChunks") where Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , 🔬This is a nightly-only experimental API. (`iter_array_chunks`) Returns an iterator over `N` elements of the iterator at a time. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.array_chunks) 1.11.0 · [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#3695-3698) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#method.sum) #### fn [sum](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.sum) (self) -> S where Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , S: [Sum](https://doc.rust-lang.org/nightly/core/iter/traits/accum/trait.Sum.html "trait core::iter::traits::accum::Sum") , Sums the elements of an iterator. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.sum) 1.11.0 · [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#3728-3731) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#method.product) #### fn [product](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.product)

(self) -> P where Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , P: [Product](https://doc.rust-lang.org/nightly/core/iter/traits/accum/trait.Product.html "trait core::iter::traits::accum::Product") , Iterates over the entire iterator, multiplying all the elements [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.product) 1.5.0 · [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#3750-3754) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#method.cmp) #### fn [cmp](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.cmp) (self, other: I) -> [Ordering](https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html "enum core::cmp::Ordering") where I: [IntoIterator](https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html "trait core::iter::traits::collect::IntoIterator") , Self::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item "type core::iter::traits::iterator::Iterator::Item") : [Ord](https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html "trait core::cmp::Ord") , Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , [Lexicographically](https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#lexicographical-comparison "trait core::cmp::Ord") compares the elements of this [`Iterator`](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html "trait core::iter::traits::iterator::Iterator") with those of another. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.cmp) [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#3778-3782) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#method.cmp_by) #### fn [cmp\_by](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.cmp_by) (self, other: I, cmp: F) -> [Ordering](https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html "enum core::cmp::Ordering") where Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , I: [IntoIterator](https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html "trait core::iter::traits::collect::IntoIterator") , F: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut") (Self::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item "type core::iter::traits::iterator::Iterator::Item") , ::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.Item "type core::iter::traits::collect::IntoIterator::Item") ) -> [Ordering](https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html "enum core::cmp::Ordering") , 🔬This is a nightly-only experimental API. (`iter_order_by`) [Lexicographically](https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#lexicographical-comparison "trait core::cmp::Ord") compares the elements of this [`Iterator`](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html "trait core::iter::traits::iterator::Iterator") with those of another with respect to the specified comparison function. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.cmp_by) 1.5.0 · [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#3835-3839) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#method.partial_cmp) #### fn [partial\_cmp](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.partial_cmp) (self, other: I) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <[Ordering](https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html "enum core::cmp::Ordering") \> where I: [IntoIterator](https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html "trait core::iter::traits::collect::IntoIterator") , Self::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item "type core::iter::traits::iterator::Iterator::Item") : [PartialOrd](https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html "trait core::cmp::PartialOrd") <::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.Item "type core::iter::traits::collect::IntoIterator::Item") \>, Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , [Lexicographically](https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#lexicographical-comparison "trait core::cmp::Ord") compares the [`PartialOrd`](https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html "trait core::cmp::PartialOrd") elements of this [`Iterator`](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html "trait core::iter::traits::iterator::Iterator") with those of another. The comparison works like short-circuit evaluation, returning a result without comparing the remaining elements. As soon as an order can be determined, the evaluation stops and a result is returned. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.partial_cmp) [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#3872-3876) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#method.partial_cmp_by) #### fn [partial\_cmp\_by](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.partial_cmp_by) (self, other: I, partial\_cmp: F) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <[Ordering](https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html "enum core::cmp::Ordering") \> where Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , I: [IntoIterator](https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html "trait core::iter::traits::collect::IntoIterator") , F: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut") (Self::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item "type core::iter::traits::iterator::Iterator::Item") , ::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.Item "type core::iter::traits::collect::IntoIterator::Item") ) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <[Ordering](https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html "enum core::cmp::Ordering") \>, 🔬This is a nightly-only experimental API. (`iter_order_by`) [Lexicographically](https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#lexicographical-comparison "trait core::cmp::Ord") compares the elements of this [`Iterator`](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html "trait core::iter::traits::iterator::Iterator") with those of another with respect to the specified comparison function. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.partial_cmp_by) 1.5.0 · [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#3906-3910) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#method.eq) #### fn [eq](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.eq) (self, other: I) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) where I: [IntoIterator](https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html "trait core::iter::traits::collect::IntoIterator") , Self::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item "type core::iter::traits::iterator::Iterator::Item") : [PartialEq](https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html "trait core::cmp::PartialEq") <::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.Item "type core::iter::traits::collect::IntoIterator::Item") \>, Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , Determines if the elements of this [`Iterator`](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html "trait core::iter::traits::iterator::Iterator") are equal to those of another. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.eq) [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#3930-3934) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#method.eq_by) #### fn [eq\_by](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.eq_by) (self, other: I, eq: F) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) where Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , I: [IntoIterator](https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html "trait core::iter::traits::collect::IntoIterator") , F: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut") (Self::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item "type core::iter::traits::iterator::Iterator::Item") , ::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.Item "type core::iter::traits::collect::IntoIterator::Item") ) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) , 🔬This is a nightly-only experimental API. (`iter_order_by`) Determines if the elements of this [`Iterator`](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html "trait core::iter::traits::iterator::Iterator") are equal to those of another with respect to the specified equality function. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.eq_by) 1.5.0 · [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#3960-3964) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#method.ne) #### fn [ne](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.ne) (self, other: I) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) where I: [IntoIterator](https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html "trait core::iter::traits::collect::IntoIterator") , Self::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item "type core::iter::traits::iterator::Iterator::Item") : [PartialEq](https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html "trait core::cmp::PartialEq") <::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.Item "type core::iter::traits::collect::IntoIterator::Item") \>, Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , Determines if the elements of this [`Iterator`](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html "trait core::iter::traits::iterator::Iterator") are not equal to those of another. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.ne) 1.5.0 · [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#3982-3986) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#method.lt) #### fn [lt](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.lt) (self, other: I) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) where I: [IntoIterator](https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html "trait core::iter::traits::collect::IntoIterator") , Self::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item "type core::iter::traits::iterator::Iterator::Item") : [PartialOrd](https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html "trait core::cmp::PartialOrd") <::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.Item "type core::iter::traits::collect::IntoIterator::Item") \>, Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , Determines if the elements of this [`Iterator`](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html "trait core::iter::traits::iterator::Iterator") are [lexicographically](https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#lexicographical-comparison "trait core::cmp::Ord") less than those of another. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.lt) 1.5.0 · [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#4004-4008) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#method.le) #### fn [le](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.le) (self, other: I) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) where I: [IntoIterator](https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html "trait core::iter::traits::collect::IntoIterator") , Self::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item "type core::iter::traits::iterator::Iterator::Item") : [PartialOrd](https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html "trait core::cmp::PartialOrd") <::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.Item "type core::iter::traits::collect::IntoIterator::Item") \>, Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , Determines if the elements of this [`Iterator`](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html "trait core::iter::traits::iterator::Iterator") are [lexicographically](https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#lexicographical-comparison "trait core::cmp::Ord") less or equal to those of another. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.le) 1.5.0 · [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#4026-4030) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#method.gt) #### fn [gt](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.gt) (self, other: I) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) where I: [IntoIterator](https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html "trait core::iter::traits::collect::IntoIterator") , Self::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item "type core::iter::traits::iterator::Iterator::Item") : [PartialOrd](https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html "trait core::cmp::PartialOrd") <::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.Item "type core::iter::traits::collect::IntoIterator::Item") \>, Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , Determines if the elements of this [`Iterator`](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html "trait core::iter::traits::iterator::Iterator") are [lexicographically](https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#lexicographical-comparison "trait core::cmp::Ord") greater than those of another. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.gt) 1.5.0 · [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#4048-4052) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#method.ge) #### fn [ge](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.ge) (self, other: I) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) where I: [IntoIterator](https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html "trait core::iter::traits::collect::IntoIterator") , Self::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item "type core::iter::traits::iterator::Iterator::Item") : [PartialOrd](https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html "trait core::cmp::PartialOrd") <::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.Item "type core::iter::traits::collect::IntoIterator::Item") \>, Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , Determines if the elements of this [`Iterator`](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html "trait core::iter::traits::iterator::Iterator") are [lexicographically](https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#lexicographical-comparison "trait core::cmp::Ord") greater than or equal to those of another. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.ge) 1.82.0 · [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#4078-4081) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#method.is_sorted) #### fn [is\_sorted](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.is_sorted) (self) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) where Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , Self::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item "type core::iter::traits::iterator::Iterator::Item") : [PartialOrd](https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html "trait core::cmp::PartialOrd") , Checks if the elements of this iterator are sorted. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.is_sorted) 1.82.0 · [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#4105-4108) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#method.is_sorted_by) #### fn [is\_sorted\_by](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.is_sorted_by) (self, compare: F) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) where Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , F: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut") (&Self::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item "type core::iter::traits::iterator::Iterator::Item") , &Self::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item "type core::iter::traits::iterator::Iterator::Item") ) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) , Checks if the elements of this iterator are sorted using the given comparator function. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.is_sorted_by) 1.82.0 · [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/iterator.rs.html#4150-4154) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#method.is_sorted_by_key) #### fn [is\_sorted\_by\_key](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.is_sorted_by_key) (self, f: F) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) where Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , F: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut") (Self::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item "type core::iter::traits::iterator::Iterator::Item") ) -> K, K: [PartialOrd](https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html "trait core::cmp::PartialOrd") , Checks if the elements of this iterator are sorted using the given key extraction function. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.is_sorted_by_key) [Source](https://docs.rs/arrow-ipc/58.1.0/src/arrow_ipc/reader.rs.html#1429-1433) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#impl-RecordBatchReader-for-FileReader%3CR%3E) ### impl [RecordBatchReader](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/arrow_array/record_batch/trait.RecordBatchReader.html "trait arrow_array::record_batch::RecordBatchReader") for [FileReader](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html "struct arrow_ipc::reader::FileReader") [Source](https://docs.rs/arrow-ipc/58.1.0/src/arrow_ipc/reader.rs.html#1430-1432) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#method.schema-1) #### fn [schema](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/arrow_array/record_batch/trait.RecordBatchReader.html#tymethod.schema) (&self) -> [SchemaRef](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/arrow_schema/schema/type.SchemaRef.html "type arrow_schema::schema::SchemaRef") Returns the schema of this `RecordBatchReader`. [Read more](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/arrow_array/record_batch/trait.RecordBatchReader.html#tymethod.schema) Auto Trait Implementations[§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#synthetic-implementations) ---------------------------------------------------------------------------------------------------------------------------------- [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#impl-Freeze-for-FileReader%3CR%3E) ### impl [Freeze](https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html "trait core::marker::Freeze") for [FileReader](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html "struct arrow_ipc::reader::FileReader") where R: [Freeze](https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html "trait core::marker::Freeze") , [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#impl-RefUnwindSafe-for-FileReader%3CR%3E) ### impl ![RefUnwindSafe](https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html "trait core::panic::unwind_safe::RefUnwindSafe") for [FileReader](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html "struct arrow_ipc::reader::FileReader") [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#impl-Send-for-FileReader%3CR%3E) ### impl [Send](https://doc.rust-lang.org/nightly/core/marker/trait.Send.html "trait core::marker::Send") for [FileReader](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html "struct arrow_ipc::reader::FileReader") where R: [Send](https://doc.rust-lang.org/nightly/core/marker/trait.Send.html "trait core::marker::Send") , [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#impl-Sync-for-FileReader%3CR%3E) ### impl [Sync](https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html "trait core::marker::Sync") for [FileReader](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html "struct arrow_ipc::reader::FileReader") where R: [Sync](https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html "trait core::marker::Sync") , [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#impl-Unpin-for-FileReader%3CR%3E) ### impl [Unpin](https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html "trait core::marker::Unpin") for [FileReader](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html "struct arrow_ipc::reader::FileReader") where R: [Unpin](https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html "trait core::marker::Unpin") , [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#impl-UnsafeUnpin-for-FileReader%3CR%3E) ### impl [UnsafeUnpin](https://doc.rust-lang.org/nightly/core/marker/trait.UnsafeUnpin.html "trait core::marker::UnsafeUnpin") for [FileReader](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html "struct arrow_ipc::reader::FileReader") where R: [UnsafeUnpin](https://doc.rust-lang.org/nightly/core/marker/trait.UnsafeUnpin.html "trait core::marker::UnsafeUnpin") , [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#impl-UnwindSafe-for-FileReader%3CR%3E) ### impl ![UnwindSafe](https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html "trait core::panic::unwind_safe::UnwindSafe") for [FileReader](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html "struct arrow_ipc::reader::FileReader") Blanket Implementations[§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#blanket-implementations) ----------------------------------------------------------------------------------------------------------------------------- [Source](https://doc.rust-lang.org/nightly/src/core/any.rs.html#141) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#impl-Any-for-T) ### impl [Any](https://doc.rust-lang.org/nightly/core/any/trait.Any.html "trait core::any::Any") for T where T: 'static + ?[Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , [Source](https://doc.rust-lang.org/nightly/src/core/any.rs.html#142) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#method.type_id) #### fn [type\_id](https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id) (&self) -> [TypeId](https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html "struct core::any::TypeId") Gets the `TypeId` of `self`. [Read more](https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id) [Source](https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#212) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#impl-Borrow%3CT%3E-for-T) ### impl [Borrow](https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html "trait core::borrow::Borrow") for T where T: ?[Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , [Source](https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#214) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#method.borrow) #### fn [borrow](https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow) (&self) -> [&T](https://doc.rust-lang.org/nightly/std/primitive.reference.html) Immutably borrows from an owned value. [Read more](https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow) [Source](https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#221) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#impl-BorrowMut%3CT%3E-for-T) ### impl [BorrowMut](https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html "trait core::borrow::BorrowMut") for T where T: ?[Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , [Source](https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#222) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#method.borrow_mut) #### fn [borrow\_mut](https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut) (&mut self) -> [&mut T](https://doc.rust-lang.org/nightly/std/primitive.reference.html) Mutably borrows from an owned value. [Read more](https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut) [Source](https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#785) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#impl-From%3CT%3E-for-T) ### impl [From](https://doc.rust-lang.org/nightly/core/convert/trait.From.html "trait core::convert::From") for T [Source](https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#788) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#method.from) #### fn [from](https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from) (t: T) -> T Returns the argument unchanged. [Source](https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#767-769) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#impl-Into%3CU%3E-for-T) ### impl [Into](https://doc.rust-lang.org/nightly/core/convert/trait.Into.html "trait core::convert::Into") for T where U: [From](https://doc.rust-lang.org/nightly/core/convert/trait.From.html "trait core::convert::From") , [Source](https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#777) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#method.into) #### fn [into](https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into) (self) -> U Calls `U::from(self)`. That is, this conversion is whatever the implementation of `[From](https://doc.rust-lang.org/nightly/core/convert/trait.From.html "trait core::convert::From") for U` chooses to do. [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/collect.rs.html#317) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#impl-IntoIterator-for-I) ### impl [IntoIterator](https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html "trait core::iter::traits::collect::IntoIterator") for I where I: [Iterator](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html "trait core::iter::traits::iterator::Iterator") , [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/collect.rs.html#318) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#associatedtype.Item-1) #### type [Item](https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.Item) = ::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item "type core::iter::traits::iterator::Iterator::Item") The type of the elements being iterated over. [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/collect.rs.html#319) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#associatedtype.IntoIter) #### type [IntoIter](https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.IntoIter) = I Which kind of iterator are we turning this into? [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/collect.rs.html#322) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#method.into_iter) #### fn [into\_iter](https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#tymethod.into_iter) (self) -> I Creates an iterator from a value. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#tymethod.into_iter) [Source](https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#827-829) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#impl-TryFrom%3CU%3E-for-T) ### impl [TryFrom](https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html "trait core::convert::TryFrom") for T where U: [Into](https://doc.rust-lang.org/nightly/core/convert/trait.Into.html "trait core::convert::Into") , [Source](https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#831) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#associatedtype.Error-1) #### type [Error](https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error) = [Infallible](https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html "enum core::convert::Infallible") The type returned in the event of a conversion error. [Source](https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#834) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#method.try_from) #### fn [try\_from](https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from) (value: U) -> [Result](https://doc.rust-lang.org/nightly/core/result/enum.Result.html "enum core::result::Result") >::[Error](https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error "type core::convert::TryFrom::Error") \> Performs the conversion. [Source](https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#811-813) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#impl-TryInto%3CU%3E-for-T) ### impl [TryInto](https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html "trait core::convert::TryInto") for T where U: [TryFrom](https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html "trait core::convert::TryFrom") , [Source](https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#815) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#associatedtype.Error) #### type [Error](https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error) = >::[Error](https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error "type core::convert::TryFrom::Error") The type returned in the event of a conversion error. [Source](https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#818) [§](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/reader/struct.FileReader.html#method.try_into) #### fn [try\_into](https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into) (self) -> [Result](https://doc.rust-lang.org/nightly/core/result/enum.Result.html "enum core::result::Result") >::[Error](https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error "type core::convert::TryFrom::Error") \> Performs the conversion. --- # Docs.rs Docs.rs Recent Rust crates urn:docs-rs:0.0.0 (da7690ee 2026-03-15 ) 2026-03-31T17:24:34.105767+00:00 wacks-0.1.0 urn:docs-rs:wacks:0.1.0 2026-03-31T17:24:34.105767+00:00 Structured WASM panic stack traces for browsers docs.rs hashtree-fuse-0.2.18 urn:docs-rs:hashtree-fuse:0.2.18 2026-03-31T17:24:18.312233+00:00 FUSE filesystem mount for hashtree content-addressed trees docs.rs perl-ts-statement-tracker-0.12.1 urn:docs-rs:perl-ts-statement-tracker:0.12.1 2026-03-31T17:24:11.496539+00:00 Statement boundary and heredoc context tracking for Perl tree-sitter tooling docs.rs hashtree-fs-0.2.18 urn:docs-rs:hashtree-fs:0.2.18 2026-03-31T17:24:10.215254+00:00 Filesystem-based content-addressed blob storage for hashtree docs.rs treesitter-types-toml-0.1.0 urn:docs-rs:treesitter-types-toml:0.1.0 2026-03-31T17:23:53.277914+00:00 Pre-generated strongly-typed AST types for TOML (tree-sitter-toml-ng) docs.rs hashtree-lmdb-0.2.18 urn:docs-rs:hashtree-lmdb:0.2.18 2026-03-31T17:23:27.276959+00:00 LMDB-backed content-addressed blob storage for hashtree docs.rs agentix-0.11.0 urn:docs-rs:agentix:0.11.0 2026-03-31T17:23:15.806046+00:00 Multi-provider LLM client for Rust — streaming, non-streaming, tool calls, MCP, DeepSeek, OpenAI, Anthropic, Gemini docs.rs mewt-3.0.1 urn:docs-rs:mewt:3.0.1 2026-03-31T17:23:11.946072+00:00 Mutation testing framework with multi-language support docs.rs hashtree-index-0.2.18 urn:docs-rs:hashtree-index:0.2.18 2026-03-31T17:23:03.991669+00:00 Content-addressed B-tree indexes for hashtree docs.rs a2a-protocol-sdk-0.4.0 urn:docs-rs:a2a-protocol-sdk:0.4.0 2026-03-31T17:22:28.994936+00:00 A2A protocol v1.0 — convenience umbrella re-export crate docs.rs cashu-service-0.2.18 urn:docs-rs:cashu-service:0.2.18 2026-03-31T17:22:14.288954+00:00 Reusable Cashu helper and wallet primitives for paid connectivity services docs.rs lisette-0.1.2 urn:docs-rs:lisette:0.1.2 2026-03-31T17:21:18.002804+00:00 Little language inspired by Rust that compiles to Go docs.rs hashtree-merge-0.2.18 urn:docs-rs:hashtree-merge:0.2.18 2026-03-31T17:21:17.483957+00:00 Deterministic path-based merge primitives for hashtree docs.rs btrfs-tune-0.7.0 urn:docs-rs:btrfs-tune:0.7.0 2026-03-31T17:21:13.128896+00:00 Tune btrfs filesystem parameters docs.rs btrfs-cli-0.7.0 urn:docs-rs:btrfs-cli:0.7.0 2026-03-31T17:21:02.080314+00:00 User-space command-line tool for inspecting and managing Btrfs filesystems docs.rs a2a-protocol-client-0.4.0 urn:docs-rs:a2a-protocol-client:0.4.0 2026-03-31T17:20:38.062594+00:00 A2A protocol v1.0 — HTTP client (hyper-backed) docs.rs a2a-protocol-server-0.4.0 urn:docs-rs:a2a-protocol-server:0.4.0 2026-03-31T17:20:31.970407+00:00 A2A protocol v1.0 — server framework (hyper-backed) docs.rs btrfs-stream-0.7.0 urn:docs-rs:btrfs-stream:0.7.0 2026-03-31T17:19:55.959691+00:00 Btrfs send stream parser and receive operations docs.rs btrfs-mkfs-0.7.0 urn:docs-rs:btrfs-mkfs:0.7.0 2026-03-31T17:19:24.221617+00:00 Create btrfs filesystems docs.rs lisette-lsp-0.1.2 urn:docs-rs:lisette-lsp:0.1.2 2026-03-31T17:19:21.952672+00:00 Little language inspired by Rust that compiles to Go docs.rs btrfs-uapi-0.7.0 urn:docs-rs:btrfs-uapi:0.7.0 2026-03-31T17:19:19.930213+00:00 Wrappers around the btrfs userspace interface (ioctls and sysfs) docs.rs btrfs-disk-0.7.0 urn:docs-rs:btrfs-disk:0.7.0 2026-03-31T17:18:37.610725+00:00 Platform-independent parsing and writing of btrfs on-disk structures docs.rs hashtree-config-0.2.18 urn:docs-rs:hashtree-config:0.2.18 2026-03-31T17:18:27.168251+00:00 Shared configuration for hashtree tools docs.rs a2a-protocol-types-0.4.0 urn:docs-rs:a2a-protocol-types:0.4.0 2026-03-31T17:18:01.232361+00:00 A2A protocol v1.0 — pure data types, serde only, no I/O docs.rs lisette-semantics-0.1.2 urn:docs-rs:lisette-semantics:0.1.2 2026-03-31T17:17:48.857709+00:00 Little language inspired by Rust that compiles to Go docs.rs hashtree-core-0.2.18 urn:docs-rs:hashtree-core:0.2.18 2026-03-31T17:17:36.907524+00:00 Simple content-addressed merkle tree with KV storage docs.rs lisette-format-0.1.2 urn:docs-rs:lisette-format:0.1.2 2026-03-31T17:17:36.644123+00:00 Little language inspired by Rust that compiles to Go docs.rs lisette-emit-0.1.2 urn:docs-rs:lisette-emit:0.1.2 2026-03-31T17:17:21.320105+00:00 Little language inspired by Rust that compiles to Go docs.rs packet-dissector-dns-0.1.0 urn:docs-rs:packet-dissector-dns:0.1.0 2026-03-31T17:17:14.152834+00:00 DNS (RFC 1035) dissector for packet-dissector docs.rs taffy-0.10.0 urn:docs-rs:taffy:0.10.0 2026-03-31T17:16:34.601696+00:00 A flexible UI layout library docs.rs lisette-stdlib-0.1.2 urn:docs-rs:lisette-stdlib:0.1.2 2026-03-31T17:16:34.470627+00:00 Little language inspired by Rust that compiles to Go docs.rs lisette-diagnostics-0.1.2 urn:docs-rs:lisette-diagnostics:0.1.2 2026-03-31T17:16:34.154202+00:00 Little language inspired by Rust that compiles to Go docs.rs lisette-syntax-0.1.2 urn:docs-rs:lisette-syntax:0.1.2 2026-03-31T17:16:27.038239+00:00 Little language inspired by Rust that compiles to Go docs.rs mcp-router-0.1.0 urn:docs-rs:mcp-router:0.1.0 2026-03-31T17:16:19.649715+00:00 An MCP Router for the masses. Inspired by the myriad of difficult to use, limited use cased libraries currently available docs.rs neutun-1.0.6 urn:docs-rs:neutun:1.0.6 2026-03-31T17:16:06.747540+00:00 expose your local web server to the internet with a public url docs.rs diplomat-tool-0.15.0 urn:docs-rs:diplomat-tool:0.15.0 2026-03-31T17:16:06.130069+00:00 Tool for generating FFI bindings for various languages docs.rs neutun\_lib-1.0.6 urn:docs-rs:neutun\_lib:1.0.6 2026-03-31T17:15:55.151910+00:00 expose your local web server to the internet with a public url docs.rs mcp-router-macros-0.1.0 urn:docs-rs:mcp-router-macros:0.1.0 2026-03-31T17:15:46.608335+00:00 Macros for \`mcp-router\`, provides default implementations and gets you going quickly. docs.rs mcp-router-registry-0.1.0 urn:docs-rs:mcp-router-registry:0.1.0 2026-03-31T17:15:36.060621+00:00 Registry mechanism \`mcp-router\`, makes the router code simple. docs.rs piphany-0.0.1 urn:docs-rs:piphany:0.0.1 2026-03-31T17:15:32.780549+00:00 A pipeline manager for getting things done docs.rs diplomat\_core-0.15.0 urn:docs-rs:diplomat\_core:0.15.0 2026-03-31T17:15:22.708861+00:00 Shared utilities between Diplomat macros and code generation docs.rs perl-test-must-0.12.1 urn:docs-rs:perl-test-must:0.12.1 2026-03-31T17:15:20.505864+00:00 Panic-on-failure test helpers: must, must\_some, must\_err docs.rs diplomat-runtime-0.15.0 urn:docs-rs:diplomat-runtime:0.15.0 2026-03-31T17:15:04.682242+00:00 Common runtime utilities used by diplomat codegen docs.rs diplomat-0.15.0 urn:docs-rs:diplomat:0.15.0 2026-03-31T17:15:02.716017+00:00 The diplomat FFI generation macro docs.rs spydecy-debugger-0.3.1 urn:docs-rs:spydecy-debugger:0.3.1 2026-03-31T17:14:58.970305+00:00 Introspective debugger for Spydecy transpiler docs.rs spydecy-c-0.3.1 urn:docs-rs:spydecy-c:0.3.1 2026-03-31T17:14:49.343617+00:00 C AST parser for Spydecy transpiler with CPython API recognition docs.rs spydecy-optimizer-0.3.1 urn:docs-rs:spydecy-optimizer:0.3.1 2026-03-31T17:14:43.623434+00:00 Cross-layer optimizer for Spydecy transpiler with boundary elimination docs.rs sensors-sys-0.2.18 urn:docs-rs:sensors-sys:0.2.18 2026-03-31T17:14:33.486255+00:00 Hardware monitoring in Linux docs.rs native-theme-gpui-0.5.2 urn:docs-rs:native-theme-gpui:0.5.2 2026-03-31T17:14:20.069481+00:00 gpui toolkit connector for native-theme docs.rs spydecy-codegen-0.3.1 urn:docs-rs:spydecy-codegen:0.3.1 2026-03-31T17:14:01.331843+00:00 Rust code generator for Spydecy transpiler - generates idiomatic safe Rust docs.rs spydecy-python-0.3.1 urn:docs-rs:spydecy-python:0.3.1 2026-03-31T17:13:54.467369+00:00 Python AST parser and transpiler frontend for Spydecy docs.rs dwctl-8.32.0 urn:docs-rs:dwctl:8.32.0 2026-03-31T17:13:38.532272+00:00 The Doubleword Control Layer - A self-hostable observability and analytics platform for LLM applications docs.rs spydecy-hir-0.3.1 urn:docs-rs:spydecy-hir:0.3.1 2026-03-31T17:13:00.565937+00:00 High-level Intermediate Representation (HIR) for Spydecy transpiler docs.rs honey\_id-types-1.4.6 urn:docs-rs:honey\_id-types:1.4.6 2026-03-31T17:12:57.799843+00:00 Common types and convenience code to be used within Pathscale projects that make use of honey.id Auth. docs.rs simple-user-system-1.1.4 urn:docs-rs:simple-user-system:1.1.4 2026-03-31T17:11:57.854166+00:00 A TUI for creating user data and saving it in JSON format docs.rs arbhx-0.1.0 urn:docs-rs:arbhx:0.1.0 2026-03-31T17:11:11.280998+00:00 A simple VFS layer for Rust. docs.rs activitystreams-vocabulary-0.5.1 urn:docs-rs:activitystreams-vocabulary:0.5.1 2026-03-31T17:11:06.853989+00:00 ActivityStreams 2.0 Vocabulary data structures docs.rs treesitter-types-swift-0.1.0 urn:docs-rs:treesitter-types-swift:0.1.0 2026-03-31T17:11:03.329676+00:00 Pre-generated strongly-typed AST types for Swift (tree-sitter-swift) docs.rs native-theme-iced-0.5.2 urn:docs-rs:native-theme-iced:0.5.2 2026-03-31T17:09:50.456100+00:00 iced toolkit connector for native-theme docs.rs ferrflow-2.6.1 urn:docs-rs:ferrflow:2.6.1 2026-03-31T17:09:40.688826+00:00 Universal semantic versioning for monorepos and classic repos docs.rs packet-dissector-diameter-0.1.0 urn:docs-rs:packet-dissector-diameter:0.1.0 2026-03-31T17:08:50.415505+00:00 Diameter (RFC 6733) dissector for packet-dissector docs.rs native-theme-0.5.2 urn:docs-rs:native-theme:0.5.2 2026-03-31T17:08:41.949997+00:00 Cross-platform native theme detection and loading for Rust GUI applications docs.rs native-theme-build-0.5.2 urn:docs-rs:native-theme-build:0.5.2 2026-03-31T17:08:23.519066+00:00 Build-time code generation for native-theme custom icon roles docs.rs diskann-tools-0.50.0 urn:docs-rs:diskann-tools:0.50.0 2026-03-31T17:08:17.401377+00:00 DiskANN is a fast approximate nearest neighbor search library for high dimensional data docs.rs diskann-disk-0.50.0 urn:docs-rs:diskann-disk:0.50.0 2026-03-31T17:07:37.445743+00:00 DiskANN is a fast approximate nearest neighbor search library for high dimensional data docs.rs diskann-benchmark-0.50.0 urn:docs-rs:diskann-benchmark:0.50.0 2026-03-31T17:07:30.730753+00:00 DiskANN is a fast approximate nearest neighbor search library for high dimensional data docs.rs diskann-quantization-0.50.0 urn:docs-rs:diskann-quantization:0.50.0 2026-03-31T17:06:39.025068+00:00 DiskANN is a fast approximate nearest neighbor search library for high dimensional data docs.rs diskann-providers-0.50.0 urn:docs-rs:diskann-providers:0.50.0 2026-03-31T17:06:33.963428+00:00 DiskANN is a fast approximate nearest neighbor search library for high dimensional data docs.rs diskann-label-filter-0.50.0 urn:docs-rs:diskann-label-filter:0.50.0 2026-03-31T17:04:32.195911+00:00 DiskANN is a fast approximate nearest neighbor search library for high dimensional data docs.rs diskann-benchmark-core-0.50.0 urn:docs-rs:diskann-benchmark-core:0.50.0 2026-03-31T17:04:31.009169+00:00 DiskANN is a fast approximate nearest neighbor search library for high dimensional data docs.rs diskann-linalg-0.50.0 urn:docs-rs:diskann-linalg:0.50.0 2026-03-31T17:03:54.766254+00:00 DiskANN is a fast approximate nearest neighbor search library for high dimensional data docs.rs diskann-0.50.0 urn:docs-rs:diskann:0.50.0 2026-03-31T17:03:26.002071+00:00 DiskANN is a fast approximate nearest neighbor search library for high dimensional data docs.rs diskann-utils-0.50.0 urn:docs-rs:diskann-utils:0.50.0 2026-03-31T17:03:25.056052+00:00 DiskANN is a fast approximate nearest neighbor search library for high dimensional data docs.rs diskann-benchmark-simd-0.50.0 urn:docs-rs:diskann-benchmark-simd:0.50.0 2026-03-31T17:03:23.208253+00:00 DiskANN is a fast approximate nearest neighbor search library for high dimensional data docs.rs diskann-vector-0.50.0 urn:docs-rs:diskann-vector:0.50.0 2026-03-31T17:02:33.461154+00:00 DiskANN is a fast approximate nearest neighbor search library for high dimensional data docs.rs wecanencrypt-0.4.0 urn:docs-rs:wecanencrypt:0.4.0 2026-03-31T17:02:31.334678+00:00 Simple Rust OpenPGP library for encryption, signing, and key management. docs.rs diskann-wide-0.50.0 urn:docs-rs:diskann-wide:0.50.0 2026-03-31T17:02:29.887911+00:00 DiskANN is a fast approximate nearest neighbor search library for high dimensional data docs.rs diskann-platform-0.50.0 urn:docs-rs:diskann-platform:0.50.0 2026-03-31T17:01:55.493841+00:00 DiskANN is a fast approximate nearest neighbor search library for high dimensional data docs.rs oximod-0.2.4 urn:docs-rs:oximod:0.2.4 2026-03-31T17:01:46.387232+00:00 MongoDB ODM for Rust inspired by Mongoose docs.rs diskann-benchmark-runner-0.50.0 urn:docs-rs:diskann-benchmark-runner:0.50.0 2026-03-31T17:01:32.328833+00:00 DiskANN is a fast approximate nearest neighbor search library for high dimensional data docs.rs reovim-module-emacs-0.14.3 urn:docs-rs:reovim-module-emacs:0.14.3 2026-03-31T17:01:23.622717+00:00 Emacs personality skeleton for reovim - POLICY module (#623) docs.rs asmtest-0.1.9 urn:docs-rs:asmtest:0.1.9 2026-03-31T17:00:53.354727+00:00 A library for tracking generated assemblies. docs.rs bsv-wallet-toolbox-rs-0.3.22 urn:docs-rs:bsv-wallet-toolbox-rs:0.3.22 2026-03-31T17:00:37.483128+00:00 Storage and services for BSV wallets - Rust implementation of @bsv/wallet-toolbox docs.rs qonductor-0.1.0-alpha.5 urn:docs-rs:qonductor:0.1.0-alpha.5 2026-03-31T17:00:16.873065+00:00 Rust implementation of the Qobuz Connect protocol docs.rs evaloop-0.0.1 urn:docs-rs:evaloop:0.0.1 2026-03-31T17:00:15.958302+00:00 evaloop docs.rs treesitter-types-scala-0.1.0 urn:docs-rs:treesitter-types-scala:0.1.0 2026-03-31T17:00:09.692725+00:00 Pre-generated strongly-typed AST types for Scala (tree-sitter-scala) docs.rs saorsa-core-0.21.0 urn:docs-rs:saorsa-core:0.21.0 2026-03-31T17:00:09.455368+00:00 Saorsa - Core P2P networking library with DHT, QUIC transport, and post-quantum cryptography docs.rs signinwithethereum-0.7.1 urn:docs-rs:signinwithethereum:0.7.1 2026-03-31T16:58:55.471988+00:00 Rust implementation of EIP-4361: Sign In With Ethereum docs.rs packet-dissector-dhcpv6-0.1.0 urn:docs-rs:packet-dissector-dhcpv6:0.1.0 2026-03-31T16:58:15.848392+00:00 DHCPv6 (RFC 8415 / RFC 9915) dissector for packet-dissector docs.rs motosan-agent-loop-0.8.2 urn:docs-rs:motosan-agent-loop:0.8.2 2026-03-31T16:57:54.531470+00:00 Standalone ReAct agent loop — LlmClient + AgentLoop with no platform dependencies docs.rs reovim-picker-options-0.14.3 urn:docs-rs:reovim-picker-options:0.14.3 2026-03-31T16:57:48.454497+00:00 Option picker module for reovim - browse and inspect editor options docs.rs gitshrub-1.3.0 urn:docs-rs:gitshrub:1.3.0 2026-03-31T16:57:48.068175+00:00 The "don't touch my garbage" git client docs.rs aws-local-resources-0.2.0 urn:docs-rs:aws-local-resources:0.2.0 2026-03-31T16:57:18.256709+00:00 Generic AWS resource store for aws-local — handles 14+ services with one SQLite table docs.rs aws-local-elb-0.2.0 urn:docs-rs:aws-local-elb:0.2.0 2026-03-31T16:57:17.790472+00:00 Local AWS ELB/ALB mock with real HTTP reverse proxy docs.rs aws-local-ecs-0.2.0 urn:docs-rs:aws-local-ecs:0.2.0 2026-03-31T16:56:47.208300+00:00 Local AWS ECS mock backed by the Docker daemon docs.rs aws-local-api-0.2.0 urn:docs-rs:aws-local-api:0.2.0 2026-03-31T16:56:30.739588+00:00 Rust-based AWS service mock — drop-in LocalStack replacement on port 4566 docs.rs btcnode-metrics-2.0.4 urn:docs-rs:btcnode-metrics:2.0.4 2026-03-31T16:56:23.833871+00:00 The Bitcoin node metrics exporter for Prometheus based on Rust Bitcoin Community's crate for Bitcoin JSON-RPC. docs.rs aws-local-ecr-0.2.0 urn:docs-rs:aws-local-ecr:0.2.0 2026-03-31T16:56:13.296280+00:00 Local AWS ECR mock backed by the Docker daemon docs.rs aws-local-rds-0.2.0 urn:docs-rs:aws-local-rds:0.2.0 2026-03-31T16:55:21.761967+00:00 Local AWS RDS mock with real Postgres container provisioning via Docker docs.rs aws-local-bedrock-0.2.0 urn:docs-rs:aws-local-bedrock:0.2.0 2026-03-31T16:55:18.595505+00:00 Local AWS Bedrock mock — Runtime, Agent Runtime, and KB management docs.rs aws-local-sns-0.2.0 urn:docs-rs:aws-local-sns:0.2.0 2026-03-31T16:54:51.502934+00:00 Local AWS SNS mock with SQS fan-out docs.rs aws-local-ses-0.2.0 urn:docs-rs:aws-local-ses:0.2.0 2026-03-31T16:54:17.696402+00:00 Local AWS SES mock with identity verification, DKIM, and notification persistence docs.rs aws-local-dynamodb-0.2.0 urn:docs-rs:aws-local-dynamodb:0.2.0 2026-03-31T16:53:33.779929+00:00 Local AWS DynamoDB mock with SQLite-backed storage docs.rs aws-local-s3-0.2.0 urn:docs-rs:aws-local-s3:0.2.0 2026-03-31T16:53:20.223199+00:00 Local AWS S3 mock with filesystem storage, versioning, and multipart uploads docs.rs aws-local-sqs-0.2.0 urn:docs-rs:aws-local-sqs:0.2.0 2026-03-31T16:53:03.052157+00:00 Local AWS SQS mock with in-memory queues, message lifecycle, and visibility timeouts docs.rs aws-local-organizations-0.2.0 urn:docs-rs:aws-local-organizations:0.2.0 2026-03-31T16:52:47.309974+00:00 Local AWS Organizations mock — accounts, OUs, and SCPs docs.rs aws-local-iam-0.2.0 urn:docs-rs:aws-local-iam:0.2.0 2026-03-31T16:51:44.497211+00:00 Local AWS IAM mock — roles, policies, and attachments docs.rs aws-local-sts-0.2.0 urn:docs-rs:aws-local-sts:0.2.0 2026-03-31T16:51:34.680418+00:00 Local AWS STS mock — GetCallerIdentity and AssumeRole docs.rs aws-local-cognito-0.2.0 urn:docs-rs:aws-local-cognito:0.2.0 2026-03-31T16:51:21.969402+00:00 Local AWS Cognito mock with user pools, auth flows, and JWT tokens docs.rs aws-local-core-0.2.0 urn:docs-rs:aws-local-core:0.2.0 2026-03-31T16:50:55.644895+00:00 Shared infrastructure for aws-local: DB pool, config, error types docs.rs canadensis-0.6.1 urn:docs-rs:canadensis:0.6.1 2026-03-31T16:50:02.704283+00:00 A Cyphal implementation: Node types and re-exports from some other canadensis crates docs.rs zcash-memo-decode-0.1.1 urn:docs-rs:zcash-memo-decode:0.1.1 2026-03-31T16:49:26.813011+00:00 Universal decoder for Zcash shielded memo formats. Identifies plain text, ZIP 302 TVLV, ZAP1 attestation, binary, and empty memos. docs.rs canadensis\_bxcan-0.6.1 urn:docs-rs:canadensis\_bxcan:0.6.1 2026-03-31T16:49:14.830890+00:00 Bridge between Canadensis and the BXCAN peripherals found in some microcontrollers docs.rs zap1-verify-0.2.1 urn:docs-rs:zap1-verify:0.2.1 2026-03-31T16:49:05.071751+00:00 Standalone Merkle proof verifier for the ZAP1 attestation protocol on Zcash docs.rs reductionist-0.13.1 urn:docs-rs:reductionist:0.13.1 2026-03-31T16:49:01.566440+00:00 S3 Active Storage server docs.rs reovim-picker-grep-0.14.3 urn:docs-rs:reovim-picker-grep:0.14.3 2026-03-31T16:48:47.251499+00:00 Grep picker module for reovim - content search using ripgrep docs.rs depsec-0.14.0 urn:docs-rs:depsec:0.14.0 2026-03-31T16:48:38.345204+00:00 Supply chain security scanner for any GitHub project docs.rs canadensis\_linux-0.6.0 urn:docs-rs:canadensis\_linux:0.6.0 2026-03-31T16:48:32.206689+00:00 Linux SocketCAN compatibility for canadensis (Cyphal) docs.rs athena\_rs-2.12.1 urn:docs-rs:athena\_rs:2.12.1 2026-03-31T16:47:34.904080+00:00 Database gateway API docs.rs canadensis\_pnp\_client-0.6.0 urn:docs-rs:canadensis\_pnp\_client:0.6.0 2026-03-31T16:47:22.640088+00:00 Client library for Cyphal plug-and-play node ID allocation docs.rs ququmatz-0.1.0 urn:docs-rs:ququmatz:0.1.0 2026-03-31T16:47:21.146799+00:00 Zero-dependency io\_uring bindings via raw syscalls, no libc docs.rs coyoquil-0.1.0 urn:docs-rs:coyoquil:0.1.0 2026-03-31T16:47:06.500476+00:00 Zero-copy WebSocket frame codec and handshake (RFC 6455) docs.rs treesitter-types-ruby-0.1.0 urn:docs-rs:treesitter-types-ruby:0.1.0 2026-03-31T16:46:50.576282+00:00 Pre-generated strongly-typed AST types for Ruby (tree-sitter-ruby) docs.rs sst\_sdk-4.6.9 urn:docs-rs:sst\_sdk:4.6.9 2026-03-31T16:46:49.076637+00:00 Rust SDK for SST docs.rs canadensis\_data\_types-0.6.0 urn:docs-rs:canadensis\_data\_types:0.6.0 2026-03-31T16:45:57.229448+00:00 Automatically generated types for all Cyphal public regulated data types docs.rs wmill-1.670.0 urn:docs-rs:wmill:1.670.0 2026-03-31T16:45:55.095060+00:00 A client library for accessing Windmill server wrapping the Windmill client API docs.rs canic-testkit-0.20.6 urn:docs-rs:canic-testkit:0.20.6 2026-03-31T16:45:49.176754+00:00 Canic — a canister orchestration and management toolkit for the Internet Computer docs.rs packet-dissector-dhcp-0.1.0 urn:docs-rs:packet-dissector-dhcp:0.1.0 2026-03-31T16:44:58.294470+00:00 DHCP (RFC 2131) dissector for packet-dissector docs.rs canic-0.20.6 urn:docs-rs:canic:0.20.6 2026-03-31T16:44:32.493100+00:00 Canic — a canister orchestration and management toolkit for the Internet Computer docs.rs canic-sharding-runtime-0.20.6 urn:docs-rs:canic-sharding-runtime:0.20.6 2026-03-31T16:44:24.894972+00:00 Canic — a canister orchestration and management toolkit for the Internet Computer docs.rs canic-control-plane-0.20.6 urn:docs-rs:canic-control-plane:0.20.6 2026-03-31T16:44:19.854694+00:00 Canic — a canister orchestration and management toolkit for the Internet Computer docs.rs databento-0.45.0 urn:docs-rs:databento:0.45.0 2026-03-31T16:44:00.744250+00:00 Official Databento client library docs.rs windmill-api-1.670.0 urn:docs-rs:windmill-api:1.670.0 2026-03-31T16:43:26.624658+00:00 No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) docs.rs canic-core-0.20.6 urn:docs-rs:canic-core:0.20.6 2026-03-31T16:43:26.028824+00:00 Canic — a canister orchestration and management toolkit for the Internet Computer docs.rs canic-types-0.20.6 urn:docs-rs:canic-types:0.20.6 2026-03-31T16:43:18.610442+00:00 Shared core identifier types for Canic docs.rs canic-cdk-0.20.6 urn:docs-rs:canic-cdk:0.20.6 2026-03-31T16:42:24.792742+00:00 Canic — a canister orchestration and management toolkit for the Internet Computer docs.rs canic-memory-0.20.6 urn:docs-rs:canic-memory:0.20.6 2026-03-31T16:42:24.186253+00:00 Canic — a canister orchestration and management toolkit for the Internet Computer docs.rs canadensis\_macro-0.6.0 urn:docs-rs:canadensis\_macro:0.6.0 2026-03-31T16:41:25.429070+00:00 A procedural macro that generates Rust data types and serialization code from inline and/or external Cyphal DSDL files docs.rs canic-dsl-macros-0.20.6 urn:docs-rs:canic-dsl-macros:0.20.6 2026-03-31T16:41:25.293938+00:00 Canic — a canister orchestration and management toolkit for the Internet Computer docs.rs opendroneid-0.1.2 urn:docs-rs:opendroneid:0.1.2 2026-03-31T16:41:15.578064+00:00 Safe Rust wrapper for Open Drone ID encoding/decoding APIs docs.rs canadensis\_codegen\_rust-0.6.0 urn:docs-rs:canadensis\_codegen\_rust:0.6.0 2026-03-31T16:41:13.870336+00:00 Generates Rust code for data types based on Cyphal DSDL files docs.rs opendroneid-sys-0.1.2 urn:docs-rs:opendroneid-sys:0.1.2 2026-03-31T16:41:09.023990+00:00 Raw FFI bindings to libopendroneid (Open Drone ID core C library) docs.rs canadensis\_udp-0.6.0 urn:docs-rs:canadensis\_udp:0.6.0 2026-03-31T16:41:05.289893+00:00 A Cyphal implementation: Cyphal/UDP transport docs.rs reqrio-0.2.0 urn:docs-rs:reqrio:0.2.0 2026-03-31T16:40:49.645017+00:00 A lightweight, high concurrency HTTP request library docs.rs canadensis\_can-0.6.0 urn:docs-rs:canadensis\_can:0.6.0 2026-03-31T16:40:40.740205+00:00 A Cyphal implementation: Cyphal/CAN (CAN and CAN FD) transport layer docs.rs canadensis\_serial-0.6.0 urn:docs-rs:canadensis\_serial:0.6.0 2026-03-31T16:40:35.491690+00:00 A Cyphal implementation: Cyphal/Serial transport docs.rs reqtls-0.2.0 urn:docs-rs:reqtls:0.2.0 2026-03-31T16:40:33.548091+00:00 A tls lib docs.rs canadensis\_dsdl\_frontend-0.6.0 urn:docs-rs:canadensis\_dsdl\_frontend:0.6.0 2026-03-31T16:40:06.874316+00:00 Compiler front-end for the Cyphal Data Structure Description Language docs.rs reqrio-json-0.1.11 urn:docs-rs:reqrio-json:0.1.11 2026-03-31T16:40:03.283580+00:00 reqrio json lib docs.rs hrana-server-0.1.0 urn:docs-rs:hrana-server:0.1.0 2026-03-31T16:39:58.062585+00:00 Rust-native embeddable hrana (libSQL HTTP pipeline) server docs.rs --- # arrow 58.1.0 - Docs.rs [Docs.rs](https://docs.rs/) * [arrow-58.1.0](https://docs.rs/crate/arrow/latest "Rust implementation of Apache Arrow") * [Platform](https://docs.rs/crate/arrow/latest/source/src/#) * [x86\_64-unknown-linux-gnu](https://docs.rs/arrow/latest/arrow/) * [Feature flags](https://docs.rs/crate/arrow/latest/features "Browse available feature flags of arrow-58.1.0") * [docs.rs](https://docs.rs/crate/arrow/latest/source/src/#) * [About docs.rs](https://docs.rs/about) * [Badges](https://docs.rs/about/badges) * [Builds](https://docs.rs/about/builds) * [Metadata](https://docs.rs/about/metadata) * [Shorthand URLs](https://docs.rs/about/redirections) * [Download](https://docs.rs/about/download) * [Rustdoc JSON](https://docs.rs/about/rustdoc-json) * [Build queue](https://docs.rs/releases/queue) * [Privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#docs.rs) * [Rust](https://docs.rs/crate/arrow/latest/source/src/#) * [Rust website](https://www.rust-lang.org/) * [The Book](https://doc.rust-lang.org/book/) * [Standard Library API Reference](https://doc.rust-lang.org/std/) * [Rust by Example](https://doc.rust-lang.org/rust-by-example/) * [The Cargo Guide](https://doc.rust-lang.org/cargo/guide/) * [Clippy Documentation](https://doc.rust-lang.org/nightly/clippy) arrow 58.1.0 ============ Rust implementation of Apache Arrow * [Crate](https://docs.rs/crate/arrow/latest) * [Source](https://docs.rs/crate/arrow/latest/source/src/) * [Builds](https://docs.rs/crate/arrow/latest/builds) * [Feature flags](https://docs.rs/crate/arrow/latest/features) [Documentation](https://docs.rs/arrow/latest/arrow/) * [..](https://docs.rs/crate/arrow/latest/source/) * [array](https://docs.rs/crate/arrow/latest/source/src/array/) * [compute](https://docs.rs/crate/arrow/latest/source/src/compute/) * [datatypes](https://docs.rs/crate/arrow/latest/source/src/datatypes/) * [util](https://docs.rs/crate/arrow/latest/source/src/util/) * [error.rs](https://docs.rs/crate/arrow/latest/source/src/error.rs) * [lib.rs](https://docs.rs/crate/arrow/latest/source/src/lib.rs) * [tensor.rs](https://docs.rs/crate/arrow/latest/source/src/tensor.rs) --- # arrow 58.1.0 - Docs.rs [Docs.rs](https://docs.rs/) * [arrow-58.1.0](https://docs.rs/crate/arrow/latest "Rust implementation of Apache Arrow") * [Platform](https://docs.rs/crate/arrow/latest/builds#) * [x86\_64-unknown-linux-gnu](https://docs.rs/arrow/latest/arrow/) * [Feature flags](https://docs.rs/crate/arrow/latest/features "Browse available feature flags of arrow-58.1.0") * [docs.rs](https://docs.rs/crate/arrow/latest/builds#) * [About docs.rs](https://docs.rs/about) * [Badges](https://docs.rs/about/badges) * [Builds](https://docs.rs/about/builds) * [Metadata](https://docs.rs/about/metadata) * [Shorthand URLs](https://docs.rs/about/redirections) * [Download](https://docs.rs/about/download) * [Rustdoc JSON](https://docs.rs/about/rustdoc-json) * [Build queue](https://docs.rs/releases/queue) * [Privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#docs.rs) * [Rust](https://docs.rs/crate/arrow/latest/builds#) * [Rust website](https://www.rust-lang.org/) * [The Book](https://doc.rust-lang.org/book/) * [Standard Library API Reference](https://doc.rust-lang.org/std/) * [Rust by Example](https://doc.rust-lang.org/rust-by-example/) * [The Cargo Guide](https://doc.rust-lang.org/cargo/guide/) * [Clippy Documentation](https://doc.rust-lang.org/nightly/clippy) arrow 58.1.0 ============ Rust implementation of Apache Arrow * [Crate](https://docs.rs/crate/arrow/latest) * [Source](https://docs.rs/crate/arrow/latest/source/) * [Builds](https://docs.rs/crate/arrow/latest/builds) * [Feature flags](https://docs.rs/crate/arrow/latest/features) [Documentation](https://docs.rs/arrow/latest/arrow/) **Builds** * [rustc 1.96.0-nightly (362211dc2 2026-03-24)\ \ docsrs 0.0.0 (da7690ee 2026-03-15 )\ \ Mar 25, 2026\ \ took 1m 19s](https://docs.rs/crate/arrow/latest/builds/3059077) #### arrow's sandbox limits All the builds on docs.rs are executed inside a sandbox with limited resources. The limits for this crate are the following: | | | | --- | --- | | Available RAM | 6.44 GB | | Maximum rustdoc execution time | 15m | | Maximum size of a build log | 102.4 kB | | Network access | blocked | | Maximum number of build targets | 10 | If a build fails because it hit one of those limits please [open an issue](https://github.com/rust-lang/docs.rs/issues/new/choose) to get them increased. --- # arrow 58.1.0 - Docs.rs [Docs.rs](https://docs.rs/) * [arrow-58.1.0](https://docs.rs/crate/arrow/latest "Rust implementation of Apache Arrow") * [Platform](https://docs.rs/crate/arrow/latest/source/tests/#) * [x86\_64-unknown-linux-gnu](https://docs.rs/arrow/latest/arrow/) * [Feature flags](https://docs.rs/crate/arrow/latest/features "Browse available feature flags of arrow-58.1.0") * [docs.rs](https://docs.rs/crate/arrow/latest/source/tests/#) * [About docs.rs](https://docs.rs/about) * [Badges](https://docs.rs/about/badges) * [Builds](https://docs.rs/about/builds) * [Metadata](https://docs.rs/about/metadata) * [Shorthand URLs](https://docs.rs/about/redirections) * [Download](https://docs.rs/about/download) * [Rustdoc JSON](https://docs.rs/about/rustdoc-json) * [Build queue](https://docs.rs/releases/queue) * [Privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#docs.rs) * [Rust](https://docs.rs/crate/arrow/latest/source/tests/#) * [Rust website](https://www.rust-lang.org/) * [The Book](https://doc.rust-lang.org/book/) * [Standard Library API Reference](https://doc.rust-lang.org/std/) * [Rust by Example](https://doc.rust-lang.org/rust-by-example/) * [The Cargo Guide](https://doc.rust-lang.org/cargo/guide/) * [Clippy Documentation](https://doc.rust-lang.org/nightly/clippy) arrow 58.1.0 ============ Rust implementation of Apache Arrow * [Crate](https://docs.rs/crate/arrow/latest) * [Source](https://docs.rs/crate/arrow/latest/source/tests/) * [Builds](https://docs.rs/crate/arrow/latest/builds) * [Feature flags](https://docs.rs/crate/arrow/latest/features) [Documentation](https://docs.rs/arrow/latest/arrow/) * [..](https://docs.rs/crate/arrow/latest/source/) * [arithmetic.rs](https://docs.rs/crate/arrow/latest/source/tests/arithmetic.rs) * [array\_cast.rs](https://docs.rs/crate/arrow/latest/source/tests/array_cast.rs) * [array\_equal.rs](https://docs.rs/crate/arrow/latest/source/tests/array_equal.rs) * [array\_transform.rs](https://docs.rs/crate/arrow/latest/source/tests/array_transform.rs) * [array\_validation.rs](https://docs.rs/crate/arrow/latest/source/tests/array_validation.rs) * [csv.rs](https://docs.rs/crate/arrow/latest/source/tests/csv.rs) * [schema.rs](https://docs.rs/crate/arrow/latest/source/tests/schema.rs) * [shrink\_to\_fit.rs](https://docs.rs/crate/arrow/latest/source/tests/shrink_to_fit.rs) * [timezone.rs](https://docs.rs/crate/arrow/latest/source/tests/timezone.rs) --- # arrow-ipc 58.1.0 - Docs.rs [Docs.rs](https://docs.rs/) * [arrow-ipc-58.1.0](https://docs.rs/crate/arrow-ipc/58.1.0 "Support for the Arrow IPC format") * [Platform](https://docs.rs/crate/arrow-ipc/58.1.0/features#) * [x86\_64-unknown-linux-gnu](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/) * [Feature flags](https://docs.rs/crate/arrow-ipc/58.1.0/features "Browse available feature flags of arrow-ipc-58.1.0") * [docs.rs](https://docs.rs/crate/arrow-ipc/58.1.0/features#) * [About docs.rs](https://docs.rs/about) * [Badges](https://docs.rs/about/badges) * [Builds](https://docs.rs/about/builds) * [Metadata](https://docs.rs/about/metadata) * [Shorthand URLs](https://docs.rs/about/redirections) * [Download](https://docs.rs/about/download) * [Rustdoc JSON](https://docs.rs/about/rustdoc-json) * [Build queue](https://docs.rs/releases/queue) * [Privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#docs.rs) * [Rust](https://docs.rs/crate/arrow-ipc/58.1.0/features#) * [Rust website](https://www.rust-lang.org/) * [The Book](https://doc.rust-lang.org/book/) * [Standard Library API Reference](https://doc.rust-lang.org/std/) * [Rust by Example](https://doc.rust-lang.org/rust-by-example/) * [The Cargo Guide](https://doc.rust-lang.org/cargo/guide/) * [Clippy Documentation](https://doc.rust-lang.org/nightly/clippy) arrow-ipc 58.1.0 ================ Support for the Arrow IPC format * [Crate](https://docs.rs/crate/arrow-ipc/58.1.0) * [Source](https://docs.rs/crate/arrow-ipc/58.1.0/source/) * [Builds](https://docs.rs/crate/arrow-ipc/58.1.0/builds) * [Feature flags](https://docs.rs/crate/arrow-ipc/58.1.0/features) [Documentation](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/) * Feature flags * [default](https://docs.rs/crate/arrow-ipc/58.1.0/features#default) * [lz4](https://docs.rs/crate/arrow-ipc/58.1.0/features#lz4) * [lz4\_flex](https://docs.rs/crate/arrow-ipc/58.1.0/features#lz4_flex) * [zstd](https://docs.rs/crate/arrow-ipc/58.1.0/features#zstd) arrow-ipc ========= There is very little structured metadata to build this page from currently. You should check the [main library docs](https://docs.rs/arrow-ipc/58.1.0/arrow_ipc/) , [readme](https://docs.rs/crate/arrow-ipc/58.1.0) , or [Cargo.toml](https://docs.rs/crate/arrow-ipc/58.1.0/source/Cargo.toml.orig) in case the author documented the features in them. This version has **3** feature flags, **0** of them enabled by **default**. ### default This feature flag does not enable additional features. ### lz4 * [lz4\_flex](https://docs.rs/crate/arrow-ipc/58.1.0/features#lz4_flex) ### lz4\_flex * dep:[lz4\_flex](https://docs.rs/lz4_flex/^0.13/) ### zstd * dep:[zstd](https://docs.rs/zstd/^0.13.0/) --- # arrow-data 58.1.0 - Docs.rs [Docs.rs](https://docs.rs/) * [arrow-data-58.1.0](https://docs.rs/crate/arrow-data/58.1.0 "Array data abstractions for Apache Arrow") * [Platform](https://docs.rs/crate/arrow-data/58.1.0/features#) * [aarch64-apple-darwin](https://docs.rs/arrow-data/58.1.0/aarch64-apple-darwin/arrow_data/) * [aarch64-unknown-linux-gnu](https://docs.rs/arrow-data/58.1.0/aarch64-unknown-linux-gnu/arrow_data/) * [i686-pc-windows-msvc](https://docs.rs/arrow-data/58.1.0/i686-pc-windows-msvc/arrow_data/) * [x86\_64-pc-windows-msvc](https://docs.rs/arrow-data/58.1.0/x86_64-pc-windows-msvc/arrow_data/) * [x86\_64-unknown-linux-gnu](https://docs.rs/arrow-data/58.1.0/arrow_data/) * [Feature flags](https://docs.rs/crate/arrow-data/58.1.0/features "Browse available feature flags of arrow-data-58.1.0") * [docs.rs](https://docs.rs/crate/arrow-data/58.1.0/features#) * [About docs.rs](https://docs.rs/about) * [Badges](https://docs.rs/about/badges) * [Builds](https://docs.rs/about/builds) * [Metadata](https://docs.rs/about/metadata) * [Shorthand URLs](https://docs.rs/about/redirections) * [Download](https://docs.rs/about/download) * [Rustdoc JSON](https://docs.rs/about/rustdoc-json) * [Build queue](https://docs.rs/releases/queue) * [Privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#docs.rs) * [Rust](https://docs.rs/crate/arrow-data/58.1.0/features#) * [Rust website](https://www.rust-lang.org/) * [The Book](https://doc.rust-lang.org/book/) * [Standard Library API Reference](https://doc.rust-lang.org/std/) * [Rust by Example](https://doc.rust-lang.org/rust-by-example/) * [The Cargo Guide](https://doc.rust-lang.org/cargo/guide/) * [Clippy Documentation](https://doc.rust-lang.org/nightly/clippy) arrow-data 58.1.0 ================= Array data abstractions for Apache Arrow * [Crate](https://docs.rs/crate/arrow-data/58.1.0) * [Source](https://docs.rs/crate/arrow-data/58.1.0/source/) * [Builds](https://docs.rs/crate/arrow-data/58.1.0/builds) * [Feature flags](https://docs.rs/crate/arrow-data/58.1.0/features) [Documentation](https://docs.rs/arrow-data/58.1.0/arrow_data/) * Feature flags * [ffi](https://docs.rs/crate/arrow-data/58.1.0/features#ffi) * [force\_validate](https://docs.rs/crate/arrow-data/58.1.0/features#force_validate) * [pool](https://docs.rs/crate/arrow-data/58.1.0/features#pool) arrow-data ========== There is very little structured metadata to build this page from currently. You should check the [main library docs](https://docs.rs/arrow-data/58.1.0/arrow_data/) , [readme](https://docs.rs/crate/arrow-data/58.1.0) , or [Cargo.toml](https://docs.rs/crate/arrow-data/58.1.0/source/Cargo.toml.orig) in case the author documented the features in them. This version has **3** feature flags, **0** of them enabled by **default**. ### ffi * [arrow-schema](https://docs.rs/crate/arrow-schema/^58.1.0) /[ffi](https://docs.rs/crate/arrow-schema/^58.1.0/features#ffi) ### force\_validate This feature flag does not enable additional features. ### pool * [arrow-buffer](https://docs.rs/crate/arrow-buffer/^58.1.0) /[pool](https://docs.rs/crate/arrow-buffer/^58.1.0/features#pool) --- # add in arrow_arith::numeric - Rust [Docs.rs](https://docs.rs/) * [arrow-arith-58.1.0](https://docs.rs/arrow-arith/58.1.0/arrow_arith/numeric/fn.add.html# "Arrow arithmetic kernels") * arrow-arith 58.1.0 * [Docs.rs crate page](https://docs.rs/crate/arrow-arith/58.1.0 "See arrow-arith in docs.rs") * [Apache-2.0](https://spdx.org/licenses/Apache-2.0) * Links * [Homepage](https://github.com/apache/arrow-rs) * [Repository](https://github.com/apache/arrow-rs) * [crates.io](https://crates.io/crates/arrow-arith "See arrow-arith in crates.io") * [Source](https://docs.rs/crate/arrow-arith/58.1.0/source/ "Browse source of arrow-arith-58.1.0") * Owners * [kou](https://crates.io/users/kou) * [xhochy](https://crates.io/users/xhochy) * [nevi-me](https://crates.io/users/nevi-me) * [alamb](https://crates.io/users/alamb) * [tustvold](https://crates.io/users/tustvold) * Dependencies * * [arrow-array ^58.1.0 _normal_](https://docs.rs/arrow-array/^58.1.0/) * [arrow-buffer ^58.1.0 _normal_](https://docs.rs/arrow-buffer/^58.1.0/) * [arrow-data ^58.1.0 _normal_](https://docs.rs/arrow-data/^58.1.0/) * [arrow-schema ^58.1.0 _normal_](https://docs.rs/arrow-schema/^58.1.0/) * [chrono ^0.4.40 _normal_](https://docs.rs/chrono/^0.4.40/) * [num-traits ^0.2.19 _normal_](https://docs.rs/num-traits/^0.2.19/) * Versions * [**100%** of the crate is documented](https://docs.rs/crate/arrow-arith/58.1.0) * [Platform](https://docs.rs/arrow-arith/58.1.0/arrow_arith/numeric/fn.add.html#) * [aarch64-apple-darwin](https://docs.rs/crate/arrow-arith/58.1.0/target-redirect/aarch64-apple-darwin/arrow_arith/numeric/fn.add.html) * [aarch64-unknown-linux-gnu](https://docs.rs/crate/arrow-arith/58.1.0/target-redirect/aarch64-unknown-linux-gnu/arrow_arith/numeric/fn.add.html) * [i686-pc-windows-msvc](https://docs.rs/crate/arrow-arith/58.1.0/target-redirect/i686-pc-windows-msvc/arrow_arith/numeric/fn.add.html) * [x86\_64-pc-windows-msvc](https://docs.rs/crate/arrow-arith/58.1.0/target-redirect/x86_64-pc-windows-msvc/arrow_arith/numeric/fn.add.html) * [x86\_64-unknown-linux-gnu](https://docs.rs/crate/arrow-arith/58.1.0/target-redirect/arrow_arith/numeric/fn.add.html) * [Feature flags](https://docs.rs/crate/arrow-arith/58.1.0/features "Browse available feature flags of arrow-arith-58.1.0") * [docs.rs](https://docs.rs/arrow-arith/58.1.0/arrow_arith/numeric/fn.add.html#) * [About docs.rs](https://docs.rs/about) * [Badges](https://docs.rs/about/badges) * [Builds](https://docs.rs/about/builds) * [Metadata](https://docs.rs/about/metadata) * [Shorthand URLs](https://docs.rs/about/redirections) * [Download](https://docs.rs/about/download) * [Rustdoc JSON](https://docs.rs/about/rustdoc-json) * [Build queue](https://docs.rs/releases/queue) * [Privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#docs.rs) * [Rust](https://docs.rs/arrow-arith/58.1.0/arrow_arith/numeric/fn.add.html#) * [Rust website](https://www.rust-lang.org/) * [The Book](https://doc.rust-lang.org/book/) * [Standard Library API Reference](https://doc.rust-lang.org/std/) * [Rust by Example](https://doc.rust-lang.org/rust-by-example/) * [The Cargo Guide](https://doc.rust-lang.org/cargo/guide/) * [Clippy Documentation](https://doc.rust-lang.org/nightly/clippy) [Skip to main content](https://docs.rs/arrow-arith/58.1.0/arrow_arith/numeric/fn.add.html#main-content) [add](https://docs.rs/arrow-arith/58.1.0/arrow_arith/numeric/fn.add.html#) --------------------------------------------------------------------------- [arrow\_arith](https://docs.rs/arrow-arith/58.1.0/arrow_arith/index.html) ::[numeric](https://docs.rs/arrow-arith/58.1.0/arrow_arith/numeric/index.html) Function add Copy item path =========================== [Source](https://docs.rs/arrow-arith/58.1.0/src/arrow_arith/numeric.rs.html#34-36) pub fn add(lhs: &dyn Datum, rhs: &dyn Datum) -> Result Expand description Perform `lhs + rhs`, returning an error on overflow --- # arrow_arith::temporal - Rust [Docs.rs](https://docs.rs/) * [arrow-arith-58.1.0](https://docs.rs/arrow-arith/58.1.0/arrow_arith/temporal/index.html# "Arrow arithmetic kernels") * arrow-arith 58.1.0 * [Docs.rs crate page](https://docs.rs/crate/arrow-arith/58.1.0 "See arrow-arith in docs.rs") * [Apache-2.0](https://spdx.org/licenses/Apache-2.0) * Links * [Homepage](https://github.com/apache/arrow-rs) * [Repository](https://github.com/apache/arrow-rs) * [crates.io](https://crates.io/crates/arrow-arith "See arrow-arith in crates.io") * [Source](https://docs.rs/crate/arrow-arith/58.1.0/source/ "Browse source of arrow-arith-58.1.0") * Owners * [kou](https://crates.io/users/kou) * [xhochy](https://crates.io/users/xhochy) * [nevi-me](https://crates.io/users/nevi-me) * [alamb](https://crates.io/users/alamb) * [tustvold](https://crates.io/users/tustvold) * Dependencies * * [arrow-array ^58.1.0 _normal_](https://docs.rs/arrow-array/^58.1.0/) * [arrow-buffer ^58.1.0 _normal_](https://docs.rs/arrow-buffer/^58.1.0/) * [arrow-data ^58.1.0 _normal_](https://docs.rs/arrow-data/^58.1.0/) * [arrow-schema ^58.1.0 _normal_](https://docs.rs/arrow-schema/^58.1.0/) * [chrono ^0.4.40 _normal_](https://docs.rs/chrono/^0.4.40/) * [num-traits ^0.2.19 _normal_](https://docs.rs/num-traits/^0.2.19/) * Versions * [**100%** of the crate is documented](https://docs.rs/crate/arrow-arith/58.1.0) * [Platform](https://docs.rs/arrow-arith/58.1.0/arrow_arith/temporal/index.html#) * [aarch64-apple-darwin](https://docs.rs/crate/arrow-arith/58.1.0/target-redirect/aarch64-apple-darwin/arrow_arith/temporal/) * [aarch64-unknown-linux-gnu](https://docs.rs/crate/arrow-arith/58.1.0/target-redirect/aarch64-unknown-linux-gnu/arrow_arith/temporal/) * [i686-pc-windows-msvc](https://docs.rs/crate/arrow-arith/58.1.0/target-redirect/i686-pc-windows-msvc/arrow_arith/temporal/) * [x86\_64-pc-windows-msvc](https://docs.rs/crate/arrow-arith/58.1.0/target-redirect/x86_64-pc-windows-msvc/arrow_arith/temporal/) * [x86\_64-unknown-linux-gnu](https://docs.rs/crate/arrow-arith/58.1.0/target-redirect/arrow_arith/temporal/) * [Feature flags](https://docs.rs/crate/arrow-arith/58.1.0/features "Browse available feature flags of arrow-arith-58.1.0") * [docs.rs](https://docs.rs/arrow-arith/58.1.0/arrow_arith/temporal/index.html#) * [About docs.rs](https://docs.rs/about) * [Badges](https://docs.rs/about/badges) * [Builds](https://docs.rs/about/builds) * [Metadata](https://docs.rs/about/metadata) * [Shorthand URLs](https://docs.rs/about/redirections) * [Download](https://docs.rs/about/download) * [Rustdoc JSON](https://docs.rs/about/rustdoc-json) * [Build queue](https://docs.rs/releases/queue) * [Privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#docs.rs) * [Rust](https://docs.rs/arrow-arith/58.1.0/arrow_arith/temporal/index.html#) * [Rust website](https://www.rust-lang.org/) * [The Book](https://doc.rust-lang.org/book/) * [Standard Library API Reference](https://doc.rust-lang.org/std/) * [Rust by Example](https://doc.rust-lang.org/rust-by-example/) * [The Cargo Guide](https://doc.rust-lang.org/cargo/guide/) * [Clippy Documentation](https://doc.rust-lang.org/nightly/clippy) [Skip to main content](https://docs.rs/arrow-arith/58.1.0/arrow_arith/temporal/index.html#main-content) [Module temporal](https://docs.rs/arrow-arith/58.1.0/arrow_arith/temporal/index.html#) --------------------------------------------------------------------------------------- [arrow\_arith](https://docs.rs/arrow-arith/58.1.0/arrow_arith/index.html) Module temporal Copy item path ============================== [Source](https://docs.rs/arrow-arith/58.1.0/src/arrow_arith/temporal.rs.html#18-2043) Expand description Defines temporal kernels for time and date related functions. Enums[§](https://docs.rs/arrow-arith/58.1.0/arrow_arith/temporal/index.html#enums) ----------------------------------------------------------------------------------- [DatePart](https://docs.rs/arrow-arith/58.1.0/arrow_arith/temporal/enum.DatePart.html "enum arrow_arith::temporal::DatePart") Valid parts to extract from date/time/timestamp arrays. Functions[§](https://docs.rs/arrow-arith/58.1.0/arrow_arith/temporal/index.html#functions) ------------------------------------------------------------------------------------------- [date\_part](https://docs.rs/arrow-arith/58.1.0/arrow_arith/temporal/fn.date_part.html "fn arrow_arith::temporal::date_part") Given an array, return a new array with the extracted [`DatePart`](https://docs.rs/arrow-arith/58.1.0/arrow_arith/temporal/enum.DatePart.html "enum arrow_arith::temporal::DatePart") as signed 32-bit integer values. --- # arrow-select 58.1.0 - Docs.rs [Docs.rs](https://docs.rs/) * [arrow-select-58.1.0](https://docs.rs/crate/arrow-select/58.1.0 "Selection kernels for arrow arrays") * [Platform](https://docs.rs/crate/arrow-select/58.1.0/source/#) * [aarch64-apple-darwin](https://docs.rs/arrow-select/58.1.0/aarch64-apple-darwin/arrow_select/) * [aarch64-unknown-linux-gnu](https://docs.rs/arrow-select/58.1.0/aarch64-unknown-linux-gnu/arrow_select/) * [i686-pc-windows-msvc](https://docs.rs/arrow-select/58.1.0/i686-pc-windows-msvc/arrow_select/) * [x86\_64-pc-windows-msvc](https://docs.rs/arrow-select/58.1.0/x86_64-pc-windows-msvc/arrow_select/) * [x86\_64-unknown-linux-gnu](https://docs.rs/arrow-select/58.1.0/arrow_select/) * [Feature flags](https://docs.rs/crate/arrow-select/58.1.0/features "Browse available feature flags of arrow-select-58.1.0") * [docs.rs](https://docs.rs/crate/arrow-select/58.1.0/source/#) * [About docs.rs](https://docs.rs/about) * [Badges](https://docs.rs/about/badges) * [Builds](https://docs.rs/about/builds) * [Metadata](https://docs.rs/about/metadata) * [Shorthand URLs](https://docs.rs/about/redirections) * [Download](https://docs.rs/about/download) * [Rustdoc JSON](https://docs.rs/about/rustdoc-json) * [Build queue](https://docs.rs/releases/queue) * [Privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#docs.rs) * [Rust](https://docs.rs/crate/arrow-select/58.1.0/source/#) * [Rust website](https://www.rust-lang.org/) * [The Book](https://doc.rust-lang.org/book/) * [Standard Library API Reference](https://doc.rust-lang.org/std/) * [Rust by Example](https://doc.rust-lang.org/rust-by-example/) * [The Cargo Guide](https://doc.rust-lang.org/cargo/guide/) * [Clippy Documentation](https://doc.rust-lang.org/nightly/clippy) arrow-select 58.1.0 =================== Selection kernels for arrow arrays * [Crate](https://docs.rs/crate/arrow-select/58.1.0) * [Source](https://docs.rs/crate/arrow-select/58.1.0/source/) * [Builds](https://docs.rs/crate/arrow-select/58.1.0/builds) * [Feature flags](https://docs.rs/crate/arrow-select/58.1.0/features) [Documentation](https://docs.rs/arrow-select/58.1.0/arrow_select/) * [src](https://docs.rs/crate/arrow-select/58.1.0/source/src/) * [Cargo.lock](https://docs.rs/crate/arrow-select/58.1.0/source/Cargo.lock) * [Cargo.toml](https://docs.rs/crate/arrow-select/58.1.0/source/Cargo.toml) * [Cargo.toml.orig](https://docs.rs/crate/arrow-select/58.1.0/source/Cargo.toml.orig) * [LICENSE.txt](https://docs.rs/crate/arrow-select/58.1.0/source/LICENSE.txt) * [NOTICE.txt](https://docs.rs/crate/arrow-select/58.1.0/source/NOTICE.txt) --- # arrow-ord 58.1.0 - Docs.rs [Docs.rs](https://docs.rs/) * [arrow-ord-58.1.0](https://docs.rs/crate/arrow-ord/58.1.0 "Ordering kernels for arrow arrays") * [Platform](https://docs.rs/crate/arrow-ord/58.1.0/source/#) * [aarch64-apple-darwin](https://docs.rs/arrow-ord/58.1.0/aarch64-apple-darwin/arrow_ord/) * [aarch64-unknown-linux-gnu](https://docs.rs/arrow-ord/58.1.0/aarch64-unknown-linux-gnu/arrow_ord/) * [i686-pc-windows-msvc](https://docs.rs/arrow-ord/58.1.0/i686-pc-windows-msvc/arrow_ord/) * [x86\_64-pc-windows-msvc](https://docs.rs/arrow-ord/58.1.0/x86_64-pc-windows-msvc/arrow_ord/) * [x86\_64-unknown-linux-gnu](https://docs.rs/arrow-ord/58.1.0/arrow_ord/) * [Feature flags](https://docs.rs/crate/arrow-ord/58.1.0/features "Browse available feature flags of arrow-ord-58.1.0") * [docs.rs](https://docs.rs/crate/arrow-ord/58.1.0/source/#) * [About docs.rs](https://docs.rs/about) * [Badges](https://docs.rs/about/badges) * [Builds](https://docs.rs/about/builds) * [Metadata](https://docs.rs/about/metadata) * [Shorthand URLs](https://docs.rs/about/redirections) * [Download](https://docs.rs/about/download) * [Rustdoc JSON](https://docs.rs/about/rustdoc-json) * [Build queue](https://docs.rs/releases/queue) * [Privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#docs.rs) * [Rust](https://docs.rs/crate/arrow-ord/58.1.0/source/#) * [Rust website](https://www.rust-lang.org/) * [The Book](https://doc.rust-lang.org/book/) * [Standard Library API Reference](https://doc.rust-lang.org/std/) * [Rust by Example](https://doc.rust-lang.org/rust-by-example/) * [The Cargo Guide](https://doc.rust-lang.org/cargo/guide/) * [Clippy Documentation](https://doc.rust-lang.org/nightly/clippy) arrow-ord 58.1.0 ================ Ordering kernels for arrow arrays * [Crate](https://docs.rs/crate/arrow-ord/58.1.0) * [Source](https://docs.rs/crate/arrow-ord/58.1.0/source/) * [Builds](https://docs.rs/crate/arrow-ord/58.1.0/builds) * [Feature flags](https://docs.rs/crate/arrow-ord/58.1.0/features) [Documentation](https://docs.rs/arrow-ord/58.1.0/arrow_ord/) * [src](https://docs.rs/crate/arrow-ord/58.1.0/source/src/) * [Cargo.lock](https://docs.rs/crate/arrow-ord/58.1.0/source/Cargo.lock) * [Cargo.toml](https://docs.rs/crate/arrow-ord/58.1.0/source/Cargo.toml) * [Cargo.toml.orig](https://docs.rs/crate/arrow-ord/58.1.0/source/Cargo.toml.orig) * [LICENSE.txt](https://docs.rs/crate/arrow-ord/58.1.0/source/LICENSE.txt) * [NOTICE.txt](https://docs.rs/crate/arrow-ord/58.1.0/source/NOTICE.txt) --- # arrow_schema::ffi - Rust [Docs.rs](https://docs.rs/) * [arrow-schema-58.1.0](https://docs.rs/arrow-schema/58.1.0/arrow_schema/ffi/index.html# "Defines the logical types for arrow arrays") * arrow-schema 58.1.0 * [Docs.rs crate page](https://docs.rs/crate/arrow-schema/58.1.0 "See arrow-schema in docs.rs") * [Apache-2.0](https://spdx.org/licenses/Apache-2.0) * Links * [Homepage](https://github.com/apache/arrow-rs) * [Repository](https://github.com/apache/arrow-rs) * [crates.io](https://crates.io/crates/arrow-schema "See arrow-schema in crates.io") * [Source](https://docs.rs/crate/arrow-schema/58.1.0/source/ "Browse source of arrow-schema-58.1.0") * Owners * [andygrove](https://crates.io/users/andygrove) * [xhochy](https://crates.io/users/xhochy) * [nevi-me](https://crates.io/users/nevi-me) * [alamb](https://crates.io/users/alamb) * [tustvold](https://crates.io/users/tustvold) * Dependencies * * [bitflags ^2.0.0 _normal_ _optional_](https://docs.rs/bitflags/^2.0.0/) * [serde ^1.0 _normal_ _optional_](https://docs.rs/serde/^1.0/) * [serde\_core ^1.0 _normal_ _optional_](https://docs.rs/serde_core/^1.0/) * [serde\_json ^1.0 _normal_ _optional_](https://docs.rs/serde_json/^1.0/) * [criterion ^0.8.0 _dev_](https://docs.rs/criterion/^0.8.0/) * [insta ^1.46.3 _dev_](https://docs.rs/insta/^1.46.3/) * [postcard ^1.0.10 _dev_](https://docs.rs/postcard/^1.0.10/) * Versions * [**100%** of the crate is documented](https://docs.rs/crate/arrow-schema/58.1.0) * [Platform](https://docs.rs/arrow-schema/58.1.0/arrow_schema/ffi/index.html#) * [aarch64-apple-darwin](https://docs.rs/crate/arrow-schema/58.1.0/target-redirect/aarch64-apple-darwin/arrow_schema/ffi/) * [aarch64-unknown-linux-gnu](https://docs.rs/crate/arrow-schema/58.1.0/target-redirect/aarch64-unknown-linux-gnu/arrow_schema/ffi/) * [i686-pc-windows-msvc](https://docs.rs/crate/arrow-schema/58.1.0/target-redirect/i686-pc-windows-msvc/arrow_schema/ffi/) * [x86\_64-pc-windows-msvc](https://docs.rs/crate/arrow-schema/58.1.0/target-redirect/x86_64-pc-windows-msvc/arrow_schema/ffi/) * [x86\_64-unknown-linux-gnu](https://docs.rs/crate/arrow-schema/58.1.0/target-redirect/arrow_schema/ffi/) * [Feature flags](https://docs.rs/crate/arrow-schema/58.1.0/features "Browse available feature flags of arrow-schema-58.1.0") * [docs.rs](https://docs.rs/arrow-schema/58.1.0/arrow_schema/ffi/index.html#) * [About docs.rs](https://docs.rs/about) * [Badges](https://docs.rs/about/badges) * [Builds](https://docs.rs/about/builds) * [Metadata](https://docs.rs/about/metadata) * [Shorthand URLs](https://docs.rs/about/redirections) * [Download](https://docs.rs/about/download) * [Rustdoc JSON](https://docs.rs/about/rustdoc-json) * [Build queue](https://docs.rs/releases/queue) * [Privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#docs.rs) * [Rust](https://docs.rs/arrow-schema/58.1.0/arrow_schema/ffi/index.html#) * [Rust website](https://www.rust-lang.org/) * [The Book](https://doc.rust-lang.org/book/) * [Standard Library API Reference](https://doc.rust-lang.org/std/) * [Rust by Example](https://doc.rust-lang.org/rust-by-example/) * [The Cargo Guide](https://doc.rust-lang.org/cargo/guide/) * [Clippy Documentation](https://doc.rust-lang.org/nightly/clippy) [Skip to main content](https://docs.rs/arrow-schema/58.1.0/arrow_schema/ffi/index.html#main-content) [Module ffi](https://docs.rs/arrow-schema/58.1.0/arrow_schema/ffi/index.html#) ------------------------------------------------------------------------------- [arrow\_schema](https://docs.rs/arrow-schema/58.1.0/arrow_schema/index.html) Module ffi Copy item path ========================= [Source](https://docs.rs/arrow-schema/58.1.0/src/arrow_schema/ffi.rs.html#18-1004) Available on **crate feature `ffi`** only. Expand description Contains declarations to bind to the [C Data Interface](https://arrow.apache.org/docs/format/CDataInterface.html) . // Create from data type let ffi_data_type = FFI_ArrowSchema::try_from(&DataType::LargeUtf8).unwrap(); let back = DataType::try_from(&ffi_data_type).unwrap(); assert_eq!(back, DataType::LargeUtf8); // Create from schema let schema = Schema::new(vec![Field::new("foo", DataType::Int64, false)]); let ffi_schema = FFI_ArrowSchema::try_from(&schema).unwrap(); let back = Schema::try_from(&ffi_schema).unwrap(); assert_eq!(schema, back); Structs[§](https://docs.rs/arrow-schema/58.1.0/arrow_schema/ffi/index.html#structs) ------------------------------------------------------------------------------------ [FFI\_ArrowSchema](https://docs.rs/arrow-schema/58.1.0/arrow_schema/ffi/struct.FFI_ArrowSchema.html "struct arrow_schema::ffi::FFI_ArrowSchema") ABI-compatible struct for `ArrowSchema` from C Data Interface See [https://arrow.apache.org/docs/format/CDataInterface.html#structure-definitions](https://arrow.apache.org/docs/format/CDataInterface.html#structure-definitions) [Flags](https://docs.rs/arrow-schema/58.1.0/arrow_schema/ffi/struct.Flags.html "struct arrow_schema::ffi::Flags") Flags for [`FFI_ArrowSchema`](https://docs.rs/arrow-schema/58.1.0/arrow_schema/ffi/struct.FFI_ArrowSchema.html "struct arrow_schema::ffi::FFI_ArrowSchema") --- # arrow_select::dictionary - Rust [Docs.rs](https://docs.rs/) * [arrow-select-58.1.0](https://docs.rs/arrow-select/58.1.0/arrow_select/dictionary/index.html# "Selection kernels for arrow arrays") * arrow-select 58.1.0 * [Docs.rs crate page](https://docs.rs/crate/arrow-select/58.1.0 "See arrow-select in docs.rs") * [Apache-2.0](https://spdx.org/licenses/Apache-2.0) * Links * [Homepage](https://github.com/apache/arrow-rs) * [Repository](https://github.com/apache/arrow-rs) * [crates.io](https://crates.io/crates/arrow-select "See arrow-select in crates.io") * [Source](https://docs.rs/crate/arrow-select/58.1.0/source/ "Browse source of arrow-select-58.1.0") * Owners * [kou](https://crates.io/users/kou) * [kszucs](https://crates.io/users/kszucs) * [xhochy](https://crates.io/users/xhochy) * [nevi-me](https://crates.io/users/nevi-me) * [alamb](https://crates.io/users/alamb) * [tustvold](https://crates.io/users/tustvold) * Dependencies * * [ahash ^0.8 _normal_](https://docs.rs/ahash/^0.8/) * [arrow-array ^58.1.0 _normal_](https://docs.rs/arrow-array/^58.1.0/) * [arrow-buffer ^58.1.0 _normal_](https://docs.rs/arrow-buffer/^58.1.0/) * [arrow-data ^58.1.0 _normal_](https://docs.rs/arrow-data/^58.1.0/) * [arrow-schema ^58.1.0 _normal_](https://docs.rs/arrow-schema/^58.1.0/) * [num-traits ^0.2.19 _normal_](https://docs.rs/num-traits/^0.2.19/) * [rand ^0.9 _dev_](https://docs.rs/rand/^0.9/) * Versions * [**100%** of the crate is documented](https://docs.rs/crate/arrow-select/58.1.0) * [Platform](https://docs.rs/arrow-select/58.1.0/arrow_select/dictionary/index.html#) * [aarch64-apple-darwin](https://docs.rs/crate/arrow-select/58.1.0/target-redirect/aarch64-apple-darwin/arrow_select/dictionary/) * [aarch64-unknown-linux-gnu](https://docs.rs/crate/arrow-select/58.1.0/target-redirect/aarch64-unknown-linux-gnu/arrow_select/dictionary/) * [i686-pc-windows-msvc](https://docs.rs/crate/arrow-select/58.1.0/target-redirect/i686-pc-windows-msvc/arrow_select/dictionary/) * [x86\_64-pc-windows-msvc](https://docs.rs/crate/arrow-select/58.1.0/target-redirect/x86_64-pc-windows-msvc/arrow_select/dictionary/) * [x86\_64-unknown-linux-gnu](https://docs.rs/crate/arrow-select/58.1.0/target-redirect/arrow_select/dictionary/) * [Feature flags](https://docs.rs/crate/arrow-select/58.1.0/features "Browse available feature flags of arrow-select-58.1.0") * [docs.rs](https://docs.rs/arrow-select/58.1.0/arrow_select/dictionary/index.html#) * [About docs.rs](https://docs.rs/about) * [Badges](https://docs.rs/about/badges) * [Builds](https://docs.rs/about/builds) * [Metadata](https://docs.rs/about/metadata) * [Shorthand URLs](https://docs.rs/about/redirections) * [Download](https://docs.rs/about/download) * [Rustdoc JSON](https://docs.rs/about/rustdoc-json) * [Build queue](https://docs.rs/releases/queue) * [Privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#docs.rs) * [Rust](https://docs.rs/arrow-select/58.1.0/arrow_select/dictionary/index.html#) * [Rust website](https://www.rust-lang.org/) * [The Book](https://doc.rust-lang.org/book/) * [Standard Library API Reference](https://doc.rust-lang.org/std/) * [Rust by Example](https://doc.rust-lang.org/rust-by-example/) * [The Cargo Guide](https://doc.rust-lang.org/cargo/guide/) * [Clippy Documentation](https://doc.rust-lang.org/nightly/clippy) [Skip to main content](https://docs.rs/arrow-select/58.1.0/arrow_select/dictionary/index.html#main-content) [Module dictionary](https://docs.rs/arrow-select/58.1.0/arrow_select/dictionary/index.html#) --------------------------------------------------------------------------------------------- [arrow\_select](https://docs.rs/arrow-select/58.1.0/arrow_select/index.html) Module dictionary Copy item path ================================ [Source](https://docs.rs/arrow-select/58.1.0/src/arrow_select/dictionary.rs.html#18-530) Expand description Dictionary utilities for Arrow arrays Functions[§](https://docs.rs/arrow-select/58.1.0/arrow_select/dictionary/index.html#functions) ----------------------------------------------------------------------------------------------- [garbage\_collect\_any\_dictionary](https://docs.rs/arrow-select/58.1.0/arrow_select/dictionary/fn.garbage_collect_any_dictionary.html "fn arrow_select::dictionary::garbage_collect_any_dictionary") Equivalent to [`garbage_collect_dictionary`](https://docs.rs/arrow-select/58.1.0/arrow_select/dictionary/fn.garbage_collect_dictionary.html "fn arrow_select::dictionary::garbage_collect_dictionary") but without requiring casting to a specific key type. [garbage\_collect\_dictionary](https://docs.rs/arrow-select/58.1.0/arrow_select/dictionary/fn.garbage_collect_dictionary.html "fn arrow_select::dictionary::garbage_collect_dictionary") Garbage collects a [DictionaryArray](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/arrow_array/array/dictionary_array/struct.DictionaryArray.html "struct arrow_array::array::dictionary_array::DictionaryArray") by removing unreferenced values. --- # arrow-schema 58.1.0 - Docs.rs [Docs.rs](https://docs.rs/) * [arrow-schema-58.1.0](https://docs.rs/crate/arrow-schema/58.1.0 "Defines the logical types for arrow arrays") * [Platform](https://docs.rs/crate/arrow-schema/58.1.0/source/#) * [aarch64-apple-darwin](https://docs.rs/arrow-schema/58.1.0/aarch64-apple-darwin/arrow_schema/) * [aarch64-unknown-linux-gnu](https://docs.rs/arrow-schema/58.1.0/aarch64-unknown-linux-gnu/arrow_schema/) * [i686-pc-windows-msvc](https://docs.rs/arrow-schema/58.1.0/i686-pc-windows-msvc/arrow_schema/) * [x86\_64-pc-windows-msvc](https://docs.rs/arrow-schema/58.1.0/x86_64-pc-windows-msvc/arrow_schema/) * [x86\_64-unknown-linux-gnu](https://docs.rs/arrow-schema/58.1.0/arrow_schema/) * [Feature flags](https://docs.rs/crate/arrow-schema/58.1.0/features "Browse available feature flags of arrow-schema-58.1.0") * [docs.rs](https://docs.rs/crate/arrow-schema/58.1.0/source/#) * [About docs.rs](https://docs.rs/about) * [Badges](https://docs.rs/about/badges) * [Builds](https://docs.rs/about/builds) * [Metadata](https://docs.rs/about/metadata) * [Shorthand URLs](https://docs.rs/about/redirections) * [Download](https://docs.rs/about/download) * [Rustdoc JSON](https://docs.rs/about/rustdoc-json) * [Build queue](https://docs.rs/releases/queue) * [Privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#docs.rs) * [Rust](https://docs.rs/crate/arrow-schema/58.1.0/source/#) * [Rust website](https://www.rust-lang.org/) * [The Book](https://doc.rust-lang.org/book/) * [Standard Library API Reference](https://doc.rust-lang.org/std/) * [Rust by Example](https://doc.rust-lang.org/rust-by-example/) * [The Cargo Guide](https://doc.rust-lang.org/cargo/guide/) * [Clippy Documentation](https://doc.rust-lang.org/nightly/clippy) arrow-schema 58.1.0 =================== Defines the logical types for arrow arrays * [Crate](https://docs.rs/crate/arrow-schema/58.1.0) * [Source](https://docs.rs/crate/arrow-schema/58.1.0/source/) * [Builds](https://docs.rs/crate/arrow-schema/58.1.0/builds) * [Feature flags](https://docs.rs/crate/arrow-schema/58.1.0/features) [Documentation](https://docs.rs/arrow-schema/58.1.0/arrow_schema/) * [benches](https://docs.rs/crate/arrow-schema/58.1.0/source/benches/) * [src](https://docs.rs/crate/arrow-schema/58.1.0/source/src/) * [Cargo.lock](https://docs.rs/crate/arrow-schema/58.1.0/source/Cargo.lock) * [Cargo.toml](https://docs.rs/crate/arrow-schema/58.1.0/source/Cargo.toml) * [Cargo.toml.orig](https://docs.rs/crate/arrow-schema/58.1.0/source/Cargo.toml.orig) * [LICENSE.txt](https://docs.rs/crate/arrow-schema/58.1.0/source/LICENSE.txt) * [NOTICE.txt](https://docs.rs/crate/arrow-schema/58.1.0/source/NOTICE.txt) --- # arrow-cast 58.1.0 - Docs.rs [Docs.rs](https://docs.rs/) * [arrow-cast-58.1.0](https://docs.rs/crate/arrow-cast/58.1.0 "Cast kernel and utilities for Apache Arrow") * [Platform](https://docs.rs/crate/arrow-cast/58.1.0/source/#) * [aarch64-apple-darwin](https://docs.rs/arrow-cast/58.1.0/aarch64-apple-darwin/arrow_cast/) * [aarch64-unknown-linux-gnu](https://docs.rs/arrow-cast/58.1.0/aarch64-unknown-linux-gnu/arrow_cast/) * [i686-pc-windows-msvc](https://docs.rs/arrow-cast/58.1.0/i686-pc-windows-msvc/arrow_cast/) * [x86\_64-pc-windows-msvc](https://docs.rs/arrow-cast/58.1.0/x86_64-pc-windows-msvc/arrow_cast/) * [x86\_64-unknown-linux-gnu](https://docs.rs/arrow-cast/58.1.0/arrow_cast/) * [Feature flags](https://docs.rs/crate/arrow-cast/58.1.0/features "Browse available feature flags of arrow-cast-58.1.0") * [docs.rs](https://docs.rs/crate/arrow-cast/58.1.0/source/#) * [About docs.rs](https://docs.rs/about) * [Badges](https://docs.rs/about/badges) * [Builds](https://docs.rs/about/builds) * [Metadata](https://docs.rs/about/metadata) * [Shorthand URLs](https://docs.rs/about/redirections) * [Download](https://docs.rs/about/download) * [Rustdoc JSON](https://docs.rs/about/rustdoc-json) * [Build queue](https://docs.rs/releases/queue) * [Privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#docs.rs) * [Rust](https://docs.rs/crate/arrow-cast/58.1.0/source/#) * [Rust website](https://www.rust-lang.org/) * [The Book](https://doc.rust-lang.org/book/) * [Standard Library API Reference](https://doc.rust-lang.org/std/) * [Rust by Example](https://doc.rust-lang.org/rust-by-example/) * [The Cargo Guide](https://doc.rust-lang.org/cargo/guide/) * [Clippy Documentation](https://doc.rust-lang.org/nightly/clippy) arrow-cast 58.1.0 ================= Cast kernel and utilities for Apache Arrow * [Crate](https://docs.rs/crate/arrow-cast/58.1.0) * [Source](https://docs.rs/crate/arrow-cast/58.1.0/source/) * [Builds](https://docs.rs/crate/arrow-cast/58.1.0/builds) * [Feature flags](https://docs.rs/crate/arrow-cast/58.1.0/features) [Documentation](https://docs.rs/arrow-cast/58.1.0/arrow_cast/) * [benches](https://docs.rs/crate/arrow-cast/58.1.0/source/benches/) * [src](https://docs.rs/crate/arrow-cast/58.1.0/source/src/) * [Cargo.lock](https://docs.rs/crate/arrow-cast/58.1.0/source/Cargo.lock) * [Cargo.toml](https://docs.rs/crate/arrow-cast/58.1.0/source/Cargo.toml) * [Cargo.toml.orig](https://docs.rs/crate/arrow-cast/58.1.0/source/Cargo.toml.orig) * [LICENSE.txt](https://docs.rs/crate/arrow-cast/58.1.0/source/LICENSE.txt) * [NOTICE.txt](https://docs.rs/crate/arrow-cast/58.1.0/source/NOTICE.txt) --- # arrow 58.1.0 - Docs.rs [Docs.rs](https://docs.rs/) * [arrow-58.1.0](https://docs.rs/crate/arrow/58.1.0 "Rust implementation of Apache Arrow") * [Platform](https://docs.rs/crate/arrow/58.1.0/features#) * [x86\_64-unknown-linux-gnu](https://docs.rs/arrow/58.1.0/arrow/) * [Feature flags](https://docs.rs/crate/arrow/58.1.0/features "Browse available feature flags of arrow-58.1.0") * [docs.rs](https://docs.rs/crate/arrow/58.1.0/features#) * [About docs.rs](https://docs.rs/about) * [Badges](https://docs.rs/about/badges) * [Builds](https://docs.rs/about/builds) * [Metadata](https://docs.rs/about/metadata) * [Shorthand URLs](https://docs.rs/about/redirections) * [Download](https://docs.rs/about/download) * [Rustdoc JSON](https://docs.rs/about/rustdoc-json) * [Build queue](https://docs.rs/releases/queue) * [Privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#docs.rs) * [Rust](https://docs.rs/crate/arrow/58.1.0/features#) * [Rust website](https://www.rust-lang.org/) * [The Book](https://doc.rust-lang.org/book/) * [Standard Library API Reference](https://doc.rust-lang.org/std/) * [Rust by Example](https://doc.rust-lang.org/rust-by-example/) * [The Cargo Guide](https://doc.rust-lang.org/cargo/guide/) * [Clippy Documentation](https://doc.rust-lang.org/nightly/clippy) arrow 58.1.0 ============ Rust implementation of Apache Arrow * [Crate](https://docs.rs/crate/arrow/58.1.0) * [Source](https://docs.rs/crate/arrow/58.1.0/source/) * [Builds](https://docs.rs/crate/arrow/58.1.0/builds) * [Feature flags](https://docs.rs/crate/arrow/58.1.0/features) [Documentation](https://docs.rs/arrow/58.1.0/arrow/) * Feature flags * [default](https://docs.rs/crate/arrow/58.1.0/features#default) * [csv](https://docs.rs/crate/arrow/58.1.0/features#csv) * [ipc](https://docs.rs/crate/arrow/58.1.0/features#ipc) * [json](https://docs.rs/crate/arrow/58.1.0/features#json) * [arrow-csv](https://docs.rs/crate/arrow/58.1.0/features#arrow-csv) * [arrow-ipc](https://docs.rs/crate/arrow/58.1.0/features#arrow-ipc) * [arrow-json](https://docs.rs/crate/arrow/58.1.0/features#arrow-json) * [async](https://docs.rs/crate/arrow/58.1.0/features#async) * [canonical\_extension\_types](https://docs.rs/crate/arrow/58.1.0/features#canonical_extension_types) * [chrono-tz](https://docs.rs/crate/arrow/58.1.0/features#chrono-tz) * [ffi](https://docs.rs/crate/arrow/58.1.0/features#ffi) * [force\_validate](https://docs.rs/crate/arrow/58.1.0/features#force_validate) * [ipc\_compression](https://docs.rs/crate/arrow/58.1.0/features#ipc_compression) * [pool](https://docs.rs/crate/arrow/58.1.0/features#pool) * [prettyprint](https://docs.rs/crate/arrow/58.1.0/features#prettyprint) * [pyarrow](https://docs.rs/crate/arrow/58.1.0/features#pyarrow) * [test\_utils](https://docs.rs/crate/arrow/58.1.0/features#test_utils) arrow ===== There is very little structured metadata to build this page from currently. You should check the [main library docs](https://docs.rs/arrow/58.1.0/arrow/) , [readme](https://docs.rs/crate/arrow/58.1.0) , or [Cargo.toml](https://docs.rs/crate/arrow/58.1.0/source/Cargo.toml.orig) in case the author documented the features in them. This version has **16** feature flags, **6** of them enabled by **default**. ### default * [csv](https://docs.rs/crate/arrow/58.1.0/features#csv) (default) * [ipc](https://docs.rs/crate/arrow/58.1.0/features#ipc) (default) * [json](https://docs.rs/crate/arrow/58.1.0/features#json) (default) ### csv (default) * [arrow-csv](https://docs.rs/crate/arrow/58.1.0/features#arrow-csv) (default) ### ipc (default) * [arrow-ipc](https://docs.rs/crate/arrow/58.1.0/features#arrow-ipc) (default) ### json (default) * [arrow-json](https://docs.rs/crate/arrow/58.1.0/features#arrow-json) (default) ### arrow-csv (default) * dep:[arrow-csv](https://docs.rs/arrow-csv/^58.1.0/) (default) ### arrow-ipc (default) * dep:[arrow-ipc](https://docs.rs/arrow-ipc/^58.1.0/) (default) ### arrow-json (default) * dep:[arrow-json](https://docs.rs/arrow-json/^58.1.0/) (default) ### async * [arrow-array](https://docs.rs/crate/arrow-array/^58.1.0) /[async](https://docs.rs/crate/arrow-array/^58.1.0/features#async) ### canonical\_extension\_types * [arrow-schema](https://docs.rs/crate/arrow-schema/^58.1.0) /[canonical\_extension\_types](https://docs.rs/crate/arrow-schema/^58.1.0/features#canonical_extension_types) ### chrono-tz * [arrow-array](https://docs.rs/crate/arrow-array/^58.1.0) /[chrono-tz](https://docs.rs/crate/arrow-array/^58.1.0/features#chrono-tz) ### ffi * [arrow-array](https://docs.rs/crate/arrow-array/^58.1.0) /[ffi](https://docs.rs/crate/arrow-array/^58.1.0/features#ffi) * [arrow-data](https://docs.rs/crate/arrow-data/^58.1.0) /[ffi](https://docs.rs/crate/arrow-data/^58.1.0/features#ffi) * [arrow-schema](https://docs.rs/crate/arrow-schema/^58.1.0) /[ffi](https://docs.rs/crate/arrow-schema/^58.1.0/features#ffi) ### force\_validate * [arrow-array](https://docs.rs/crate/arrow-array/^58.1.0) /[force\_validate](https://docs.rs/crate/arrow-array/^58.1.0/features#force_validate) * [arrow-data](https://docs.rs/crate/arrow-data/^58.1.0) /[force\_validate](https://docs.rs/crate/arrow-data/^58.1.0/features#force_validate) ### ipc\_compression * [arrow-ipc](https://docs.rs/crate/arrow-ipc/^58.1.0) /[lz4](https://docs.rs/crate/arrow-ipc/^58.1.0/features#lz4) * [arrow-ipc](https://docs.rs/crate/arrow-ipc/^58.1.0) /[zstd](https://docs.rs/crate/arrow-ipc/^58.1.0/features#zstd) * [ipc](https://docs.rs/crate/arrow/58.1.0/features#ipc) (default) ### pool * [arrow-array](https://docs.rs/crate/arrow-array/^58.1.0) /[pool](https://docs.rs/crate/arrow-array/^58.1.0/features#pool) ### prettyprint * [arrow-cast](https://docs.rs/crate/arrow-cast/^58.1.0) /[prettyprint](https://docs.rs/crate/arrow-cast/^58.1.0/features#prettyprint) ### pyarrow * dep:[arrow-pyarrow](https://docs.rs/arrow-pyarrow/^58.1.0/) * [ffi](https://docs.rs/crate/arrow/58.1.0/features#ffi) ### test\_utils * dep:[half](https://docs.rs/half/^2.1/) * dep:[rand](https://docs.rs/rand/^0.9/) --- # memmap2 - Rust [Docs.rs](https://docs.rs/) * [memmap2-0.9.10](https://docs.rs/memmap2/0.9.10/aarch64-apple-darwin/memmap2/# "Cross-platform Rust API for memory-mapped file IO") * memmap2 0.9.10 * [Docs.rs crate page](https://docs.rs/crate/memmap2/0.9.10 "See memmap2 in docs.rs") * [MIT](https://spdx.org/licenses/MIT) OR [Apache-2.0](https://spdx.org/licenses/Apache-2.0) * Links * [Repository](https://github.com/RazrFalcon/memmap2-rs) * [crates.io](https://crates.io/crates/memmap2 "See memmap2 in crates.io") * [Source](https://docs.rs/crate/memmap2/0.9.10/source/ "Browse source of memmap2-0.9.10") * Owners * [tbu-](https://crates.io/users/tbu-) * [RazrFalcon](https://crates.io/users/RazrFalcon) * [de-vri-es](https://crates.io/users/de-vri-es) * [allan2](https://crates.io/users/allan2) * Dependencies * * [stable\_deref\_trait ^1.0 _normal_ _optional_](https://docs.rs/stable_deref_trait/^1.0/) * [owning\_ref ^0.4.1 _dev_](https://docs.rs/owning_ref/^0.4.1/) * [tempfile ^3 _dev_](https://docs.rs/tempfile/^3/) * [libc ^0.2.151 _normal_](https://docs.rs/libc/^0.2.151/) * Versions * [**96.47%** of the crate is documented](https://docs.rs/crate/memmap2/0.9.10) * [Platform](https://docs.rs/memmap2/0.9.10/aarch64-apple-darwin/memmap2/#) * [aarch64-apple-darwin](https://docs.rs/crate/memmap2/0.9.10/target-redirect/aarch64-apple-darwin/memmap2/) * [aarch64-unknown-linux-gnu](https://docs.rs/crate/memmap2/0.9.10/target-redirect/aarch64-unknown-linux-gnu/memmap2/) * [i686-pc-windows-msvc](https://docs.rs/crate/memmap2/0.9.10/target-redirect/i686-pc-windows-msvc/memmap2/) * [x86\_64-pc-windows-msvc](https://docs.rs/crate/memmap2/0.9.10/target-redirect/x86_64-pc-windows-msvc/memmap2/) * [x86\_64-unknown-linux-gnu](https://docs.rs/crate/memmap2/0.9.10/target-redirect/memmap2/) * [Feature flags](https://docs.rs/crate/memmap2/0.9.10/features "Browse available feature flags of memmap2-0.9.10") * [docs.rs](https://docs.rs/memmap2/0.9.10/aarch64-apple-darwin/memmap2/#) * [About docs.rs](https://docs.rs/about) * [Badges](https://docs.rs/about/badges) * [Builds](https://docs.rs/about/builds) * [Metadata](https://docs.rs/about/metadata) * [Shorthand URLs](https://docs.rs/about/redirections) * [Download](https://docs.rs/about/download) * [Rustdoc JSON](https://docs.rs/about/rustdoc-json) * [Build queue](https://docs.rs/releases/queue) * [Privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#docs.rs) * [Rust](https://docs.rs/memmap2/0.9.10/aarch64-apple-darwin/memmap2/#) * [Rust website](https://www.rust-lang.org/) * [The Book](https://doc.rust-lang.org/book/) * [Standard Library API Reference](https://doc.rust-lang.org/std/) * [Rust by Example](https://doc.rust-lang.org/rust-by-example/) * [The Cargo Guide](https://doc.rust-lang.org/cargo/guide/) * [Clippy Documentation](https://doc.rust-lang.org/nightly/clippy) [Skip to main content](https://docs.rs/memmap2/0.9.10/aarch64-apple-darwin/memmap2/#main-content) [Crate memmap2](https://docs.rs/memmap2/0.9.10/aarch64-apple-darwin/memmap2/#) ------------------------------------------------------------------------------- Crate memmap2 Copy item path ============================ [Source](https://docs.rs/memmap2/0.9.10/aarch64-apple-darwin/src/memmap2/lib.rs.html#1-2328) Expand description A cross-platform Rust API for memory mapped buffers. The core functionality is provided by either [`Mmap`](https://docs.rs/memmap2/0.9.10/aarch64-apple-darwin/memmap2/struct.Mmap.html "struct memmap2::Mmap") or [`MmapMut`](https://docs.rs/memmap2/0.9.10/aarch64-apple-darwin/memmap2/struct.MmapMut.html "struct memmap2::MmapMut") , which correspond to mapping a [`File`](https://doc.rust-lang.org/nightly/std/fs/struct.File.html "struct std::fs::File") to a [`&[u8]`](https://doc.rust-lang.org/std/primitive.slice.html) or [`&mut [u8]`](https://doc.rust-lang.org/std/primitive.slice.html) respectively. Both function by dereferencing to a slice, allowing the [`Mmap`](https://docs.rs/memmap2/0.9.10/aarch64-apple-darwin/memmap2/struct.Mmap.html "struct memmap2::Mmap") /[`MmapMut`](https://docs.rs/memmap2/0.9.10/aarch64-apple-darwin/memmap2/struct.MmapMut.html "struct memmap2::MmapMut") to be used in the same way you would the equivalent slice types. [§](https://docs.rs/memmap2/0.9.10/aarch64-apple-darwin/memmap2/#examples) Examples ----------------------------------------------------------------------------------- For simple cases [`Mmap`](https://docs.rs/memmap2/0.9.10/aarch64-apple-darwin/memmap2/struct.Mmap.html "struct memmap2::Mmap") can be used directly: use std::fs::File; use std::io::Read; use memmap2::Mmap; let mut file = File::open("LICENSE-APACHE")?; let mut contents = Vec::new(); file.read_to_end(&mut contents)?; let mmap = unsafe { Mmap::map(&file)? }; assert_eq!(&contents[..], &mmap[..]); However for cases which require configuration of the mapping, then you can use [`MmapOptions`](https://docs.rs/memmap2/0.9.10/aarch64-apple-darwin/memmap2/struct.MmapOptions.html "struct memmap2::MmapOptions") in order to further configure a mapping before you create it. Structs[§](https://docs.rs/memmap2/0.9.10/aarch64-apple-darwin/memmap2/#structs) --------------------------------------------------------------------------------- [Mmap](https://docs.rs/memmap2/0.9.10/aarch64-apple-darwin/memmap2/struct.Mmap.html "struct memmap2::Mmap") A handle to an immutable memory mapped buffer. [MmapMut](https://docs.rs/memmap2/0.9.10/aarch64-apple-darwin/memmap2/struct.MmapMut.html "struct memmap2::MmapMut") A handle to a mutable memory mapped buffer. [MmapOptions](https://docs.rs/memmap2/0.9.10/aarch64-apple-darwin/memmap2/struct.MmapOptions.html "struct memmap2::MmapOptions") A memory map builder, providing advanced options and flags for specifying memory map behavior. [MmapRaw](https://docs.rs/memmap2/0.9.10/aarch64-apple-darwin/memmap2/struct.MmapRaw.html "struct memmap2::MmapRaw") A handle to a raw memory mapped buffer. [MmapRawDescriptor](https://docs.rs/memmap2/0.9.10/aarch64-apple-darwin/memmap2/struct.MmapRawDescriptor.html "struct memmap2::MmapRawDescriptor") Enums[§](https://docs.rs/memmap2/0.9.10/aarch64-apple-darwin/memmap2/#enums) ----------------------------------------------------------------------------- [Advice](https://docs.rs/memmap2/0.9.10/aarch64-apple-darwin/memmap2/enum.Advice.html "enum memmap2::Advice") Values supported by [`Mmap::advise`](https://docs.rs/memmap2/0.9.10/aarch64-apple-darwin/memmap2/struct.Mmap.html#method.advise "method memmap2::Mmap::advise") and [`MmapMut::advise`](https://docs.rs/memmap2/0.9.10/aarch64-apple-darwin/memmap2/struct.MmapMut.html#method.advise "method memmap2::MmapMut::advise") functions. [UncheckedAdvice](https://docs.rs/memmap2/0.9.10/aarch64-apple-darwin/memmap2/enum.UncheckedAdvice.html "enum memmap2::UncheckedAdvice") Values supported by [`Mmap::unchecked_advise`](https://docs.rs/memmap2/0.9.10/aarch64-apple-darwin/memmap2/struct.Mmap.html#method.unchecked_advise "method memmap2::Mmap::unchecked_advise") and [`MmapMut::unchecked_advise`](https://docs.rs/memmap2/0.9.10/aarch64-apple-darwin/memmap2/struct.MmapMut.html#method.unchecked_advise "method memmap2::MmapMut::unchecked_advise") functions. Traits[§](https://docs.rs/memmap2/0.9.10/aarch64-apple-darwin/memmap2/#traits) ------------------------------------------------------------------------------- [MmapAsRawDesc](https://docs.rs/memmap2/0.9.10/aarch64-apple-darwin/memmap2/trait.MmapAsRawDesc.html "trait memmap2::MmapAsRawDesc") --- # List of all items in this crate [Docs.rs](https://docs.rs/) * [memmap2-0.9.10](https://docs.rs/memmap2/0.9.10/memmap2/all.html# "Cross-platform Rust API for memory-mapped file IO") * memmap2 0.9.10 * [Docs.rs crate page](https://docs.rs/crate/memmap2/0.9.10 "See memmap2 in docs.rs") * [MIT](https://spdx.org/licenses/MIT) OR [Apache-2.0](https://spdx.org/licenses/Apache-2.0) * Links * [Repository](https://github.com/RazrFalcon/memmap2-rs) * [crates.io](https://crates.io/crates/memmap2 "See memmap2 in crates.io") * [Source](https://docs.rs/crate/memmap2/0.9.10/source/ "Browse source of memmap2-0.9.10") * Owners * [tbu-](https://crates.io/users/tbu-) * [RazrFalcon](https://crates.io/users/RazrFalcon) * [de-vri-es](https://crates.io/users/de-vri-es) * [allan2](https://crates.io/users/allan2) * Dependencies * * [stable\_deref\_trait ^1.0 _normal_ _optional_](https://docs.rs/stable_deref_trait/^1.0/) * [owning\_ref ^0.4.1 _dev_](https://docs.rs/owning_ref/^0.4.1/) * [tempfile ^3 _dev_](https://docs.rs/tempfile/^3/) * [libc ^0.2.151 _normal_](https://docs.rs/libc/^0.2.151/) * Versions * [**96.47%** of the crate is documented](https://docs.rs/crate/memmap2/0.9.10) * [Platform](https://docs.rs/memmap2/0.9.10/memmap2/all.html#) * [aarch64-apple-darwin](https://docs.rs/crate/memmap2/0.9.10/target-redirect/aarch64-apple-darwin/memmap2/all.html) * [aarch64-unknown-linux-gnu](https://docs.rs/crate/memmap2/0.9.10/target-redirect/aarch64-unknown-linux-gnu/memmap2/all.html) * [i686-pc-windows-msvc](https://docs.rs/crate/memmap2/0.9.10/target-redirect/i686-pc-windows-msvc/memmap2/all.html) * [x86\_64-pc-windows-msvc](https://docs.rs/crate/memmap2/0.9.10/target-redirect/x86_64-pc-windows-msvc/memmap2/all.html) * [x86\_64-unknown-linux-gnu](https://docs.rs/crate/memmap2/0.9.10/target-redirect/memmap2/all.html) * [Feature flags](https://docs.rs/crate/memmap2/0.9.10/features "Browse available feature flags of memmap2-0.9.10") * [docs.rs](https://docs.rs/memmap2/0.9.10/memmap2/all.html#) * [About docs.rs](https://docs.rs/about) * [Badges](https://docs.rs/about/badges) * [Builds](https://docs.rs/about/builds) * [Metadata](https://docs.rs/about/metadata) * [Shorthand URLs](https://docs.rs/about/redirections) * [Download](https://docs.rs/about/download) * [Rustdoc JSON](https://docs.rs/about/rustdoc-json) * [Build queue](https://docs.rs/releases/queue) * [Privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#docs.rs) * [Rust](https://docs.rs/memmap2/0.9.10/memmap2/all.html#) * [Rust website](https://www.rust-lang.org/) * [The Book](https://doc.rust-lang.org/book/) * [Standard Library API Reference](https://doc.rust-lang.org/std/) * [Rust by Example](https://doc.rust-lang.org/rust-by-example/) * [The Cargo Guide](https://doc.rust-lang.org/cargo/guide/) * [Clippy Documentation](https://doc.rust-lang.org/nightly/clippy) [Skip to main content](https://docs.rs/memmap2/0.9.10/memmap2/all.html#main-content) [All](https://docs.rs/memmap2/0.9.10/memmap2/all.html#) -------------------------------------------------------- List of all items ================= ### Structs * [Mmap](https://docs.rs/memmap2/0.9.10/memmap2/struct.Mmap.html) * [MmapMut](https://docs.rs/memmap2/0.9.10/memmap2/struct.MmapMut.html) * [MmapOptions](https://docs.rs/memmap2/0.9.10/memmap2/struct.MmapOptions.html) * [MmapRaw](https://docs.rs/memmap2/0.9.10/memmap2/struct.MmapRaw.html) * [MmapRawDescriptor](https://docs.rs/memmap2/0.9.10/memmap2/struct.MmapRawDescriptor.html) * [RemapOptions](https://docs.rs/memmap2/0.9.10/memmap2/struct.RemapOptions.html) ### Enums * [Advice](https://docs.rs/memmap2/0.9.10/memmap2/enum.Advice.html) * [UncheckedAdvice](https://docs.rs/memmap2/0.9.10/memmap2/enum.UncheckedAdvice.html) ### Traits * [MmapAsRawDesc](https://docs.rs/memmap2/0.9.10/memmap2/trait.MmapAsRawDesc.html) --- # serde 1.0.228 - Docs.rs [Docs.rs](https://docs.rs/) * [serde-1.0.228](https://docs.rs/crate/serde/1.0.228 "A generic serialization/deserialization framework") * [Platform](https://docs.rs/crate/serde/1.0.228/features#) * [x86\_64-unknown-linux-gnu](https://docs.rs/serde/1.0.228/serde/) * [Feature flags](https://docs.rs/crate/serde/1.0.228/features "Browse available feature flags of serde-1.0.228") * [docs.rs](https://docs.rs/crate/serde/1.0.228/features#) * [About docs.rs](https://docs.rs/about) * [Badges](https://docs.rs/about/badges) * [Builds](https://docs.rs/about/builds) * [Metadata](https://docs.rs/about/metadata) * [Shorthand URLs](https://docs.rs/about/redirections) * [Download](https://docs.rs/about/download) * [Rustdoc JSON](https://docs.rs/about/rustdoc-json) * [Build queue](https://docs.rs/releases/queue) * [Privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#docs.rs) * [Rust](https://docs.rs/crate/serde/1.0.228/features#) * [Rust website](https://www.rust-lang.org/) * [The Book](https://doc.rust-lang.org/book/) * [Standard Library API Reference](https://doc.rust-lang.org/std/) * [Rust by Example](https://doc.rust-lang.org/rust-by-example/) * [The Cargo Guide](https://doc.rust-lang.org/cargo/guide/) * [Clippy Documentation](https://doc.rust-lang.org/nightly/clippy) serde 1.0.228 ============= A generic serialization/deserialization framework * [Crate](https://docs.rs/crate/serde/1.0.228) * [Source](https://docs.rs/crate/serde/1.0.228/source/) * [Builds](https://docs.rs/crate/serde/1.0.228/builds) * [Feature flags](https://docs.rs/crate/serde/1.0.228/features) [Documentation](https://docs.rs/serde/1.0.228/serde/) * Feature flags * [default](https://docs.rs/crate/serde/1.0.228/features#default) * [std](https://docs.rs/crate/serde/1.0.228/features#std) * [alloc](https://docs.rs/crate/serde/1.0.228/features#alloc) * [derive](https://docs.rs/crate/serde/1.0.228/features#derive) * [rc](https://docs.rs/crate/serde/1.0.228/features#rc) * [serde\_derive](https://docs.rs/crate/serde/1.0.228/features#serde_derive) * [unstable](https://docs.rs/crate/serde/1.0.228/features#unstable) serde ===== There is very little structured metadata to build this page from currently. You should check the [main library docs](https://docs.rs/serde/1.0.228/serde/) , [readme](https://docs.rs/crate/serde/1.0.228) , or [Cargo.toml](https://docs.rs/crate/serde/1.0.228/source/Cargo.toml.orig) in case the author documented the features in them. This version has **6** feature flags, **1** of them enabled by **default**. ### default * [std](https://docs.rs/crate/serde/1.0.228/features#std) (default) ### std (default) * [serde\_core](https://docs.rs/crate/serde_core/=1.0.228) /[std](https://docs.rs/crate/serde_core/=1.0.228/features#std) (default) ### alloc * [serde\_core](https://docs.rs/crate/serde_core/=1.0.228) /[alloc](https://docs.rs/crate/serde_core/=1.0.228/features#alloc) ### derive * [serde\_derive](https://docs.rs/crate/serde/1.0.228/features#serde_derive) ### rc * [serde\_core](https://docs.rs/crate/serde_core/=1.0.228) /[rc](https://docs.rs/crate/serde_core/=1.0.228/features#rc) ### serde\_derive * dep:[serde\_derive](https://docs.rs/serde_derive/^1/) ### unstable * [serde\_core](https://docs.rs/crate/serde_core/=1.0.228) /[unstable](https://docs.rs/crate/serde_core/=1.0.228/features#unstable) --- # arrow 58.1.0 - Docs.rs [Docs.rs](https://docs.rs/) * [arrow-58.1.0](https://docs.rs/crate/arrow/58.1.0 "Rust implementation of Apache Arrow") * [Platform](https://docs.rs/crate/arrow/58.1.0/source/#) * [x86\_64-unknown-linux-gnu](https://docs.rs/arrow/58.1.0/arrow/) * [Feature flags](https://docs.rs/crate/arrow/58.1.0/features "Browse available feature flags of arrow-58.1.0") * [docs.rs](https://docs.rs/crate/arrow/58.1.0/source/#) * [About docs.rs](https://docs.rs/about) * [Badges](https://docs.rs/about/badges) * [Builds](https://docs.rs/about/builds) * [Metadata](https://docs.rs/about/metadata) * [Shorthand URLs](https://docs.rs/about/redirections) * [Download](https://docs.rs/about/download) * [Rustdoc JSON](https://docs.rs/about/rustdoc-json) * [Build queue](https://docs.rs/releases/queue) * [Privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#docs.rs) * [Rust](https://docs.rs/crate/arrow/58.1.0/source/#) * [Rust website](https://www.rust-lang.org/) * [The Book](https://doc.rust-lang.org/book/) * [Standard Library API Reference](https://doc.rust-lang.org/std/) * [Rust by Example](https://doc.rust-lang.org/rust-by-example/) * [The Cargo Guide](https://doc.rust-lang.org/cargo/guide/) * [Clippy Documentation](https://doc.rust-lang.org/nightly/clippy) arrow 58.1.0 ============ Rust implementation of Apache Arrow * [Crate](https://docs.rs/crate/arrow/58.1.0) * [Source](https://docs.rs/crate/arrow/58.1.0/source/) * [Builds](https://docs.rs/crate/arrow/58.1.0/builds) * [Feature flags](https://docs.rs/crate/arrow/58.1.0/features) [Documentation](https://docs.rs/arrow/58.1.0/arrow/) * [benches](https://docs.rs/crate/arrow/58.1.0/source/benches/) * [src](https://docs.rs/crate/arrow/58.1.0/source/src/) * [tests](https://docs.rs/crate/arrow/58.1.0/source/tests/) * [Cargo.lock](https://docs.rs/crate/arrow/58.1.0/source/Cargo.lock) * [Cargo.toml](https://docs.rs/crate/arrow/58.1.0/source/Cargo.toml) * [Cargo.toml.orig](https://docs.rs/crate/arrow/58.1.0/source/Cargo.toml.orig) * [LICENSE.txt](https://docs.rs/crate/arrow/58.1.0/source/LICENSE.txt) * [NOTICE.txt](https://docs.rs/crate/arrow/58.1.0/source/NOTICE.txt) * [README.md](https://docs.rs/crate/arrow/58.1.0/source/README.md) --- # arrow_cast::cast - Rust [Docs.rs](https://docs.rs/) * [arrow-cast-58.1.0](https://docs.rs/arrow-cast/58.1.0/arrow_cast/cast/index.html# "Cast kernel and utilities for Apache Arrow") * arrow-cast 58.1.0 * [Docs.rs crate page](https://docs.rs/crate/arrow-cast/58.1.0 "See arrow-cast in docs.rs") * [Apache-2.0](https://spdx.org/licenses/Apache-2.0) * Links * [Homepage](https://github.com/apache/arrow-rs) * [Repository](https://github.com/apache/arrow-rs) * [crates.io](https://crates.io/crates/arrow-cast "See arrow-cast in crates.io") * [Source](https://docs.rs/crate/arrow-cast/58.1.0/source/ "Browse source of arrow-cast-58.1.0") * Owners * [kou](https://crates.io/users/kou) * [xhochy](https://crates.io/users/xhochy) * [nevi-me](https://crates.io/users/nevi-me) * [alamb](https://crates.io/users/alamb) * [tustvold](https://crates.io/users/tustvold) * Dependencies * * [arrow-array ^58.1.0 _normal_](https://docs.rs/arrow-array/^58.1.0/) * [arrow-buffer ^58.1.0 _normal_](https://docs.rs/arrow-buffer/^58.1.0/) * [arrow-data ^58.1.0 _normal_](https://docs.rs/arrow-data/^58.1.0/) * [arrow-ord ^58.1.0 _normal_](https://docs.rs/arrow-ord/^58.1.0/) * [arrow-schema ^58.1.0 _normal_](https://docs.rs/arrow-schema/^58.1.0/) * [arrow-select ^58.1.0 _normal_](https://docs.rs/arrow-select/^58.1.0/) * [atoi ^2.0.0 _normal_](https://docs.rs/atoi/^2.0.0/) * [base64 ^0.22 _normal_](https://docs.rs/base64/^0.22/) * [chrono ^0.4.40 _normal_](https://docs.rs/chrono/^0.4.40/) * [comfy-table ^7 _normal_ _optional_](https://docs.rs/comfy-table/^7/) * [half ^2.1 _normal_](https://docs.rs/half/^2.1/) * [lexical-core ^1.0 _normal_](https://docs.rs/lexical-core/^1.0/) * [num-traits ^0.2.19 _normal_](https://docs.rs/num-traits/^0.2.19/) * [ryu ^1.0.16 _normal_](https://docs.rs/ryu/^1.0.16/) * [criterion ^0.8.0 _dev_](https://docs.rs/criterion/^0.8.0/) * [half ^2.1 _dev_](https://docs.rs/half/^2.1/) * [insta ^1.46.3 _dev_](https://docs.rs/insta/^1.46.3/) * [rand ^0.9 _dev_](https://docs.rs/rand/^0.9/) * Versions * [**100%** of the crate is documented](https://docs.rs/crate/arrow-cast/58.1.0) * [Platform](https://docs.rs/arrow-cast/58.1.0/arrow_cast/cast/index.html#) * [aarch64-apple-darwin](https://docs.rs/crate/arrow-cast/58.1.0/target-redirect/aarch64-apple-darwin/arrow_cast/cast/) * [aarch64-unknown-linux-gnu](https://docs.rs/crate/arrow-cast/58.1.0/target-redirect/aarch64-unknown-linux-gnu/arrow_cast/cast/) * [i686-pc-windows-msvc](https://docs.rs/crate/arrow-cast/58.1.0/target-redirect/i686-pc-windows-msvc/arrow_cast/cast/) * [x86\_64-pc-windows-msvc](https://docs.rs/crate/arrow-cast/58.1.0/target-redirect/x86_64-pc-windows-msvc/arrow_cast/cast/) * [x86\_64-unknown-linux-gnu](https://docs.rs/crate/arrow-cast/58.1.0/target-redirect/arrow_cast/cast/) * [Feature flags](https://docs.rs/crate/arrow-cast/58.1.0/features "Browse available feature flags of arrow-cast-58.1.0") * [docs.rs](https://docs.rs/arrow-cast/58.1.0/arrow_cast/cast/index.html#) * [About docs.rs](https://docs.rs/about) * [Badges](https://docs.rs/about/badges) * [Builds](https://docs.rs/about/builds) * [Metadata](https://docs.rs/about/metadata) * [Shorthand URLs](https://docs.rs/about/redirections) * [Download](https://docs.rs/about/download) * [Rustdoc JSON](https://docs.rs/about/rustdoc-json) * [Build queue](https://docs.rs/releases/queue) * [Privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#docs.rs) * [Rust](https://docs.rs/arrow-cast/58.1.0/arrow_cast/cast/index.html#) * [Rust website](https://www.rust-lang.org/) * [The Book](https://doc.rust-lang.org/book/) * [Standard Library API Reference](https://doc.rust-lang.org/std/) * [Rust by Example](https://doc.rust-lang.org/rust-by-example/) * [The Cargo Guide](https://doc.rust-lang.org/cargo/guide/) * [Clippy Documentation](https://doc.rust-lang.org/nightly/clippy) [Skip to main content](https://docs.rs/arrow-cast/58.1.0/arrow_cast/cast/index.html#main-content) [Module cast](https://docs.rs/arrow-cast/58.1.0/arrow_cast/cast/index.html#) ----------------------------------------------------------------------------- [arrow\_cast](https://docs.rs/arrow-cast/58.1.0/arrow_cast/index.html) Module cast Copy item path ========================== [Source](https://docs.rs/arrow-cast/58.1.0/src/arrow_cast/cast/mod.rs.html#18-13350) Expand description Cast kernels to convert [`ArrayRef`](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/arrow_array/array/type.ArrayRef.html "type arrow_array::array::ArrayRef") between supported datatypes. See [`cast_with_options`](https://docs.rs/arrow-cast/58.1.0/arrow_cast/cast/fn.cast_with_options.html "fn arrow_cast::cast::cast_with_options") for more information on specific conversions. Example: // int32 to float64 let a = Int32Array::from(vec![5, 6, 7]); let b = cast(&a, &DataType::Float64).unwrap(); let c = b.as_primitive::(); assert_eq!(5.0, c.value(0)); assert_eq!(6.0, c.value(1)); assert_eq!(7.0, c.value(2)); Structs[§](https://docs.rs/arrow-cast/58.1.0/arrow_cast/cast/index.html#structs) --------------------------------------------------------------------------------- [CastOptions](https://docs.rs/arrow-cast/58.1.0/arrow_cast/cast/struct.CastOptions.html "struct arrow_cast::cast::CastOptions") CastOptions provides a way to override the default cast behaviors Traits[§](https://docs.rs/arrow-cast/58.1.0/arrow_cast/cast/index.html#traits) ------------------------------------------------------------------------------- [DecimalCast](https://docs.rs/arrow-cast/58.1.0/arrow_cast/cast/trait.DecimalCast.html "trait arrow_cast::cast::DecimalCast") A utility trait that provides checked conversions between decimal types inspired by [`NumCast`](https://docs.rs/num-traits/0.2.19/x86_64-unknown-linux-gnu/num_traits/cast/trait.NumCast.html "trait num_traits::cast::NumCast") Functions[§](https://docs.rs/arrow-cast/58.1.0/arrow_cast/cast/index.html#functions) ------------------------------------------------------------------------------------- [can\_cast\_types](https://docs.rs/arrow-cast/58.1.0/arrow_cast/cast/fn.can_cast_types.html "fn arrow_cast::cast::can_cast_types") Return true if a value of type `from_type` can be cast into a value of `to_type`. [cast](https://docs.rs/arrow-cast/58.1.0/arrow_cast/cast/fn.cast.html "fn arrow_cast::cast::cast") Cast `array` to the provided data type and return a new Array with type `to_type`, if possible. [cast\_with\_options](https://docs.rs/arrow-cast/58.1.0/arrow_cast/cast/fn.cast_with_options.html "fn arrow_cast::cast::cast_with_options") Try to cast `array` to `to_type` if possible. [rescale\_decimal](https://docs.rs/arrow-cast/58.1.0/arrow_cast/cast/fn.rescale_decimal.html "fn arrow_cast::cast::rescale_decimal") Rescales a decimal value from `(input_precision, input_scale)` to `(output_precision, output_scale)` and returns the converted number when it fits within the output precision. --- # downcast_dictionary_array in arrow - Rust [Docs.rs](https://docs.rs/) * [arrow-58.1.0](https://docs.rs/arrow/latest/arrow/macro.downcast_dictionary_array.html# "Rust implementation of Apache Arrow") * arrow 58.1.0 * [Permalink](https://docs.rs/arrow/58.1.0/arrow/macro.downcast_dictionary_array.html "Get a link to this specific version") * [Docs.rs crate page](https://docs.rs/crate/arrow/latest "See arrow in docs.rs") * [Apache-2.0](https://spdx.org/licenses/Apache-2.0) * Links * [Homepage](https://github.com/apache/arrow-rs) * [Repository](https://github.com/apache/arrow-rs) * [crates.io](https://crates.io/crates/arrow "See arrow in crates.io") * [Source](https://docs.rs/crate/arrow/latest/source/ "Browse source of arrow-58.1.0") * Owners * [andygrove](https://crates.io/users/andygrove) * [kou](https://crates.io/users/kou) * [kszucs](https://crates.io/users/kszucs) * [xhochy](https://crates.io/users/xhochy) * [nevi-me](https://crates.io/users/nevi-me) * [alamb](https://crates.io/users/alamb) * [tustvold](https://crates.io/users/tustvold) * Dependencies * * [arrow-arith ^58.1.0 _normal_](https://docs.rs/arrow-arith/^58.1.0/) * [arrow-array ^58.1.0 _normal_](https://docs.rs/arrow-array/^58.1.0/) * [arrow-buffer ^58.1.0 _normal_](https://docs.rs/arrow-buffer/^58.1.0/) * [arrow-cast ^58.1.0 _normal_](https://docs.rs/arrow-cast/^58.1.0/) * [arrow-csv ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-csv/^58.1.0/) * [arrow-data ^58.1.0 _normal_](https://docs.rs/arrow-data/^58.1.0/) * [arrow-ipc ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-ipc/^58.1.0/) * [arrow-json ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-json/^58.1.0/) * [arrow-ord ^58.1.0 _normal_](https://docs.rs/arrow-ord/^58.1.0/) * [arrow-pyarrow ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-pyarrow/^58.1.0/) * [arrow-row ^58.1.0 _normal_](https://docs.rs/arrow-row/^58.1.0/) * [arrow-schema ^58.1.0 _normal_](https://docs.rs/arrow-schema/^58.1.0/) * [arrow-select ^58.1.0 _normal_](https://docs.rs/arrow-select/^58.1.0/) * [arrow-string ^58.1.0 _normal_](https://docs.rs/arrow-string/^58.1.0/) * [half ^2.1 _normal_ _optional_](https://docs.rs/half/^2.1/) * [rand ^0.9 _normal_ _optional_](https://docs.rs/rand/^0.9/) * [bytes ^1.9 _dev_](https://docs.rs/bytes/^1.9/) * [chrono ^0.4.40 _dev_](https://docs.rs/chrono/^0.4.40/) * [criterion ^0.8.0 _dev_](https://docs.rs/criterion/^0.8.0/) * [half ^2.1 _dev_](https://docs.rs/half/^2.1/) * [memmap2 ^0.9.3 _dev_](https://docs.rs/memmap2/^0.9.3/) * [rand ^0.9 _dev_](https://docs.rs/rand/^0.9/) * [serde ^1.0 _dev_](https://docs.rs/serde/^1.0/) * Versions * [**100%** of the crate is documented](https://docs.rs/crate/arrow/latest) * [Platform](https://docs.rs/arrow/latest/arrow/macro.downcast_dictionary_array.html#) * [x86\_64-unknown-linux-gnu](https://docs.rs/crate/arrow/latest/target-redirect/arrow/macro.downcast_dictionary_array.html) * [Feature flags](https://docs.rs/crate/arrow/latest/features "Browse available feature flags of arrow-58.1.0") * [docs.rs](https://docs.rs/arrow/latest/arrow/macro.downcast_dictionary_array.html#) * [About docs.rs](https://docs.rs/about) * [Badges](https://docs.rs/about/badges) * [Builds](https://docs.rs/about/builds) * [Metadata](https://docs.rs/about/metadata) * [Shorthand URLs](https://docs.rs/about/redirections) * [Download](https://docs.rs/about/download) * [Rustdoc JSON](https://docs.rs/about/rustdoc-json) * [Build queue](https://docs.rs/releases/queue) * [Privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#docs.rs) * [Rust](https://docs.rs/arrow/latest/arrow/macro.downcast_dictionary_array.html#) * [Rust website](https://www.rust-lang.org/) * [The Book](https://doc.rust-lang.org/book/) * [Standard Library API Reference](https://doc.rust-lang.org/std/) * [Rust by Example](https://doc.rust-lang.org/rust-by-example/) * [The Cargo Guide](https://doc.rust-lang.org/cargo/guide/) * [Clippy Documentation](https://doc.rust-lang.org/nightly/clippy) [Skip to main content](https://docs.rs/arrow/latest/arrow/macro.downcast_dictionary_array.html#main-content) [downcast\_dictionary\_array](https://docs.rs/arrow/latest/arrow/macro.downcast_dictionary_array.html#) -------------------------------------------------------------------------------------------------------- [arrow](https://docs.rs/arrow/latest/arrow/index.html) Macro downcast\_dictionary\_array Copy item path ================================================ [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#557) macro_rules! downcast_dictionary_array { ($values:ident => $e:expr, $($p:pat $(if $pred:expr)? => $fallback:expr $(,)?)*) => { ... }; ($values:ident => $e:block $($p:pat $(if $pred:expr)? => $fallback:expr $(,)?)*) => { ... }; } Expand description Downcast an [`Array`](https://docs.rs/arrow/latest/arrow/array/trait.Array.html "trait arrow::array::Array") to a [`DictionaryArray`](https://docs.rs/arrow/latest/arrow/array/struct.DictionaryArray.html "struct arrow::array::DictionaryArray") based on its [`DataType`](https://docs.rs/arrow/latest/arrow/datatypes/enum.DataType.html "enum arrow::datatypes::DataType") , accepts a number of subsequent patterns to match the data type fn print_strings(array: &dyn Array) { downcast_dictionary_array!( array => match array.values().data_type() { DataType::Utf8 => { for v in array.downcast_dict::().unwrap() { println!("{:?}", v); } } t => println!("Unsupported dictionary value type {}", t), }, DataType::Utf8 => { for v in as_string_array(array) { println!("{:?}", v); } } // You can also add a guard to the pattern DataType::LargeUtf8 if true => { for v in as_largestring_array(array) { println!("{:?}", v); } } t => println!("Unsupported datatype {}", t) ) } --- # arrow::ffi_stream - Rust [Docs.rs](https://docs.rs/) * [arrow-58.1.0](https://docs.rs/arrow/latest/arrow/ffi_stream/index.html# "Rust implementation of Apache Arrow") * arrow 58.1.0 * [Permalink](https://docs.rs/arrow/58.1.0/arrow/ffi_stream/ "Get a link to this specific version") * [Docs.rs crate page](https://docs.rs/crate/arrow/latest "See arrow in docs.rs") * [Apache-2.0](https://spdx.org/licenses/Apache-2.0) * Links * [Homepage](https://github.com/apache/arrow-rs) * [Repository](https://github.com/apache/arrow-rs) * [crates.io](https://crates.io/crates/arrow "See arrow in crates.io") * [Source](https://docs.rs/crate/arrow/latest/source/ "Browse source of arrow-58.1.0") * Owners * [andygrove](https://crates.io/users/andygrove) * [kou](https://crates.io/users/kou) * [kszucs](https://crates.io/users/kszucs) * [xhochy](https://crates.io/users/xhochy) * [nevi-me](https://crates.io/users/nevi-me) * [alamb](https://crates.io/users/alamb) * [tustvold](https://crates.io/users/tustvold) * Dependencies * * [arrow-arith ^58.1.0 _normal_](https://docs.rs/arrow-arith/^58.1.0/) * [arrow-array ^58.1.0 _normal_](https://docs.rs/arrow-array/^58.1.0/) * [arrow-buffer ^58.1.0 _normal_](https://docs.rs/arrow-buffer/^58.1.0/) * [arrow-cast ^58.1.0 _normal_](https://docs.rs/arrow-cast/^58.1.0/) * [arrow-csv ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-csv/^58.1.0/) * [arrow-data ^58.1.0 _normal_](https://docs.rs/arrow-data/^58.1.0/) * [arrow-ipc ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-ipc/^58.1.0/) * [arrow-json ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-json/^58.1.0/) * [arrow-ord ^58.1.0 _normal_](https://docs.rs/arrow-ord/^58.1.0/) * [arrow-pyarrow ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-pyarrow/^58.1.0/) * [arrow-row ^58.1.0 _normal_](https://docs.rs/arrow-row/^58.1.0/) * [arrow-schema ^58.1.0 _normal_](https://docs.rs/arrow-schema/^58.1.0/) * [arrow-select ^58.1.0 _normal_](https://docs.rs/arrow-select/^58.1.0/) * [arrow-string ^58.1.0 _normal_](https://docs.rs/arrow-string/^58.1.0/) * [half ^2.1 _normal_ _optional_](https://docs.rs/half/^2.1/) * [rand ^0.9 _normal_ _optional_](https://docs.rs/rand/^0.9/) * [bytes ^1.9 _dev_](https://docs.rs/bytes/^1.9/) * [chrono ^0.4.40 _dev_](https://docs.rs/chrono/^0.4.40/) * [criterion ^0.8.0 _dev_](https://docs.rs/criterion/^0.8.0/) * [half ^2.1 _dev_](https://docs.rs/half/^2.1/) * [memmap2 ^0.9.3 _dev_](https://docs.rs/memmap2/^0.9.3/) * [rand ^0.9 _dev_](https://docs.rs/rand/^0.9/) * [serde ^1.0 _dev_](https://docs.rs/serde/^1.0/) * Versions * [**100%** of the crate is documented](https://docs.rs/crate/arrow/latest) * [Platform](https://docs.rs/arrow/latest/arrow/ffi_stream/index.html#) * [x86\_64-unknown-linux-gnu](https://docs.rs/crate/arrow/latest/target-redirect/arrow/ffi_stream/) * [Feature flags](https://docs.rs/crate/arrow/latest/features "Browse available feature flags of arrow-58.1.0") * [docs.rs](https://docs.rs/arrow/latest/arrow/ffi_stream/index.html#) * [About docs.rs](https://docs.rs/about) * [Badges](https://docs.rs/about/badges) * [Builds](https://docs.rs/about/builds) * [Metadata](https://docs.rs/about/metadata) * [Shorthand URLs](https://docs.rs/about/redirections) * [Download](https://docs.rs/about/download) * [Rustdoc JSON](https://docs.rs/about/rustdoc-json) * [Build queue](https://docs.rs/releases/queue) * [Privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#docs.rs) * [Rust](https://docs.rs/arrow/latest/arrow/ffi_stream/index.html#) * [Rust website](https://www.rust-lang.org/) * [The Book](https://doc.rust-lang.org/book/) * [Standard Library API Reference](https://doc.rust-lang.org/std/) * [Rust by Example](https://doc.rust-lang.org/rust-by-example/) * [The Cargo Guide](https://doc.rust-lang.org/cargo/guide/) * [Clippy Documentation](https://doc.rust-lang.org/nightly/clippy) [Skip to main content](https://docs.rs/arrow/latest/arrow/ffi_stream/index.html#main-content) [Module ffi\_stream](https://docs.rs/arrow/latest/arrow/ffi_stream/index.html#) -------------------------------------------------------------------------------- [arrow](https://docs.rs/arrow/latest/arrow/index.html) Module ffi\_stream Copy item path ================================= [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/lib.rs.html#255) Available on **crate feature `ffi`** only. Expand description Contains declarations to bind to the [C Stream Interface](https://arrow.apache.org/docs/format/CStreamInterface.html) . This module has two main interfaces: One interface maps C ABI to native Rust types, i.e. convert c-pointers, c\_char, to native rust. This is handled by [FFI\_ArrowArrayStream](https://docs.rs/arrow/latest/arrow/ffi_stream/struct.FFI_ArrowArrayStream.html "struct arrow::ffi_stream::FFI_ArrowArrayStream") . The second interface is used to import `FFI_ArrowArrayStream` as Rust implementation `RecordBatch` reader. This is handled by `ArrowArrayStreamReader`. [ⓘ](https://docs.rs/arrow/latest/arrow/ffi_stream/index.html# "This example is not tested") // create an record batch reader natively let file = File::open("arrow_file").unwrap(); let reader = Box::new(FileReader::try_new(file).unwrap()); // export it let mut stream = FFI_ArrowArrayStream::empty(); unsafe { export_reader_into_raw(reader, &mut stream) }; // consumed and used by something else... // import it let stream_reader = unsafe { ArrowArrayStreamReader::from_raw(&mut stream).unwrap() }; let imported_schema = stream_reader.schema(); let mut produced_batches = vec![]; for batch in stream_reader { produced_batches.push(batch.unwrap()); } Ok(()) } Structs[§](https://docs.rs/arrow/latest/arrow/ffi_stream/index.html#structs) ----------------------------------------------------------------------------- [ArrowArrayStreamReader](https://docs.rs/arrow/latest/arrow/ffi_stream/struct.ArrowArrayStreamReader.html "struct arrow::ffi_stream::ArrowArrayStreamReader") A `RecordBatchReader` which imports Arrays from `FFI_ArrowArrayStream`. [FFI\_ArrowArrayStream](https://docs.rs/arrow/latest/arrow/ffi_stream/struct.FFI_ArrowArrayStream.html "struct arrow::ffi_stream::FFI_ArrowArrayStream") ABI-compatible struct for `ArrayStream` from C Stream Interface See [https://arrow.apache.org/docs/format/CStreamInterface.html#structure-definitions](https://arrow.apache.org/docs/format/CStreamInterface.html#structure-definitions) This was created by bindgen --- # lisette - Rust [Docs.rs](https://docs.rs/) * [lisette-0.1.2](https://docs.rs/lisette/0.1.2/lisette/# "Little language inspired by Rust that compiles to Go") * lisette 0.1.2 * [Docs.rs crate page](https://docs.rs/crate/lisette/0.1.2 "See lisette in docs.rs") * [MIT](https://spdx.org/licenses/MIT) * Links * [Homepage](https://lisette.run/) * [Repository](https://github.com/ivov/lisette) * [crates.io](https://crates.io/crates/lisette "See lisette in crates.io") * [Source](https://docs.rs/crate/lisette/0.1.2/source/ "Browse source of lisette-0.1.2") * Owners * [ivov](https://crates.io/users/ivov) * Dependencies * * [lisette-diagnostics ^0.1.2 _normal_](https://docs.rs/lisette-diagnostics/^0.1.2/) * [lisette-emit ^0.1.2 _normal_](https://docs.rs/lisette-emit/^0.1.2/) * [lisette-format ^0.1.2 _normal_](https://docs.rs/lisette-format/^0.1.2/) * [lisette-lsp ^0.1.2 _normal_](https://docs.rs/lisette-lsp/^0.1.2/) * [owo-colors ^4.0 _normal_](https://docs.rs/owo-colors/^4.0/) * [rustc-hash ^2 _normal_](https://docs.rs/rustc-hash/^2/) * [lisette-semantics ^0.1.2 _normal_](https://docs.rs/lisette-semantics/^0.1.2/) * [serde ^1.0 _normal_](https://docs.rs/serde/^1.0/) * [lisette-stdlib ^0.1.2 _normal_](https://docs.rs/lisette-stdlib/^0.1.2/) * [lisette-syntax ^0.1.2 _normal_](https://docs.rs/lisette-syntax/^0.1.2/) * [tokio ^1 _normal_](https://docs.rs/tokio/^1/) * [toml ^0.9.10 _normal_](https://docs.rs/toml/^0.9.10/) * [tower-lsp ^0.20 _normal_](https://docs.rs/tower-lsp/^0.20/) * Versions * [**0%** of the crate is documented](https://docs.rs/crate/lisette/0.1.2) * [Platform](https://docs.rs/lisette/0.1.2/lisette/#) * [aarch64-apple-darwin](https://docs.rs/crate/lisette/0.1.2/target-redirect/aarch64-apple-darwin/lisette/) * [aarch64-unknown-linux-gnu](https://docs.rs/crate/lisette/0.1.2/target-redirect/aarch64-unknown-linux-gnu/lisette/) * [i686-pc-windows-msvc](https://docs.rs/crate/lisette/0.1.2/target-redirect/i686-pc-windows-msvc/lisette/) * [x86\_64-pc-windows-msvc](https://docs.rs/crate/lisette/0.1.2/target-redirect/x86_64-pc-windows-msvc/lisette/) * [x86\_64-unknown-linux-gnu](https://docs.rs/crate/lisette/0.1.2/target-redirect/lisette/) * [Feature flags](https://docs.rs/crate/lisette/0.1.2/features "Browse available feature flags of lisette-0.1.2") * [docs.rs](https://docs.rs/lisette/0.1.2/lisette/#) * [About docs.rs](https://docs.rs/about) * [Badges](https://docs.rs/about/badges) * [Builds](https://docs.rs/about/builds) * [Metadata](https://docs.rs/about/metadata) * [Shorthand URLs](https://docs.rs/about/redirections) * [Download](https://docs.rs/about/download) * [Rustdoc JSON](https://docs.rs/about/rustdoc-json) * [Build queue](https://docs.rs/releases/queue) * [Privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#docs.rs) * [Rust](https://docs.rs/lisette/0.1.2/lisette/#) * [Rust website](https://www.rust-lang.org/) * [The Book](https://doc.rust-lang.org/book/) * [Standard Library API Reference](https://doc.rust-lang.org/std/) * [Rust by Example](https://doc.rust-lang.org/rust-by-example/) * [The Cargo Guide](https://doc.rust-lang.org/cargo/guide/) * [Clippy Documentation](https://doc.rust-lang.org/nightly/clippy) [Skip to main content](https://docs.rs/lisette/0.1.2/lisette/#main-content) [Crate lisette](https://docs.rs/lisette/0.1.2/lisette/#) --------------------------------------------------------- Crate lisette Copy item path ============================ [Source](https://docs.rs/lisette/0.1.2/src/lisette/lib.rs.html#1-2) Modules[§](https://docs.rs/lisette/0.1.2/lisette/#modules) ----------------------------------------------------------- [fs](https://docs.rs/lisette/0.1.2/lisette/fs/index.html "mod lisette::fs") [pipeline](https://docs.rs/lisette/0.1.2/lisette/pipeline/index.html "mod lisette::pipeline") --- # bytes - Rust [Docs.rs](https://docs.rs/) * [bytes-1.11.1](https://docs.rs/bytes/1.11.1/bytes/# "Types and traits for working with bytes") * bytes 1.11.1 * [Docs.rs crate page](https://docs.rs/crate/bytes/1.11.1 "See bytes in docs.rs") * [MIT](https://spdx.org/licenses/MIT) * Links * [Repository](https://github.com/tokio-rs/bytes) * [crates.io](https://crates.io/crates/bytes "See bytes in crates.io") * [Source](https://docs.rs/crate/bytes/1.11.1/source/ "Browse source of bytes-1.11.1") * Owners * [carllerche](https://crates.io/users/carllerche) * [Darksonn](https://crates.io/users/Darksonn) * [github:tokio-rs:core](https://crates.io/teams/github:tokio-rs:core) * Dependencies * * [portable-atomic ^1.3 _normal_ _optional_](https://docs.rs/portable-atomic/^1.3/) * [serde ^1.0.60 _normal_ _optional_](https://docs.rs/serde/^1.0.60/) * [serde\_test ^1.0 _dev_](https://docs.rs/serde_test/^1.0/) * [loom ^0.7 _dev_](https://docs.rs/loom/^0.7/) * Versions * [**100%** of the crate is documented](https://docs.rs/crate/bytes/1.11.1) * [Platform](https://docs.rs/bytes/1.11.1/bytes/#) * [aarch64-apple-darwin](https://docs.rs/crate/bytes/1.11.1/target-redirect/aarch64-apple-darwin/bytes/) * [aarch64-unknown-linux-gnu](https://docs.rs/crate/bytes/1.11.1/target-redirect/aarch64-unknown-linux-gnu/bytes/) * [i686-pc-windows-msvc](https://docs.rs/crate/bytes/1.11.1/target-redirect/i686-pc-windows-msvc/bytes/) * [x86\_64-pc-windows-msvc](https://docs.rs/crate/bytes/1.11.1/target-redirect/x86_64-pc-windows-msvc/bytes/) * [x86\_64-unknown-linux-gnu](https://docs.rs/crate/bytes/1.11.1/target-redirect/bytes/) * [Feature flags](https://docs.rs/crate/bytes/1.11.1/features "Browse available feature flags of bytes-1.11.1") * [docs.rs](https://docs.rs/bytes/1.11.1/bytes/#) * [About docs.rs](https://docs.rs/about) * [Badges](https://docs.rs/about/badges) * [Builds](https://docs.rs/about/builds) * [Metadata](https://docs.rs/about/metadata) * [Shorthand URLs](https://docs.rs/about/redirections) * [Download](https://docs.rs/about/download) * [Rustdoc JSON](https://docs.rs/about/rustdoc-json) * [Build queue](https://docs.rs/releases/queue) * [Privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#docs.rs) * [Rust](https://docs.rs/bytes/1.11.1/bytes/#) * [Rust website](https://www.rust-lang.org/) * [The Book](https://doc.rust-lang.org/book/) * [Standard Library API Reference](https://doc.rust-lang.org/std/) * [Rust by Example](https://doc.rust-lang.org/rust-by-example/) * [The Cargo Guide](https://doc.rust-lang.org/cargo/guide/) * [Clippy Documentation](https://doc.rust-lang.org/nightly/clippy) [Skip to main content](https://docs.rs/bytes/1.11.1/bytes/#main-content) [Crate bytes](https://docs.rs/bytes/1.11.1/bytes/#) ---------------------------------------------------- Crate bytes Copy item path ========================== [Source](https://docs.rs/bytes/1.11.1/src/bytes/lib.rs.html#1-182) Expand description Provides abstractions for working with bytes. The `bytes` crate provides an efficient byte buffer structure ([`Bytes`](https://docs.rs/bytes/1.11.1/bytes/struct.Bytes.html "struct bytes::Bytes") ) and traits for working with buffer implementations ([`Buf`](https://docs.rs/bytes/1.11.1/bytes/buf/trait.Buf.html "trait bytes::buf::Buf") , [`BufMut`](https://docs.rs/bytes/1.11.1/bytes/buf/trait.BufMut.html "trait bytes::buf::BufMut") ). [§](https://docs.rs/bytes/1.11.1/bytes/#bytes) `Bytes` ------------------------------------------------------ `Bytes` is an efficient container for storing and operating on contiguous slices of memory. It is intended for use primarily in networking code, but could have applications elsewhere as well. `Bytes` values facilitate zero-copy network programming by allowing multiple `Bytes` objects to point to the same underlying memory. This is managed by using a reference count to track when the memory is no longer needed and can be freed. A `Bytes` handle can be created directly from an existing byte store (such as `&[u8]` or `Vec`), but usually a `BytesMut` is used first and written to. For example: use bytes::{BytesMut, BufMut}; let mut buf = BytesMut::with_capacity(1024); buf.put(&b"hello world"[..]); buf.put_u16(1234); let a = buf.split(); assert_eq!(a, b"hello world\x04\xD2"[..]); buf.put(&b"goodbye world"[..]); let b = buf.split(); assert_eq!(b, b"goodbye world"[..]); assert_eq!(buf.capacity(), 998); In the above example, only a single buffer of 1024 is allocated. The handles `a` and `b` will share the underlying buffer and maintain indices tracking the view into the buffer represented by the handle. See the [struct docs](https://docs.rs/bytes/1.11.1/bytes/struct.Bytes.html "struct bytes::Bytes") for more details. [§](https://docs.rs/bytes/1.11.1/bytes/#buf-bufmut) `Buf`, `BufMut` ------------------------------------------------------------------- These two traits provide read and write access to buffers. The underlying storage may or may not be in contiguous memory. For example, `Bytes` is a buffer that guarantees contiguous memory, but a [rope](https://en.wikipedia.org/wiki/Rope_(data_structure)) stores the bytes in disjoint chunks. `Buf` and `BufMut` maintain cursors tracking the current position in the underlying byte storage. When bytes are read or written, the cursor is advanced. ### [§](https://docs.rs/bytes/1.11.1/bytes/#relation-with-read-and-write) Relation with `Read` and `Write` At first glance, it may seem that `Buf` and `BufMut` overlap in functionality with [`std::io::Read`](https://doc.rust-lang.org/nightly/std/io/trait.Read.html "trait std::io::Read") and [`std::io::Write`](https://doc.rust-lang.org/nightly/std/io/trait.Write.html "trait std::io::Write") . However, they serve different purposes. A buffer is the value that is provided as an argument to `Read::read` and `Write::write`. `Read` and `Write` may then perform a syscall, which has the potential of failing. Operations on `Buf` and `BufMut` are infallible. Re-exports[§](https://docs.rs/bytes/1.11.1/bytes/#reexports) ------------------------------------------------------------- `pub use crate::buf::[Buf](https://docs.rs/bytes/1.11.1/bytes/buf/trait.Buf.html "trait bytes::buf::Buf") ;` `pub use crate::buf::[BufMut](https://docs.rs/bytes/1.11.1/bytes/buf/trait.BufMut.html "trait bytes::buf::BufMut") ;` Modules[§](https://docs.rs/bytes/1.11.1/bytes/#modules) -------------------------------------------------------- [buf](https://docs.rs/bytes/1.11.1/bytes/buf/index.html "mod bytes::buf") Utilities for working with buffers. Structs[§](https://docs.rs/bytes/1.11.1/bytes/#structs) -------------------------------------------------------- [Bytes](https://docs.rs/bytes/1.11.1/bytes/struct.Bytes.html "struct bytes::Bytes") A cheaply cloneable and sliceable chunk of contiguous memory. [BytesMut](https://docs.rs/bytes/1.11.1/bytes/struct.BytesMut.html "struct bytes::BytesMut") A unique reference to a contiguous slice of memory. [TryGetError](https://docs.rs/bytes/1.11.1/bytes/struct.TryGetError.html "struct bytes::TryGetError") Error type for the `try_get_` methods of [`Buf`](https://docs.rs/bytes/1.11.1/bytes/buf/trait.Buf.html "trait bytes::buf::Buf") . Indicates that there were not enough remaining bytes in the buffer while attempting to get a value from a [`Buf`](https://docs.rs/bytes/1.11.1/bytes/buf/trait.Buf.html "trait bytes::buf::Buf") with one of the `try_get_` methods. --- # btrfs_uapi - Rust [Docs.rs](https://docs.rs/) * [btrfs-uapi-0.7.0](https://docs.rs/btrfs-uapi/0.7.0/btrfs_uapi/# "Wrappers around the btrfs userspace interface (ioctls and sysfs)") * btrfs-uapi 0.7.0 * [Docs.rs crate page](https://docs.rs/crate/btrfs-uapi/0.7.0 "See btrfs-uapi in docs.rs") * [MIT](https://spdx.org/licenses/MIT) OR [Apache-2.0](https://spdx.org/licenses/Apache-2.0) * Links * [Homepage](https://github.com/rustutils/btrfsutils) * [Repository](https://github.com/rustutils/btrfsutils) * [crates.io](https://crates.io/crates/btrfs-uapi "See btrfs-uapi in crates.io") * [Source](https://docs.rs/crate/btrfs-uapi/0.7.0/source/ "Browse source of btrfs-uapi-0.7.0") * Owners * [xfbs](https://crates.io/users/xfbs) * Dependencies * * [bitflags ^2 _normal_](https://docs.rs/bitflags/^2/) * [nix ^0.31.2 _normal_](https://docs.rs/nix/^0.31.2/) * [uuid ^1 _normal_](https://docs.rs/uuid/^1/) * [tempfile ^3 _dev_](https://docs.rs/tempfile/^3/) * [bindgen ^0.72.1 _build_](https://docs.rs/bindgen/^0.72.1/) * Versions * [**35.42%** of the crate is documented](https://docs.rs/crate/btrfs-uapi/0.7.0) * [Platform](https://docs.rs/btrfs-uapi/0.7.0/btrfs_uapi/#) * [aarch64-unknown-linux-gnu](https://docs.rs/crate/btrfs-uapi/0.7.0/target-redirect/aarch64-unknown-linux-gnu/btrfs_uapi/) * [x86\_64-unknown-linux-gnu](https://docs.rs/crate/btrfs-uapi/0.7.0/target-redirect/btrfs_uapi/) * [Feature flags](https://docs.rs/crate/btrfs-uapi/0.7.0/features "Browse available feature flags of btrfs-uapi-0.7.0") * [docs.rs](https://docs.rs/btrfs-uapi/0.7.0/btrfs_uapi/#) * [About docs.rs](https://docs.rs/about) * [Badges](https://docs.rs/about/badges) * [Builds](https://docs.rs/about/builds) * [Metadata](https://docs.rs/about/metadata) * [Shorthand URLs](https://docs.rs/about/redirections) * [Download](https://docs.rs/about/download) * [Rustdoc JSON](https://docs.rs/about/rustdoc-json) * [Build queue](https://docs.rs/releases/queue) * [Privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#docs.rs) * [Rust](https://docs.rs/btrfs-uapi/0.7.0/btrfs_uapi/#) * [Rust website](https://www.rust-lang.org/) * [The Book](https://doc.rust-lang.org/book/) * [Standard Library API Reference](https://doc.rust-lang.org/std/) * [Rust by Example](https://doc.rust-lang.org/rust-by-example/) * [The Cargo Guide](https://doc.rust-lang.org/cargo/guide/) * [Clippy Documentation](https://doc.rust-lang.org/nightly/clippy) [Skip to main content](https://docs.rs/btrfs-uapi/0.7.0/btrfs_uapi/#main-content) [Crate btrfs\_uapi](https://docs.rs/btrfs-uapi/0.7.0/btrfs_uapi/#) ------------------------------------------------------------------- Crate btrfs\_uapi Copy item path ================================ [Source](https://docs.rs/btrfs-uapi/0.7.0/src/btrfs_uapi/lib.rs.html#1-58) Expand description [§](https://docs.rs/btrfs-uapi/0.7.0/btrfs_uapi/#btrfs-uapi-typed-rust-wrappers-around-the-btrfs-kernel-interface) btrfs-uapi: typed Rust wrappers around the btrfs kernel interface ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ This crate provides typed, safe access to the btrfs kernel interface. Kernel communication uses two mechanisms: * **ioctls** for most operations (balance, scrub, subvolume management, …) * **sysfs** under `/sys/fs/btrfs//` for status that the kernel does not expose via ioctl (quota state, commit statistics, scrub speed limits) ### [§](https://docs.rs/btrfs-uapi/0.7.0/btrfs_uapi/#safety) Safety All `unsafe` code is confined to the [`raw`](https://docs.rs/btrfs-uapi/0.7.0/btrfs_uapi/raw/index.html "mod btrfs_uapi::raw") module, which contains bindgen-generated types from the kernel UAPI headers (`btrfs.h` and `btrfs_tree.h`) and `nix` ioctl macro declarations for every `BTRFS_IOC_*` call. Every other module wraps [`raw`](https://docs.rs/btrfs-uapi/0.7.0/btrfs_uapi/raw/index.html "mod btrfs_uapi::raw") into a public API that is entirely safe, exposes no kernel types, and uses idiomatic Rust types throughout: `BorrowedFd`, `Uuid`, `bitflags`, `SystemTime`, `CString`, and so on. ### [§](https://docs.rs/btrfs-uapi/0.7.0/btrfs_uapi/#usage) Usage Every function that issues an ioctl takes a [`BorrowedFd`](https://doc.rust-lang.org/nightly/std/os/fd/owned/struct.BorrowedFd.html "struct std::os::fd::owned::BorrowedFd") open on any file within the target btrfs filesystem. Functions in [`sysfs`](https://docs.rs/btrfs-uapi/0.7.0/btrfs_uapi/sysfs/index.html "mod btrfs_uapi::sysfs") instead take a [`uuid::Uuid`](https://docs.rs/uuid/1.22.0/x86_64-unknown-linux-gnu/uuid/struct.Uuid.html "struct uuid::Uuid") , which can be obtained from [`filesystem::filesystem_info`](https://docs.rs/btrfs-uapi/0.7.0/btrfs_uapi/filesystem/fn.filesystem_info.html "fn btrfs_uapi::filesystem::filesystem_info") . Most ioctl-based operations require `CAP_SYS_ADMIN`. ### [§](https://docs.rs/btrfs-uapi/0.7.0/btrfs_uapi/#portability) Portability btrfs is Linux-only; this crate does not support other operating systems. Some ioctls used here were introduced in relatively recent kernel versions; this crate targets modern kernels (5.x and later) and does not attempt to detect or work around missing ioctls on older kernels. It is only tested on `amd64`, but all architectures supported by the kernel (and Rust) should work. Modules[§](https://docs.rs/btrfs-uapi/0.7.0/btrfs_uapi/#modules) ----------------------------------------------------------------- [balance](https://docs.rs/btrfs-uapi/0.7.0/btrfs_uapi/balance/index.html "mod btrfs_uapi::balance") Balance operations: redistributing data and metadata across devices [blkdev](https://docs.rs/btrfs-uapi/0.7.0/btrfs_uapi/blkdev/index.html "mod btrfs_uapi::blkdev") Block device ioctls: BLKGETSIZE64, BLKDISCARD [chunk](https://docs.rs/btrfs-uapi/0.7.0/btrfs_uapi/chunk/index.html "mod btrfs_uapi::chunk") Per-device physical allocation data from the chunk tree [dedupe](https://docs.rs/btrfs-uapi/0.7.0/btrfs_uapi/dedupe/index.html "mod btrfs_uapi::dedupe") Extent deduplication: comparing and deduplicating file extents [defrag](https://docs.rs/btrfs-uapi/0.7.0/btrfs_uapi/defrag/index.html "mod btrfs_uapi::defrag") File defragmentation: rewriting fragmented extents into contiguous runs [device](https://docs.rs/btrfs-uapi/0.7.0/btrfs_uapi/device/index.html "mod btrfs_uapi::device") Device management: adding, removing, querying, and extent layout [features](https://docs.rs/btrfs-uapi/0.7.0/btrfs_uapi/features/index.html "mod btrfs_uapi::features") Feature flags: querying and setting filesystem feature flags [fiemap](https://docs.rs/btrfs-uapi/0.7.0/btrfs_uapi/fiemap/index.html "mod btrfs_uapi::fiemap") Physical extent layout of files via `FS_IOC_FIEMAP` [filesystem](https://docs.rs/btrfs-uapi/0.7.0/btrfs_uapi/filesystem/index.html "mod btrfs_uapi::filesystem") Filesystem-level operations: metadata, sync, label, and resize [inode](https://docs.rs/btrfs-uapi/0.7.0/btrfs_uapi/inode/index.html "mod btrfs_uapi::inode") Inode and path resolution: mapping between inodes, logical addresses, and paths [quota](https://docs.rs/btrfs-uapi/0.7.0/btrfs_uapi/quota/index.html "mod btrfs_uapi::quota") Quota and qgroup management: enabling quotas and tracking disk usage [raw](https://docs.rs/btrfs-uapi/0.7.0/btrfs_uapi/raw/index.html "mod btrfs_uapi::raw") Raw bindgen output and ioctl declarations for the btrfs UAPI [replace](https://docs.rs/btrfs-uapi/0.7.0/btrfs_uapi/replace/index.html "mod btrfs_uapi::replace") Device replacement: replacing a device with another while the filesystem is online [scrub](https://docs.rs/btrfs-uapi/0.7.0/btrfs_uapi/scrub/index.html "mod btrfs_uapi::scrub") Data integrity scrubbing: verifying and repairing filesystem checksums [send\_receive](https://docs.rs/btrfs-uapi/0.7.0/btrfs_uapi/send_receive/index.html "mod btrfs_uapi::send_receive") Send and receive: generating and applying btrfs send streams [space](https://docs.rs/btrfs-uapi/0.7.0/btrfs_uapi/space/index.html "mod btrfs_uapi::space") Block group space usage: how much space each chunk type allocates and uses [subvolume](https://docs.rs/btrfs-uapi/0.7.0/btrfs_uapi/subvolume/index.html "mod btrfs_uapi::subvolume") Subvolume and snapshot management: creating, deleting, and querying subvolumes [sysfs](https://docs.rs/btrfs-uapi/0.7.0/btrfs_uapi/sysfs/index.html "mod btrfs_uapi::sysfs") Sysfs interface: reading filesystem and device state from `/sys/fs/btrfs/` [tree\_search](https://docs.rs/btrfs-uapi/0.7.0/btrfs_uapi/tree_search/index.html "mod btrfs_uapi::tree_search") Generic B-tree search: walking any internal btrfs tree via `BTRFS_IOC_TREE_SEARCH` [util](https://docs.rs/btrfs-uapi/0.7.0/btrfs_uapi/util/index.html "mod btrfs_uapi::util") Shared utilities for the uapi crate Macros[§](https://docs.rs/btrfs-uapi/0.7.0/btrfs_uapi/#macros) --------------------------------------------------------------- [field\_size](https://docs.rs/btrfs-uapi/0.7.0/btrfs_uapi/macro.field_size.html "macro btrfs_uapi::field_size") Return the size in bytes of a single field within a struct. --- # arrow::util - Rust [Docs.rs](https://docs.rs/) * [arrow-58.1.0](https://docs.rs/arrow/latest/arrow/util/index.html# "Rust implementation of Apache Arrow") * arrow 58.1.0 * [Permalink](https://docs.rs/arrow/58.1.0/arrow/util/ "Get a link to this specific version") * [Docs.rs crate page](https://docs.rs/crate/arrow/latest "See arrow in docs.rs") * [Apache-2.0](https://spdx.org/licenses/Apache-2.0) * Links * [Homepage](https://github.com/apache/arrow-rs) * [Repository](https://github.com/apache/arrow-rs) * [crates.io](https://crates.io/crates/arrow "See arrow in crates.io") * [Source](https://docs.rs/crate/arrow/latest/source/ "Browse source of arrow-58.1.0") * Owners * [andygrove](https://crates.io/users/andygrove) * [kou](https://crates.io/users/kou) * [kszucs](https://crates.io/users/kszucs) * [xhochy](https://crates.io/users/xhochy) * [nevi-me](https://crates.io/users/nevi-me) * [alamb](https://crates.io/users/alamb) * [tustvold](https://crates.io/users/tustvold) * Dependencies * * [arrow-arith ^58.1.0 _normal_](https://docs.rs/arrow-arith/^58.1.0/) * [arrow-array ^58.1.0 _normal_](https://docs.rs/arrow-array/^58.1.0/) * [arrow-buffer ^58.1.0 _normal_](https://docs.rs/arrow-buffer/^58.1.0/) * [arrow-cast ^58.1.0 _normal_](https://docs.rs/arrow-cast/^58.1.0/) * [arrow-csv ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-csv/^58.1.0/) * [arrow-data ^58.1.0 _normal_](https://docs.rs/arrow-data/^58.1.0/) * [arrow-ipc ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-ipc/^58.1.0/) * [arrow-json ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-json/^58.1.0/) * [arrow-ord ^58.1.0 _normal_](https://docs.rs/arrow-ord/^58.1.0/) * [arrow-pyarrow ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-pyarrow/^58.1.0/) * [arrow-row ^58.1.0 _normal_](https://docs.rs/arrow-row/^58.1.0/) * [arrow-schema ^58.1.0 _normal_](https://docs.rs/arrow-schema/^58.1.0/) * [arrow-select ^58.1.0 _normal_](https://docs.rs/arrow-select/^58.1.0/) * [arrow-string ^58.1.0 _normal_](https://docs.rs/arrow-string/^58.1.0/) * [half ^2.1 _normal_ _optional_](https://docs.rs/half/^2.1/) * [rand ^0.9 _normal_ _optional_](https://docs.rs/rand/^0.9/) * [bytes ^1.9 _dev_](https://docs.rs/bytes/^1.9/) * [chrono ^0.4.40 _dev_](https://docs.rs/chrono/^0.4.40/) * [criterion ^0.8.0 _dev_](https://docs.rs/criterion/^0.8.0/) * [half ^2.1 _dev_](https://docs.rs/half/^2.1/) * [memmap2 ^0.9.3 _dev_](https://docs.rs/memmap2/^0.9.3/) * [rand ^0.9 _dev_](https://docs.rs/rand/^0.9/) * [serde ^1.0 _dev_](https://docs.rs/serde/^1.0/) * Versions * [**100%** of the crate is documented](https://docs.rs/crate/arrow/latest) * [Platform](https://docs.rs/arrow/latest/arrow/util/index.html#) * [x86\_64-unknown-linux-gnu](https://docs.rs/crate/arrow/latest/target-redirect/arrow/util/) * [Feature flags](https://docs.rs/crate/arrow/latest/features "Browse available feature flags of arrow-58.1.0") * [docs.rs](https://docs.rs/arrow/latest/arrow/util/index.html#) * [About docs.rs](https://docs.rs/about) * [Badges](https://docs.rs/about/badges) * [Builds](https://docs.rs/about/builds) * [Metadata](https://docs.rs/about/metadata) * [Shorthand URLs](https://docs.rs/about/redirections) * [Download](https://docs.rs/about/download) * [Rustdoc JSON](https://docs.rs/about/rustdoc-json) * [Build queue](https://docs.rs/releases/queue) * [Privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#docs.rs) * [Rust](https://docs.rs/arrow/latest/arrow/util/index.html#) * [Rust website](https://www.rust-lang.org/) * [The Book](https://doc.rust-lang.org/book/) * [Standard Library API Reference](https://doc.rust-lang.org/std/) * [Rust by Example](https://doc.rust-lang.org/rust-by-example/) * [The Cargo Guide](https://doc.rust-lang.org/cargo/guide/) * [Clippy Documentation](https://doc.rust-lang.org/nightly/clippy) [Skip to main content](https://docs.rs/arrow/latest/arrow/util/index.html#main-content) [Module util](https://docs.rs/arrow/latest/arrow/util/index.html#) ------------------------------------------------------------------- [arrow](https://docs.rs/arrow/latest/arrow/index.html) Module util Copy item path ========================== [Source](https://docs.rs/arrow/latest/src/arrow/util/mod.rs.html#18-34) Expand description Utility functions for working with Arrow data Modules[§](https://docs.rs/arrow/latest/arrow/util/index.html#modules) ----------------------------------------------------------------------- [bench\_util](https://docs.rs/arrow/latest/arrow/util/bench_util/index.html "mod arrow::util::bench_util") `test_utils` Utils to make benchmarking easier [bit\_chunk\_iterator](https://docs.rs/arrow/latest/arrow/util/bit_chunk_iterator/index.html "mod arrow::util::bit_chunk_iterator") Types for iterating over bitmasks in 64-bit chunks [bit\_iterator](https://docs.rs/arrow/latest/arrow/util/bit_iterator/index.html "mod arrow::util::bit_iterator") Types for iterating over packed bitmasks [bit\_mask](https://docs.rs/arrow/latest/arrow/util/bit_mask/index.html "mod arrow::util::bit_mask") Utils for working with packed bit masks [bit\_util](https://docs.rs/arrow/latest/arrow/util/bit_util/index.html "mod arrow::util::bit_util") Utils for working with bits [data\_gen](https://docs.rs/arrow/latest/arrow/util/data_gen/index.html "mod arrow::util::data_gen") `test_utils` Utilities to generate random arrays and batches [display](https://docs.rs/arrow/latest/arrow/util/display/index.html "mod arrow::util::display") Functions for printing array values as human-readable strings. [pretty](https://docs.rs/arrow/latest/arrow/util/pretty/index.html "mod arrow::util::pretty") `prettyprint` Utilities for pretty printing [`RecordBatch`](https://docs.rs/arrow/latest/arrow/array/struct.RecordBatch.html "struct arrow::array::RecordBatch") es and [`Array`](https://docs.rs/arrow/latest/arrow/array/trait.Array.html "trait arrow::array::Array") s. [string\_writer](https://docs.rs/arrow/latest/arrow/util/string_writer/index.html "mod arrow::util::string_writer") String Writer This string writer encapsulates `std::string::String` and implements `std::io::Write` trait, which makes String as a writable object like File. [test\_util](https://docs.rs/arrow/latest/arrow/util/test_util/index.html "mod arrow::util::test_util") `test_utils` Utils to make testing easier --- # arrow_data::decimal - Rust [Docs.rs](https://docs.rs/) * [arrow-data-58.1.0](https://docs.rs/arrow-data/58.1.0/arrow_data/decimal/index.html# "Array data abstractions for Apache Arrow") * arrow-data 58.1.0 * [Docs.rs crate page](https://docs.rs/crate/arrow-data/58.1.0 "See arrow-data in docs.rs") * [Apache-2.0](https://spdx.org/licenses/Apache-2.0) * Links * [Homepage](https://github.com/apache/arrow-rs) * [Repository](https://github.com/apache/arrow-rs) * [crates.io](https://crates.io/crates/arrow-data "See arrow-data in crates.io") * [Source](https://docs.rs/crate/arrow-data/58.1.0/source/ "Browse source of arrow-data-58.1.0") * Owners * [andygrove](https://crates.io/users/andygrove) * [kou](https://crates.io/users/kou) * [xhochy](https://crates.io/users/xhochy) * [nevi-me](https://crates.io/users/nevi-me) * [alamb](https://crates.io/users/alamb) * [tustvold](https://crates.io/users/tustvold) * Dependencies * * [arrow-buffer ^58.1.0 _normal_](https://docs.rs/arrow-buffer/^58.1.0/) * [arrow-schema ^58.1.0 _normal_](https://docs.rs/arrow-schema/^58.1.0/) * [half ^2.1 _normal_](https://docs.rs/half/^2.1/) * [num-integer ^0.1.46 _normal_](https://docs.rs/num-integer/^0.1.46/) * [num-traits ^0.2.19 _normal_](https://docs.rs/num-traits/^0.2.19/) * Versions * [**100%** of the crate is documented](https://docs.rs/crate/arrow-data/58.1.0) * [Platform](https://docs.rs/arrow-data/58.1.0/arrow_data/decimal/index.html#) * [aarch64-apple-darwin](https://docs.rs/crate/arrow-data/58.1.0/target-redirect/aarch64-apple-darwin/arrow_data/decimal/) * [aarch64-unknown-linux-gnu](https://docs.rs/crate/arrow-data/58.1.0/target-redirect/aarch64-unknown-linux-gnu/arrow_data/decimal/) * [i686-pc-windows-msvc](https://docs.rs/crate/arrow-data/58.1.0/target-redirect/i686-pc-windows-msvc/arrow_data/decimal/) * [x86\_64-pc-windows-msvc](https://docs.rs/crate/arrow-data/58.1.0/target-redirect/x86_64-pc-windows-msvc/arrow_data/decimal/) * [x86\_64-unknown-linux-gnu](https://docs.rs/crate/arrow-data/58.1.0/target-redirect/arrow_data/decimal/) * [Feature flags](https://docs.rs/crate/arrow-data/58.1.0/features "Browse available feature flags of arrow-data-58.1.0") * [docs.rs](https://docs.rs/arrow-data/58.1.0/arrow_data/decimal/index.html#) * [About docs.rs](https://docs.rs/about) * [Badges](https://docs.rs/about/badges) * [Builds](https://docs.rs/about/builds) * [Metadata](https://docs.rs/about/metadata) * [Shorthand URLs](https://docs.rs/about/redirections) * [Download](https://docs.rs/about/download) * [Rustdoc JSON](https://docs.rs/about/rustdoc-json) * [Build queue](https://docs.rs/releases/queue) * [Privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#docs.rs) * [Rust](https://docs.rs/arrow-data/58.1.0/arrow_data/decimal/index.html#) * [Rust website](https://www.rust-lang.org/) * [The Book](https://doc.rust-lang.org/book/) * [Standard Library API Reference](https://doc.rust-lang.org/std/) * [Rust by Example](https://doc.rust-lang.org/rust-by-example/) * [The Cargo Guide](https://doc.rust-lang.org/cargo/guide/) * [Clippy Documentation](https://doc.rust-lang.org/nightly/clippy) [Skip to main content](https://docs.rs/arrow-data/58.1.0/arrow_data/decimal/index.html#main-content) [Module decimal](https://docs.rs/arrow-data/58.1.0/arrow_data/decimal/index.html#) ----------------------------------------------------------------------------------- [arrow\_data](https://docs.rs/arrow-data/58.1.0/arrow_data/index.html) Module decimal Copy item path ============================= [Source](https://docs.rs/arrow-data/58.1.0/src/arrow_data/decimal.rs.html#18-1275) Expand description Maximum and minimum values for [`Decimal256`](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/arrow_schema/datatype/enum.DataType.html#variant.Decimal256 "variant arrow_schema::datatype::DataType::Decimal256") , [`Decimal128`](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/arrow_schema/datatype/enum.DataType.html#variant.Decimal128 "variant arrow_schema::datatype::DataType::Decimal128") , [`Decimal64`](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/arrow_schema/datatype/enum.DataType.html#variant.Decimal64 "variant arrow_schema::datatype::DataType::Decimal64") and [`Decimal32`](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/arrow_schema/datatype/enum.DataType.html#variant.Decimal32 "variant arrow_schema::datatype::DataType::Decimal32") . Also provides functions to validate if a given decimal value is within the valid range of the decimal type. Constants[§](https://docs.rs/arrow-data/58.1.0/arrow_data/decimal/index.html#constants) ---------------------------------------------------------------------------------------- [DECIMAL32\_DEFAULT\_SCALE](https://docs.rs/arrow-data/58.1.0/arrow_data/decimal/constant.DECIMAL32_DEFAULT_SCALE.html "constant arrow_data::decimal::DECIMAL32_DEFAULT_SCALE") The default scale for [DataType::Decimal32](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/arrow_schema/datatype/enum.DataType.html#variant.Decimal32 "variant arrow_schema::datatype::DataType::Decimal32") values [DECIMAL32\_MAX\_PRECISION](https://docs.rs/arrow-data/58.1.0/arrow_data/decimal/constant.DECIMAL32_MAX_PRECISION.html "constant arrow_data::decimal::DECIMAL32_MAX_PRECISION") The maximum precision for [DataType::Decimal32](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/arrow_schema/datatype/enum.DataType.html#variant.Decimal32 "variant arrow_schema::datatype::DataType::Decimal32") values [DECIMAL32\_MAX\_SCALE](https://docs.rs/arrow-data/58.1.0/arrow_data/decimal/constant.DECIMAL32_MAX_SCALE.html "constant arrow_data::decimal::DECIMAL32_MAX_SCALE") The maximum scale for [DataType::Decimal32](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/arrow_schema/datatype/enum.DataType.html#variant.Decimal32 "variant arrow_schema::datatype::DataType::Decimal32") values [DECIMAL64\_DEFAULT\_SCALE](https://docs.rs/arrow-data/58.1.0/arrow_data/decimal/constant.DECIMAL64_DEFAULT_SCALE.html "constant arrow_data::decimal::DECIMAL64_DEFAULT_SCALE") The default scale for [DataType::Decimal64](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/arrow_schema/datatype/enum.DataType.html#variant.Decimal64 "variant arrow_schema::datatype::DataType::Decimal64") values [DECIMAL64\_MAX\_PRECISION](https://docs.rs/arrow-data/58.1.0/arrow_data/decimal/constant.DECIMAL64_MAX_PRECISION.html "constant arrow_data::decimal::DECIMAL64_MAX_PRECISION") The maximum precision for [DataType::Decimal64](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/arrow_schema/datatype/enum.DataType.html#variant.Decimal64 "variant arrow_schema::datatype::DataType::Decimal64") values [DECIMAL64\_MAX\_SCALE](https://docs.rs/arrow-data/58.1.0/arrow_data/decimal/constant.DECIMAL64_MAX_SCALE.html "constant arrow_data::decimal::DECIMAL64_MAX_SCALE") The maximum scale for [DataType::Decimal64](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/arrow_schema/datatype/enum.DataType.html#variant.Decimal64 "variant arrow_schema::datatype::DataType::Decimal64") values [DECIMAL128\_MAX\_PRECISION](https://docs.rs/arrow-data/58.1.0/arrow_data/decimal/constant.DECIMAL128_MAX_PRECISION.html "constant arrow_data::decimal::DECIMAL128_MAX_PRECISION") The maximum precision for [DataType::Decimal128](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/arrow_schema/datatype/enum.DataType.html#variant.Decimal128 "variant arrow_schema::datatype::DataType::Decimal128") values [DECIMAL128\_MAX\_SCALE](https://docs.rs/arrow-data/58.1.0/arrow_data/decimal/constant.DECIMAL128_MAX_SCALE.html "constant arrow_data::decimal::DECIMAL128_MAX_SCALE") The maximum scale for [DataType::Decimal128](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/arrow_schema/datatype/enum.DataType.html#variant.Decimal128 "variant arrow_schema::datatype::DataType::Decimal128") values [DECIMAL256\_MAX\_PRECISION](https://docs.rs/arrow-data/58.1.0/arrow_data/decimal/constant.DECIMAL256_MAX_PRECISION.html "constant arrow_data::decimal::DECIMAL256_MAX_PRECISION") The maximum precision for [DataType::Decimal256](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/arrow_schema/datatype/enum.DataType.html#variant.Decimal256 "variant arrow_schema::datatype::DataType::Decimal256") values [DECIMAL256\_MAX\_SCALE](https://docs.rs/arrow-data/58.1.0/arrow_data/decimal/constant.DECIMAL256_MAX_SCALE.html "constant arrow_data::decimal::DECIMAL256_MAX_SCALE") The maximum scale for [DataType::Decimal256](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/arrow_schema/datatype/enum.DataType.html#variant.Decimal256 "variant arrow_schema::datatype::DataType::Decimal256") values [DECIMAL\_DEFAULT\_SCALE](https://docs.rs/arrow-data/58.1.0/arrow_data/decimal/constant.DECIMAL_DEFAULT_SCALE.html "constant arrow_data::decimal::DECIMAL_DEFAULT_SCALE") The default scale for [DataType::Decimal128](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/arrow_schema/datatype/enum.DataType.html#variant.Decimal128 "variant arrow_schema::datatype::DataType::Decimal128") and [DataType::Decimal256](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/arrow_schema/datatype/enum.DataType.html#variant.Decimal256 "variant arrow_schema::datatype::DataType::Decimal256") values [MAX\_DECIMAL32\_FOR\_EACH\_PRECISION](https://docs.rs/arrow-data/58.1.0/arrow_data/decimal/constant.MAX_DECIMAL32_FOR_EACH_PRECISION.html "constant arrow_data::decimal::MAX_DECIMAL32_FOR_EACH_PRECISION") `MAX_DECIMAL32_FOR_EACH_PRECISION[p]` holds the maximum `i32` value that can be stored in [`Decimal32`](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/arrow_schema/datatype/enum.DataType.html#variant.Decimal32 "variant arrow_schema::datatype::DataType::Decimal32") value of precision `p`. [MAX\_DECIMAL64\_FOR\_EACH\_PRECISION](https://docs.rs/arrow-data/58.1.0/arrow_data/decimal/constant.MAX_DECIMAL64_FOR_EACH_PRECISION.html "constant arrow_data::decimal::MAX_DECIMAL64_FOR_EACH_PRECISION") `MAX_DECIMAL64_FOR_EACH_PRECISION[p]` holds the maximum `i64` value that can be stored in [`Decimal64`](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/arrow_schema/datatype/enum.DataType.html#variant.Decimal64 "variant arrow_schema::datatype::DataType::Decimal64") value of precision `p`. [MAX\_DECIMAL128\_FOR\_EACH\_PRECISION](https://docs.rs/arrow-data/58.1.0/arrow_data/decimal/constant.MAX_DECIMAL128_FOR_EACH_PRECISION.html "constant arrow_data::decimal::MAX_DECIMAL128_FOR_EACH_PRECISION") `MAX_DECIMAL128_FOR_EACH_PRECISION[p]` holds the maximum `i128` value that can be stored in [`Decimal128`](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/arrow_schema/datatype/enum.DataType.html#variant.Decimal128 "variant arrow_schema::datatype::DataType::Decimal128") value of precision `p`. [MAX\_DECIMAL256\_FOR\_EACH\_PRECISION](https://docs.rs/arrow-data/58.1.0/arrow_data/decimal/constant.MAX_DECIMAL256_FOR_EACH_PRECISION.html "constant arrow_data::decimal::MAX_DECIMAL256_FOR_EACH_PRECISION") `MAX_DECIMAL256_FOR_EACH_PRECISION[p]` holds the maximum [`i256`](https://docs.rs/arrow-buffer/58.1.0/x86_64-unknown-linux-gnu/arrow_buffer/bigint/struct.i256.html "struct arrow_buffer::bigint::i256") value that can be stored in a [`Decimal256`](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/arrow_schema/datatype/enum.DataType.html#variant.Decimal256 "variant arrow_schema::datatype::DataType::Decimal256") value of precision `p`. [MAX\_DECIMAL\_FOR\_EACH\_PRECISION](https://docs.rs/arrow-data/58.1.0/arrow_data/decimal/constant.MAX_DECIMAL_FOR_EACH_PRECISION.html "constant arrow_data::decimal::MAX_DECIMAL_FOR_EACH_PRECISION") Deprecated `MAX_DECIMAL_FOR_EACH_PRECISION[p-1]` holds the maximum `i128` value that can be stored in a [`Decimal128`](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/arrow_schema/datatype/enum.DataType.html#variant.Decimal128 "variant arrow_schema::datatype::DataType::Decimal128") value of precision `p` [MIN\_DECIMAL32\_FOR\_EACH\_PRECISION](https://docs.rs/arrow-data/58.1.0/arrow_data/decimal/constant.MIN_DECIMAL32_FOR_EACH_PRECISION.html "constant arrow_data::decimal::MIN_DECIMAL32_FOR_EACH_PRECISION") `MIN_DECIMAL32_FOR_EACH_PRECISION[p]` holds the minimum `ialue that can be stored in a [`Decimal32`] value of precision` p\`. [MIN\_DECIMAL64\_FOR\_EACH\_PRECISION](https://docs.rs/arrow-data/58.1.0/arrow_data/decimal/constant.MIN_DECIMAL64_FOR_EACH_PRECISION.html "constant arrow_data::decimal::MIN_DECIMAL64_FOR_EACH_PRECISION") `MIN_DECIMAL64_FOR_EACH_PRECISION[p]` holds the minimum `i64` value that can be stored in a [`Decimal64`](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/arrow_schema/datatype/enum.DataType.html#variant.Decimal64 "variant arrow_schema::datatype::DataType::Decimal64") value of precision `p`. [MIN\_DECIMAL128\_FOR\_EACH\_PRECISION](https://docs.rs/arrow-data/58.1.0/arrow_data/decimal/constant.MIN_DECIMAL128_FOR_EACH_PRECISION.html "constant arrow_data::decimal::MIN_DECIMAL128_FOR_EACH_PRECISION") `MIN_DECIMAL_FOR_EACH_PRECISION[p]` holds the minimum `i128` value that can be stored in a [`Decimal128`](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/arrow_schema/datatype/enum.DataType.html#variant.Decimal128 "variant arrow_schema::datatype::DataType::Decimal128") value of precision `p`. [MIN\_DECIMAL256\_FOR\_EACH\_PRECISION](https://docs.rs/arrow-data/58.1.0/arrow_data/decimal/constant.MIN_DECIMAL256_FOR_EACH_PRECISION.html "constant arrow_data::decimal::MIN_DECIMAL256_FOR_EACH_PRECISION") `MIN_DECIMAL256_FOR_EACH_PRECISION[p]` holds the minimum [`i256`](https://docs.rs/arrow-buffer/58.1.0/x86_64-unknown-linux-gnu/arrow_buffer/bigint/struct.i256.html "struct arrow_buffer::bigint::i256") value that can be stored in a [`Decimal256`](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/arrow_schema/datatype/enum.DataType.html#variant.Decimal256 "variant arrow_schema::datatype::DataType::Decimal256") value of precision `p`. [MIN\_DECIMAL\_FOR\_EACH\_PRECISION](https://docs.rs/arrow-data/58.1.0/arrow_data/decimal/constant.MIN_DECIMAL_FOR_EACH_PRECISION.html "constant arrow_data::decimal::MIN_DECIMAL_FOR_EACH_PRECISION") Deprecated `MIN_DECIMAL_FOR_EACH_PRECISION[p-1]` holds the minimum `i128` value that can be stored in a [`Decimal128`](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/arrow_schema/datatype/enum.DataType.html#variant.Decimal128 "variant arrow_schema::datatype::DataType::Decimal128") value of precision `p` Functions[§](https://docs.rs/arrow-data/58.1.0/arrow_data/decimal/index.html#functions) ---------------------------------------------------------------------------------------- [format\_decimal\_str](https://docs.rs/arrow-data/58.1.0/arrow_data/decimal/fn.format_decimal_str.html "fn arrow_data::decimal::format_decimal_str") Formats a decimal string given the precision and scale. [is\_validate\_decimal32\_precision](https://docs.rs/arrow-data/58.1.0/arrow_data/decimal/fn.is_validate_decimal32_precision.html "fn arrow_data::decimal::is_validate_decimal32_precision") Returns true if the specified `i32` value can be properly interpreted as a [`Decimal32`](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/arrow_schema/datatype/enum.DataType.html#variant.Decimal32 "variant arrow_schema::datatype::DataType::Decimal32") number with precision `precision` [is\_validate\_decimal64\_precision](https://docs.rs/arrow-data/58.1.0/arrow_data/decimal/fn.is_validate_decimal64_precision.html "fn arrow_data::decimal::is_validate_decimal64_precision") Returns true if the specified `i64` value can be properly interpreted as a [`Decimal64`](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/arrow_schema/datatype/enum.DataType.html#variant.Decimal64 "variant arrow_schema::datatype::DataType::Decimal64") number with precision `precision` [is\_validate\_decimal256\_precision](https://docs.rs/arrow-data/58.1.0/arrow_data/decimal/fn.is_validate_decimal256_precision.html "fn arrow_data::decimal::is_validate_decimal256_precision") Return true if the specified `i256` value can be properly interpreted as a [`Decimal256`](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/arrow_schema/datatype/enum.DataType.html#variant.Decimal256 "variant arrow_schema::datatype::DataType::Decimal256") number with precision `precision` [is\_validate\_decimal\_precision](https://docs.rs/arrow-data/58.1.0/arrow_data/decimal/fn.is_validate_decimal_precision.html "fn arrow_data::decimal::is_validate_decimal_precision") Returns true if the specified `i128` value can be properly interpreted as a [`Decimal128`](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/arrow_schema/datatype/enum.DataType.html#variant.Decimal128 "variant arrow_schema::datatype::DataType::Decimal128") number with precision `precision` [validate\_decimal32\_precision](https://docs.rs/arrow-data/58.1.0/arrow_data/decimal/fn.validate_decimal32_precision.html "fn arrow_data::decimal::validate_decimal32_precision") Validates that the specified `i32` value can be properly interpreted as a [`Decimal32`](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/arrow_schema/datatype/enum.DataType.html#variant.Decimal32 "variant arrow_schema::datatype::DataType::Decimal32") number with precision `precision` [validate\_decimal64\_precision](https://docs.rs/arrow-data/58.1.0/arrow_data/decimal/fn.validate_decimal64_precision.html "fn arrow_data::decimal::validate_decimal64_precision") Validates that the specified `i64` value can be properly interpreted as a [`Decimal64`](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/arrow_schema/datatype/enum.DataType.html#variant.Decimal64 "variant arrow_schema::datatype::DataType::Decimal64") number with precision `precision` [validate\_decimal256\_precision](https://docs.rs/arrow-data/58.1.0/arrow_data/decimal/fn.validate_decimal256_precision.html "fn arrow_data::decimal::validate_decimal256_precision") Validates that the specified `i256` of value can be properly interpreted as a [`Decimal256`](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/arrow_schema/datatype/enum.DataType.html#variant.Decimal256 "variant arrow_schema::datatype::DataType::Decimal256") number with precision `precision` [validate\_decimal\_precision](https://docs.rs/arrow-data/58.1.0/arrow_data/decimal/fn.validate_decimal_precision.html "fn arrow_data::decimal::validate_decimal_precision") Validates that the specified `i128` value can be properly interpreted as a [`Decimal128`](https://docs.rs/arrow-schema/58.1.0/x86_64-unknown-linux-gnu/arrow_schema/datatype/enum.DataType.html#variant.Decimal128 "variant arrow_schema::datatype::DataType::Decimal128") number with precision `precision` --- # tempfile - Rust [Docs.rs](https://docs.rs/) * [tempfile-3.27.0](https://docs.rs/tempfile/3.27.0/tempfile/# "A library for managing temporary files and directories.") * tempfile 3.27.0 * [Docs.rs crate page](https://docs.rs/crate/tempfile/3.27.0 "See tempfile in docs.rs") * [MIT](https://spdx.org/licenses/MIT) OR [Apache-2.0](https://spdx.org/licenses/Apache-2.0) * Links * [Homepage](https://stebalien.com/projects/tempfile-rs/) * [Repository](https://github.com/Stebalien/tempfile) * [crates.io](https://crates.io/crates/tempfile "See tempfile in crates.io") * [Source](https://docs.rs/crate/tempfile/3.27.0/source/ "Browse source of tempfile-3.27.0") * Owners * [Stebalien](https://crates.io/users/Stebalien) * [KodrAus](https://crates.io/users/KodrAus) * Dependencies * * [fastrand ^2.1.1 _normal_](https://docs.rs/fastrand/^2.1.1/) * [once\_cell ^1.19.0 _normal_](https://docs.rs/once_cell/^1.19.0/) * [doc-comment ^0.3 _dev_](https://docs.rs/doc-comment/^0.3/) * [rustix ^1.1.4 _normal_](https://docs.rs/rustix/^1.1.4/) * [getrandom >=0.3.0, <0.5 _normal_ _optional_](https://docs.rs/getrandom/%3E=0.3.0,%20%3C0.5/) * [windows-sys >=0.52, <0.62 _normal_](https://docs.rs/windows-sys/%3E=0.52,%20%3C0.62/) * Versions * [**92.11%** of the crate is documented](https://docs.rs/crate/tempfile/3.27.0) * [Platform](https://docs.rs/tempfile/3.27.0/tempfile/#) * [aarch64-apple-darwin](https://docs.rs/crate/tempfile/3.27.0/target-redirect/aarch64-apple-darwin/tempfile/) * [aarch64-unknown-linux-gnu](https://docs.rs/crate/tempfile/3.27.0/target-redirect/aarch64-unknown-linux-gnu/tempfile/) * [i686-pc-windows-msvc](https://docs.rs/crate/tempfile/3.27.0/target-redirect/i686-pc-windows-msvc/tempfile/) * [x86\_64-pc-windows-msvc](https://docs.rs/crate/tempfile/3.27.0/target-redirect/x86_64-pc-windows-msvc/tempfile/) * [x86\_64-unknown-linux-gnu](https://docs.rs/crate/tempfile/3.27.0/target-redirect/tempfile/) * [Feature flags](https://docs.rs/crate/tempfile/3.27.0/features "Browse available feature flags of tempfile-3.27.0") * [docs.rs](https://docs.rs/tempfile/3.27.0/tempfile/#) * [About docs.rs](https://docs.rs/about) * [Badges](https://docs.rs/about/badges) * [Builds](https://docs.rs/about/builds) * [Metadata](https://docs.rs/about/metadata) * [Shorthand URLs](https://docs.rs/about/redirections) * [Download](https://docs.rs/about/download) * [Rustdoc JSON](https://docs.rs/about/rustdoc-json) * [Build queue](https://docs.rs/releases/queue) * [Privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#docs.rs) * [Rust](https://docs.rs/tempfile/3.27.0/tempfile/#) * [Rust website](https://www.rust-lang.org/) * [The Book](https://doc.rust-lang.org/book/) * [Standard Library API Reference](https://doc.rust-lang.org/std/) * [Rust by Example](https://doc.rust-lang.org/rust-by-example/) * [The Cargo Guide](https://doc.rust-lang.org/cargo/guide/) * [Clippy Documentation](https://doc.rust-lang.org/nightly/clippy) [Skip to main content](https://docs.rs/tempfile/3.27.0/tempfile/#main-content) [Crate tempfile](https://docs.rs/tempfile/3.27.0/tempfile/#) ------------------------------------------------------------- Crate tempfile Copy item path ============================= [Source](https://docs.rs/tempfile/3.27.0/src/tempfile/lib.rs.html#1-757) Expand description This is a library for creating temporary files and directories that are automatically deleted when no longer referenced (i.e., on drop). * Use [`tempfile()`](https://docs.rs/tempfile/3.27.0/tempfile/fn.tempfile.html) when you need a real [`std::fs::File`](https://doc.rust-lang.org/nightly/std/fs/struct.File.html "struct std::fs::File") but don’t need to refer to it by-path. * Use [`NamedTempFile::new()`](https://docs.rs/tempfile/3.27.0/tempfile/struct.NamedTempFile.html#method.new "associated function tempfile::NamedTempFile::new") when you need a _named_ temporary file that can be referred to its path. * Use [`tempdir()`](https://docs.rs/tempfile/3.27.0/tempfile/fn.tempdir.html) when you need a temporary directory that will be recursively deleted on drop. * Use [`spooled_tempfile()`](https://docs.rs/tempfile/3.27.0/tempfile/fn.spooled_tempfile.html "fn tempfile::spooled_tempfile") when you need an in-memory buffer that will ultimately be backed by a temporary file if it gets too large. [§](https://docs.rs/tempfile/3.27.0/tempfile/#design) Design ------------------------------------------------------------ This crate provides several approaches to creating temporary files and directories. [`tempfile()`](https://docs.rs/tempfile/3.27.0/tempfile/fn.tempfile.html) relies on the OS to remove the temporary file once the last handle is closed. [`TempDir`](https://docs.rs/tempfile/3.27.0/tempfile/struct.TempDir.html) and [`NamedTempFile`](https://docs.rs/tempfile/3.27.0/tempfile/struct.NamedTempFile.html) both rely on Rust destructors for cleanup. ### [§](https://docs.rs/tempfile/3.27.0/tempfile/#resource-leaking) Resource Leaking `tempfile` will (almost) never fail to cleanup temporary resources. However `TempDir` and `NamedTempFile` will fail if their destructors don’t run. This is because `tempfile` relies on the OS to cleanup the underlying file, while `TempDir` and `NamedTempFile` rely on rust destructors to do so. Destructors may fail to run if the process exits through an unhandled signal interrupt (like `SIGINT`), or if the instance is declared statically (like with [`lazy_static`](https://github.com/rust-lang-nursery/lazy-static.rs/issues/62) ), among other possible reasons. ### [§](https://docs.rs/tempfile/3.27.0/tempfile/#unexpected-file-deletion) Unexpected File Deletion Most operating systems periodically clean up temporary files that haven’t been accessed recently (often on the order of multiple days). This issue does not affect unnamed temporary files but can invalidate the paths associated with named temporary files on Unix-like systems because the temporary file can be unlinked from the filesystem while still open and in-use. See the [temporary file cleaner](https://docs.rs/tempfile/3.27.0/tempfile/#temporary-file-cleaners) section for more security implications. ### [§](https://docs.rs/tempfile/3.27.0/tempfile/#security) Security This section discusses security issues relevant to Unix-like operating systems that use shared temporary directories by default. Importantly, it’s not relevant for Windows or macOS as both operating systems use private per-user temporary directories by default. Applications can mitigate the issues described below by using [`env::override_temp_dir`](https://docs.rs/tempfile/3.27.0/tempfile/env/fn.override_temp_dir.html "fn tempfile::env::override_temp_dir") to change the default temporary directory but should do so if and only if default the temporary directory ([`env::temp_dir`](https://docs.rs/tempfile/3.27.0/tempfile/env/fn.temp_dir.html "fn tempfile::env::temp_dir") ) is unsuitable (is world readable, world writable, managed by a temporary file cleaner, etc.). #### [§](https://docs.rs/tempfile/3.27.0/tempfile/#temporary-file-cleaners) Temporary File Cleaners In the presence of pathological temporary file cleaner, relying on file paths is unsafe because a temporary file cleaner could delete the temporary file which an attacker could then replace. This isn’t an issue for [`tempfile`](https://docs.rs/tempfile/3.27.0/tempfile/fn.tempfile.html "fn tempfile::tempfile") as it doesn’t rely on file paths. However, [`NamedTempFile`](https://docs.rs/tempfile/3.27.0/tempfile/struct.NamedTempFile.html) and temporary directories _do_ rely on file paths for _some_ operations. See the security documentation on the [`NamedTempFile`](https://docs.rs/tempfile/3.27.0/tempfile/struct.NamedTempFile.html) and the [`TempDir`](https://docs.rs/tempfile/3.27.0/tempfile/struct.TempDir.html) types for more information. Mitigation: * This is rarely an issue for short-lived files as temporary file cleaners usually only remove temporary files that haven’t been modified or accessed within many (10-30) days. * Very long lived temporary files should be placed in directories not managed by temporary file cleaners. #### [§](https://docs.rs/tempfile/3.27.0/tempfile/#access-permissions) Access Permissions Temporary _files_ created with this library are private by default on all operating systems. However, temporary _directories_ are created with the default permissions and will therefore be world-readable by default unless the user has changed their umask and/or default temporary directory. #### [§](https://docs.rs/tempfile/3.27.0/tempfile/#denial-of-service) Denial of Service If the file-name randomness ([`Builder::rand_bytes`](https://docs.rs/tempfile/3.27.0/tempfile/struct.Builder.html#method.rand_bytes "method tempfile::Builder::rand_bytes") ) is too small and/or this crate is built without the `getrandom` feature, it may be possible for an attacker to predict the random file names chosen by this library, preventing temporary file creation by creating temporary files with these predicted file names. By default, this library mitigates this denial of service attack by: 1. Defaulting to 6 random characters per temporary file forcing an attacker to create billions of files before random collisions are expected (at which point you probably have larger problems). 2. Re-seeding the random filename generator from system randomness after 3 failed attempts to create temporary a file (when the `getrandom` feature is enabled as it is by default on all major platforms). ### [§](https://docs.rs/tempfile/3.27.0/tempfile/#early-drop-pitfall) Early drop pitfall Because `TempDir` and `NamedTempFile` rely on their destructors for cleanup, this can lead to an unexpected early removal of the directory/file, usually when working with APIs which are generic over `AsRef`. Consider the following example: use tempfile::tempdir; use std::process::Command; // Create a directory inside of `env::temp_dir()`. let temp_dir = tempdir()?; // Spawn the `touch` command inside the temporary directory and collect the exit status // Note that `temp_dir` is **not** moved into `current_dir`, but passed as a reference let exit_status = Command::new("touch").arg("tmp").current_dir(&temp_dir).status()?; assert!(exit_status.success()); This works because a reference to `temp_dir` is passed to `current_dir`, resulting in the destructor of `temp_dir` being run after the `Command` has finished execution. Moving the `TempDir` into the `current_dir` call would result in the `TempDir` being converted into an internal representation, with the original value being dropped and the directory thus being deleted, before the command can be executed. The `touch` command would fail with an `No such file or directory` error. ### [§](https://docs.rs/tempfile/3.27.0/tempfile/#examples) Examples Create a temporary file and write some data into it: use tempfile::tempfile; use std::io::Write; // Create a file inside of `env::temp_dir()`. let mut file = tempfile()?; writeln!(file, "Brian was here. Briefly.")?; Create a named temporary file and open an independent file handle: use tempfile::NamedTempFile; use std::io::{Write, Read}; let text = "Brian was here. Briefly."; // Create a file inside of `env::temp_dir()`. let mut file1 = NamedTempFile::new()?; // Re-open it. let mut file2 = file1.reopen()?; // Write some test data to the first handle. file1.write_all(text.as_bytes())?; // Read the test data using the second handle. let mut buf = String::new(); file2.read_to_string(&mut buf)?; assert_eq!(buf, text); Create a temporary directory and add a file to it: use tempfile::tempdir; use std::fs::File; use std::io::Write; // Create a directory inside of `env::temp_dir()`. let dir = tempdir()?; let file_path = dir.path().join("my-temporary-note.txt"); let mut file = File::create(file_path)?; writeln!(file, "Brian was here. Briefly.")?; // By closing the `TempDir` explicitly, we can check that it has // been deleted successfully. If we don't close it explicitly, // the directory will still be deleted when `dir` goes out // of scope, but we won't know whether deleting the directory // succeeded. drop(file); dir.close()?; Modules[§](https://docs.rs/tempfile/3.27.0/tempfile/#modules) -------------------------------------------------------------- [env](https://docs.rs/tempfile/3.27.0/tempfile/env/index.html "mod tempfile::env") Structs[§](https://docs.rs/tempfile/3.27.0/tempfile/#structs) -------------------------------------------------------------- [Builder](https://docs.rs/tempfile/3.27.0/tempfile/struct.Builder.html "struct tempfile::Builder") Create a new temporary file or directory with custom options. [NamedTempFile](https://docs.rs/tempfile/3.27.0/tempfile/struct.NamedTempFile.html "struct tempfile::NamedTempFile") A named temporary file. [PathPersistError](https://docs.rs/tempfile/3.27.0/tempfile/struct.PathPersistError.html "struct tempfile::PathPersistError") Error returned when persisting a temporary file path fails. [PersistError](https://docs.rs/tempfile/3.27.0/tempfile/struct.PersistError.html "struct tempfile::PersistError") Error returned when persisting a temporary file fails. [SpooledTempFile](https://docs.rs/tempfile/3.27.0/tempfile/struct.SpooledTempFile.html "struct tempfile::SpooledTempFile") An object that behaves like a regular temporary file, but keeps data in memory until it reaches a configured size, at which point the data is written to a temporary file on disk, and further operations use the file on disk. [TempDir](https://docs.rs/tempfile/3.27.0/tempfile/struct.TempDir.html "struct tempfile::TempDir") A directory in the filesystem that is automatically deleted when it goes out of scope. [TempPath](https://docs.rs/tempfile/3.27.0/tempfile/struct.TempPath.html "struct tempfile::TempPath") A path to a named temporary file without an open file handle. Enums[§](https://docs.rs/tempfile/3.27.0/tempfile/#enums) ---------------------------------------------------------- [SpooledData](https://docs.rs/tempfile/3.27.0/tempfile/enum.SpooledData.html "enum tempfile::SpooledData") A wrapper for the two states of a [`SpooledTempFile`](https://docs.rs/tempfile/3.27.0/tempfile/struct.SpooledTempFile.html "struct tempfile::SpooledTempFile") . Either: Functions[§](https://docs.rs/tempfile/3.27.0/tempfile/#functions) ------------------------------------------------------------------ [spooled\_tempfile](https://docs.rs/tempfile/3.27.0/tempfile/fn.spooled_tempfile.html "fn tempfile::spooled_tempfile") Create a new [`SpooledTempFile`](https://docs.rs/tempfile/3.27.0/tempfile/struct.SpooledTempFile.html "struct tempfile::SpooledTempFile") . Also see [`spooled_tempfile_in`](https://docs.rs/tempfile/3.27.0/tempfile/fn.spooled_tempfile_in.html "fn tempfile::spooled_tempfile_in") . [spooled\_tempfile\_in](https://docs.rs/tempfile/3.27.0/tempfile/fn.spooled_tempfile_in.html "fn tempfile::spooled_tempfile_in") Construct a new [`SpooledTempFile`](https://docs.rs/tempfile/3.27.0/tempfile/struct.SpooledTempFile.html "struct tempfile::SpooledTempFile") , backed by a file in the specified directory. Use this when, e.g., you need the temporary file to be backed by a specific filesystem (e.g., when your default temporary directory is in-memory). Also see [`spooled_tempfile`](https://docs.rs/tempfile/3.27.0/tempfile/fn.spooled_tempfile.html "fn tempfile::spooled_tempfile") . [tempdir](https://docs.rs/tempfile/3.27.0/tempfile/fn.tempdir.html "fn tempfile::tempdir") Create a new temporary directory. Also see [`tempdir_in`](https://docs.rs/tempfile/3.27.0/tempfile/fn.tempdir_in.html "fn tempfile::tempdir_in") . [tempdir\_in](https://docs.rs/tempfile/3.27.0/tempfile/fn.tempdir_in.html "fn tempfile::tempdir_in") Create a new temporary directory in a specific directory. Also see [`tempdir`](https://docs.rs/tempfile/3.27.0/tempfile/struct.TempDir.html) . [tempfile](https://docs.rs/tempfile/3.27.0/tempfile/fn.tempfile.html "fn tempfile::tempfile") Create a new temporary file. Also see [`tempfile_in`](https://docs.rs/tempfile/3.27.0/tempfile/fn.tempfile_in.html "fn tempfile::tempfile_in") . [tempfile\_in](https://docs.rs/tempfile/3.27.0/tempfile/fn.tempfile_in.html "fn tempfile::tempfile_in") Create a new temporary file in the specified directory. Also see [`tempfile`](https://docs.rs/tempfile/3.27.0/tempfile/fn.tempfile.html "fn tempfile::tempfile") . --- # lz4_flex - Rust [Docs.rs](https://docs.rs/) * [lz4\_flex-0.13.0](https://docs.rs/lz4_flex/0.13.0/lz4_flex/# "Fastest LZ4 implementation in Rust, no unsafe by default.") * lz4\_flex 0.13.0 * [Docs.rs crate page](https://docs.rs/crate/lz4_flex/0.13.0 "See lz4_flex in docs.rs") * [MIT](https://spdx.org/licenses/MIT) * Links * [Homepage](https://github.com/pseitz/lz4_flex) * [Repository](https://github.com/pseitz/lz4_flex) * [crates.io](https://crates.io/crates/lz4_flex "See lz4_flex in crates.io") * [Source](https://docs.rs/crate/lz4_flex/0.13.0/source/ "Browse source of lz4_flex-0.13.0") * Owners * [PSeitz](https://crates.io/users/PSeitz) * Dependencies * * [twox-hash ^2.0.0 _normal_ _optional_](https://docs.rs/twox-hash/^2.0.0/) * [binggan ^0.14.0 _dev_](https://docs.rs/binggan/^0.14.0/) * [jemallocator ^0.5.4 _dev_](https://docs.rs/jemallocator/^0.5.4/) * [lz4-compress ^0.1.1 _dev_](https://docs.rs/lz4-compress/^0.1.1/) * [lzzzz ^2.0.0 _dev_](https://docs.rs/lzzzz/^2.0.0/) * [more-asserts ^0.3.1 _dev_](https://docs.rs/more-asserts/^0.3.1/) * [proptest ^1.0.0 _dev_](https://docs.rs/proptest/^1.0.0/) * [serde\_json ^1.0.91 _dev_](https://docs.rs/serde_json/^1.0.91/) * [snap ^1.1.0 _dev_](https://docs.rs/snap/^1.1.0/) * Versions * [**100%** of the crate is documented](https://docs.rs/crate/lz4_flex/0.13.0) * [Platform](https://docs.rs/lz4_flex/0.13.0/lz4_flex/#) * [aarch64-apple-darwin](https://docs.rs/crate/lz4_flex/0.13.0/target-redirect/aarch64-apple-darwin/lz4_flex/) * [aarch64-unknown-linux-gnu](https://docs.rs/crate/lz4_flex/0.13.0/target-redirect/aarch64-unknown-linux-gnu/lz4_flex/) * [i686-pc-windows-msvc](https://docs.rs/crate/lz4_flex/0.13.0/target-redirect/i686-pc-windows-msvc/lz4_flex/) * [x86\_64-pc-windows-msvc](https://docs.rs/crate/lz4_flex/0.13.0/target-redirect/x86_64-pc-windows-msvc/lz4_flex/) * [x86\_64-unknown-linux-gnu](https://docs.rs/crate/lz4_flex/0.13.0/target-redirect/lz4_flex/) * [Feature flags](https://docs.rs/crate/lz4_flex/0.13.0/features "Browse available feature flags of lz4_flex-0.13.0") * [docs.rs](https://docs.rs/lz4_flex/0.13.0/lz4_flex/#) * [About docs.rs](https://docs.rs/about) * [Badges](https://docs.rs/about/badges) * [Builds](https://docs.rs/about/builds) * [Metadata](https://docs.rs/about/metadata) * [Shorthand URLs](https://docs.rs/about/redirections) * [Download](https://docs.rs/about/download) * [Rustdoc JSON](https://docs.rs/about/rustdoc-json) * [Build queue](https://docs.rs/releases/queue) * [Privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#docs.rs) * [Rust](https://docs.rs/lz4_flex/0.13.0/lz4_flex/#) * [Rust website](https://www.rust-lang.org/) * [The Book](https://doc.rust-lang.org/book/) * [Standard Library API Reference](https://doc.rust-lang.org/std/) * [Rust by Example](https://doc.rust-lang.org/rust-by-example/) * [The Cargo Guide](https://doc.rust-lang.org/cargo/guide/) * [Clippy Documentation](https://doc.rust-lang.org/nightly/clippy) [Skip to main content](https://docs.rs/lz4_flex/0.13.0/lz4_flex/#main-content) [Crate lz4\_flex](https://docs.rs/lz4_flex/0.13.0/lz4_flex/#) -------------------------------------------------------------- Crate lz4\_flex Copy item path ============================== [Source](https://docs.rs/lz4_flex/0.13.0/src/lz4_flex/lib.rs.html#1-111) Expand description Pure Rust, high performance implementation of LZ4 compression. A detailed explanation of the algorithm can be found [here](http://ticki.github.io/blog/how-lz4-works/) . [§](https://docs.rs/lz4_flex/0.13.0/lz4_flex/#overview) Overview ---------------------------------------------------------------- This crate provides two ways to use lz4. The first way is through the [`frame::FrameDecoder`](https://docs.rs/lz4_flex/0.13.0/lz4_flex/frame/struct.FrameDecoder.html) and [`frame::FrameEncoder`](https://docs.rs/lz4_flex/0.13.0/lz4_flex/frame/struct.FrameEncoder.html) types, which implement the `std::io::Read` and `std::io::Write` traits with the lz4 frame format. Unless you have a specific reason to the contrary, you should only use the lz4 frame format. Specifically, the lz4 frame format permits streaming compression or decompression. The second way is through the [`decompress_size_prepended`](https://docs.rs/lz4_flex/0.13.0/lz4_flex/block/fn.decompress_size_prepended.html) and [`compress_prepend_size`](https://docs.rs/lz4_flex/0.13.0/lz4_flex/block/fn.compress_prepend_size.html) functions. These functions provide access to the lz4 block format, and don’t support a streaming interface directly. You should only use these types if you know you specifically need the lz4 block format. [§](https://docs.rs/lz4_flex/0.13.0/lz4_flex/#example-compress-data-on-stdin-with-frame-format) Example: compress data on `stdin` with frame format --------------------------------------------------------------------------------------------------------------------------------------------------- This program reads data from `stdin`, compresses it and emits it to `stdout`. This example can be found in `examples/compress.rs`: use std::io; let stdin = io::stdin(); let stdout = io::stdout(); let mut rdr = stdin.lock(); // Wrap the stdout writer in a LZ4 Frame writer. let mut wtr = lz4_flex::frame::FrameEncoder::new(stdout.lock()); io::copy(&mut rdr, &mut wtr).expect("I/O operation failed"); wtr.finish().unwrap(); [§](https://docs.rs/lz4_flex/0.13.0/lz4_flex/#example-decompress-data-on-stdin-with-frame-format) Example: decompress data on `stdin` with frame format ------------------------------------------------------------------------------------------------------------------------------------------------------- This program reads data from `stdin`, decompresses it and emits it to `stdout`. This example can be found in `examples/decompress.rs`: use std::io; let stdin = io::stdin(); let stdout = io::stdout(); // Wrap the stdin reader in a LZ4 FrameDecoder. let mut rdr = lz4_flex::frame::FrameDecoder::new(stdin.lock()); let mut wtr = stdout.lock(); io::copy(&mut rdr, &mut wtr).expect("I/O operation failed"); [§](https://docs.rs/lz4_flex/0.13.0/lz4_flex/#example-block-format-roundtrip) Example: block format roundtrip ------------------------------------------------------------------------------------------------------------- use lz4_flex::block::{compress_prepend_size, decompress_size_prepended}; let input: &[u8] = b"Hello people, what's up?"; let compressed = compress_prepend_size(input); let uncompressed = decompress_size_prepended(&compressed).unwrap(); assert_eq!(input, uncompressed); ### [§](https://docs.rs/lz4_flex/0.13.0/lz4_flex/#feature-flags) Feature Flags * `safe-encode` uses only safe rust for encode. _enabled by default_ * `safe-decode` uses only safe rust for encode. _enabled by default_ * `frame` support for LZ4 frame format. _implies `std`, enabled by default_ * `std` enables dependency on the standard library. _enabled by default_ For maximum performance use `no-default-features`. For no\_std support only the [`block format`](https://docs.rs/lz4_flex/0.13.0/lz4_flex/block/index.html) is supported. Re-exports[§](https://docs.rs/lz4_flex/0.13.0/lz4_flex/#reexports) ------------------------------------------------------------------- `pub use block::compress;` `pub use block::[compress](https://docs.rs/lz4_flex/0.13.0/lz4_flex/block/fn.compress.html "fn lz4_flex::block::compress") ;` `pub use block::[compress_into](https://docs.rs/lz4_flex/0.13.0/lz4_flex/block/fn.compress_into.html "fn lz4_flex::block::compress_into") ;` `pub use block::[compress_prepend_size](https://docs.rs/lz4_flex/0.13.0/lz4_flex/block/fn.compress_prepend_size.html "fn lz4_flex::block::compress_prepend_size") ;` `pub use block::decompress;` `pub use block::[decompress](https://docs.rs/lz4_flex/0.13.0/lz4_flex/block/fn.decompress.html "fn lz4_flex::block::decompress") ;` `pub use block::[decompress_into](https://docs.rs/lz4_flex/0.13.0/lz4_flex/block/fn.decompress_into.html "fn lz4_flex::block::decompress_into") ;` `pub use block::[decompress_size_prepended](https://docs.rs/lz4_flex/0.13.0/lz4_flex/block/fn.decompress_size_prepended.html "fn lz4_flex::block::decompress_size_prepended") ;` Modules[§](https://docs.rs/lz4_flex/0.13.0/lz4_flex/#modules) -------------------------------------------------------------- [block](https://docs.rs/lz4_flex/0.13.0/lz4_flex/block/index.html "mod lz4_flex::block") LZ4 Block Format [frame](https://docs.rs/lz4_flex/0.13.0/lz4_flex/frame/index.html "mod lz4_flex::frame") `frame` LZ4 Frame Format --- # num_bigint - Rust [Docs.rs](https://docs.rs/) * [num-bigint-0.4.6](https://docs.rs/num-bigint/0.4.6/num_bigint/# "Big integer implementation for Rust") * num-bigint 0.4.6 * [Docs.rs crate page](https://docs.rs/crate/num-bigint/0.4.6 "See num-bigint in docs.rs") * [MIT](https://spdx.org/licenses/MIT) OR [Apache-2.0](https://spdx.org/licenses/Apache-2.0) * Links * [Homepage](https://github.com/rust-num/num-bigint) * [Repository](https://github.com/rust-num/num-bigint) * [crates.io](https://crates.io/crates/num-bigint "See num-bigint in crates.io") * [Source](https://docs.rs/crate/num-bigint/0.4.6/source/ "Browse source of num-bigint-0.4.6") * Owners * [cuviper](https://crates.io/users/cuviper) * Dependencies * * [arbitrary ^1 _normal_ _optional_](https://docs.rs/arbitrary/^1/) * [num-integer ^0.1.46 _normal_](https://docs.rs/num-integer/^0.1.46/) * [num-traits ^0.2.18 _normal_](https://docs.rs/num-traits/^0.2.18/) * [quickcheck ^1 _normal_ _optional_](https://docs.rs/quickcheck/^1/) * [rand ^0.8 _normal_ _optional_](https://docs.rs/rand/^0.8/) * [serde ^1.0 _normal_ _optional_](https://docs.rs/serde/^1.0/) * Versions * [**84%** of the crate is documented](https://docs.rs/crate/num-bigint/0.4.6) * [Platform](https://docs.rs/num-bigint/0.4.6/num_bigint/#) * [aarch64-apple-darwin](https://docs.rs/crate/num-bigint/0.4.6/target-redirect/aarch64-apple-darwin/num_bigint/) * [aarch64-unknown-linux-gnu](https://docs.rs/crate/num-bigint/0.4.6/target-redirect/aarch64-unknown-linux-gnu/num_bigint/) * [i686-pc-windows-msvc](https://docs.rs/crate/num-bigint/0.4.6/target-redirect/i686-pc-windows-msvc/num_bigint/) * [x86\_64-pc-windows-msvc](https://docs.rs/crate/num-bigint/0.4.6/target-redirect/x86_64-pc-windows-msvc/num_bigint/) * [x86\_64-unknown-linux-gnu](https://docs.rs/crate/num-bigint/0.4.6/target-redirect/num_bigint/) * [Feature flags](https://docs.rs/crate/num-bigint/0.4.6/features "Browse available feature flags of num-bigint-0.4.6") * [docs.rs](https://docs.rs/num-bigint/0.4.6/num_bigint/#) * [About docs.rs](https://docs.rs/about) * [Badges](https://docs.rs/about/badges) * [Builds](https://docs.rs/about/builds) * [Metadata](https://docs.rs/about/metadata) * [Shorthand URLs](https://docs.rs/about/redirections) * [Download](https://docs.rs/about/download) * [Rustdoc JSON](https://docs.rs/about/rustdoc-json) * [Build queue](https://docs.rs/releases/queue) * [Privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#docs.rs) * [Rust](https://docs.rs/num-bigint/0.4.6/num_bigint/#) * [Rust website](https://www.rust-lang.org/) * [The Book](https://doc.rust-lang.org/book/) * [Standard Library API Reference](https://doc.rust-lang.org/std/) * [Rust by Example](https://doc.rust-lang.org/rust-by-example/) * [The Cargo Guide](https://doc.rust-lang.org/cargo/guide/) * [Clippy Documentation](https://doc.rust-lang.org/nightly/clippy) [Crate num\_bigint](https://docs.rs/num-bigint/0.4.6/num_bigint/#) ------------------------------------------------------------------- Crate num\_bigint Copy item path ================================ [Source](https://docs.rs/num-bigint/0.4.6/src/num_bigint/lib.rs.html#11-268) Expand description Big Integer Types for Rust * A [`BigUint`](https://docs.rs/num-bigint/0.4.6/num_bigint/struct.BigUint.html "struct num_bigint::BigUint") is unsigned and represented as a vector of digits. * A [`BigInt`](https://docs.rs/num-bigint/0.4.6/num_bigint/struct.BigInt.html "struct num_bigint::BigInt") is signed and is a combination of [`BigUint`](https://docs.rs/num-bigint/0.4.6/num_bigint/struct.BigUint.html "struct num_bigint::BigUint") and [`Sign`](https://docs.rs/num-bigint/0.4.6/num_bigint/enum.Sign.html "enum num_bigint::Sign") . Common numerical operations are overloaded, so we can treat them the same way we treat other numbers. ### [§](https://docs.rs/num-bigint/0.4.6/num_bigint/#example) Example use num_bigint::BigUint; use num_traits::One; // Calculate large fibonacci numbers. fn fib(n: usize) -> BigUint { let mut f0 = BigUint::ZERO; let mut f1 = BigUint::one(); for _ in 0..n { let f2 = f0 + &f1; f0 = f1; f1 = f2; } f0 } // This is a very large number. println!("fib(1000) = {}", fib(1000)); It’s easy to generate large random numbers: [ⓘ](https://docs.rs/num-bigint/0.4.6/num_bigint/# "This example is not tested") use num_bigint::{ToBigInt, RandBigInt}; let mut rng = rand::thread_rng(); let a = rng.gen_bigint(1000); let low = -10000.to_bigint().unwrap(); let high = 10000.to_bigint().unwrap(); let b = rng.gen_bigint_range(&low, &high); // Probably an even larger number. println!("{}", a * b); See the “Features” section for instructions for enabling random number generation. ### [§](https://docs.rs/num-bigint/0.4.6/num_bigint/#features) Features The `std` crate feature is enabled by default, which enables [`std::error::Error`](https://doc.rust-lang.org/nightly/core/error/trait.Error.html "trait core::error::Error") implementations and some internal use of floating point approximations. This can be disabled by depending on `num-bigint` with `default-features = false`. Either way, the `alloc` crate is always required for heap allocation of the `BigInt`/`BigUint` digits. #### [§](https://docs.rs/num-bigint/0.4.6/num_bigint/#random-generation) Random Generation `num-bigint` supports the generation of random big integers when the `rand` feature is enabled. To enable it include rand as rand = "0.8" num-bigint = { version = "0.4", features = ["rand"] } Note that you must use the version of `rand` that `num-bigint` is compatible with: `0.8`. #### [§](https://docs.rs/num-bigint/0.4.6/num_bigint/#arbitrary-big-integers) Arbitrary Big Integers `num-bigint` supports `arbitrary` and `quickcheck` features to implement [`arbitrary::Arbitrary`](https://docs.rs/arbitrary/1.4.2/x86_64-unknown-linux-gnu/arbitrary/trait.Arbitrary.html "trait arbitrary::Arbitrary") and [`quickcheck::Arbitrary`](https://docs.rs/quickcheck/1.0.3/x86_64-unknown-linux-gnu/quickcheck/arbitrary/trait.Arbitrary.html "trait quickcheck::arbitrary::Arbitrary") , respectively, for both `BigInt` and `BigUint`. These are useful for fuzzing and other forms of randomized testing. #### [§](https://docs.rs/num-bigint/0.4.6/num_bigint/#serialization) Serialization The `serde` feature adds implementations of [`Serialize`](https://docs.rs/serde_core/1.0.228/x86_64-unknown-linux-gnu/serde_core/ser/trait.Serialize.html "trait serde_core::ser::Serialize") and [`Deserialize`](https://docs.rs/serde_core/1.0.228/x86_64-unknown-linux-gnu/serde_core/de/trait.Deserialize.html "trait serde_core::de::Deserialize") for both `BigInt` and `BigUint`. Their serialized data is generated portably, regardless of platform differences like the internal digit size. ### [§](https://docs.rs/num-bigint/0.4.6/num_bigint/#compatibility) Compatibility The `num-bigint` crate is tested for rustc 1.60 and greater. Structs[§](https://docs.rs/num-bigint/0.4.6/num_bigint/#structs) ----------------------------------------------------------------- [BigInt](https://docs.rs/num-bigint/0.4.6/num_bigint/struct.BigInt.html "struct num_bigint::BigInt") A big signed integer type. [BigUint](https://docs.rs/num-bigint/0.4.6/num_bigint/struct.BigUint.html "struct num_bigint::BigUint") A big unsigned integer type. [ParseBigIntError](https://docs.rs/num-bigint/0.4.6/num_bigint/struct.ParseBigIntError.html "struct num_bigint::ParseBigIntError") [RandomBits](https://docs.rs/num-bigint/0.4.6/num_bigint/struct.RandomBits.html "struct num_bigint::RandomBits") `rand` A random distribution for [`BigUint`](https://docs.rs/num-bigint/0.4.6/num_bigint/struct.BigUint.html "struct num_bigint::BigUint") and [`BigInt`](https://docs.rs/num-bigint/0.4.6/num_bigint/struct.BigInt.html "struct num_bigint::BigInt") values of a particular bit size. [TryFromBigIntError](https://docs.rs/num-bigint/0.4.6/num_bigint/struct.TryFromBigIntError.html "struct num_bigint::TryFromBigIntError") The error type returned when a checked conversion regarding big integer fails. [U32Digits](https://docs.rs/num-bigint/0.4.6/num_bigint/struct.U32Digits.html "struct num_bigint::U32Digits") An iterator of `u32` digits representation of a `BigUint` or `BigInt`, ordered least significant digit first. [U64Digits](https://docs.rs/num-bigint/0.4.6/num_bigint/struct.U64Digits.html "struct num_bigint::U64Digits") An iterator of `u64` digits representation of a `BigUint` or `BigInt`, ordered least significant digit first. [UniformBigInt](https://docs.rs/num-bigint/0.4.6/num_bigint/struct.UniformBigInt.html "struct num_bigint::UniformBigInt") `rand` The back-end implementing rand’s [`UniformSampler`](https://docs.rs/rand/0.8.5/x86_64-unknown-linux-gnu/rand/distributions/uniform/trait.UniformSampler.html "trait rand::distributions::uniform::UniformSampler") for [`BigInt`](https://docs.rs/num-bigint/0.4.6/num_bigint/struct.BigInt.html "struct num_bigint::BigInt") . [UniformBigUint](https://docs.rs/num-bigint/0.4.6/num_bigint/struct.UniformBigUint.html "struct num_bigint::UniformBigUint") `rand` The back-end implementing rand’s [`UniformSampler`](https://docs.rs/rand/0.8.5/x86_64-unknown-linux-gnu/rand/distributions/uniform/trait.UniformSampler.html "trait rand::distributions::uniform::UniformSampler") for [`BigUint`](https://docs.rs/num-bigint/0.4.6/num_bigint/struct.BigUint.html "struct num_bigint::BigUint") . Enums[§](https://docs.rs/num-bigint/0.4.6/num_bigint/#enums) ------------------------------------------------------------- [Sign](https://docs.rs/num-bigint/0.4.6/num_bigint/enum.Sign.html "enum num_bigint::Sign") A `Sign` is a [`BigInt`](https://docs.rs/num-bigint/0.4.6/num_bigint/struct.BigInt.html "struct num_bigint::BigInt") ’s composing element. Traits[§](https://docs.rs/num-bigint/0.4.6/num_bigint/#traits) --------------------------------------------------------------- [RandBigInt](https://docs.rs/num-bigint/0.4.6/num_bigint/trait.RandBigInt.html "trait num_bigint::RandBigInt") `rand` A trait for sampling random big integers. [ToBigInt](https://docs.rs/num-bigint/0.4.6/num_bigint/trait.ToBigInt.html "trait num_bigint::ToBigInt") A generic trait for converting a value to a [`BigInt`](https://docs.rs/num-bigint/0.4.6/num_bigint/struct.BigInt.html "struct num_bigint::BigInt") . This may return `None` when converting from `f32` or `f64`, and will always succeed when converting from any integer or unsigned primitive, or [`BigUint`](https://docs.rs/num-bigint/0.4.6/num_bigint/struct.BigUint.html "struct num_bigint::BigUint") . [ToBigUint](https://docs.rs/num-bigint/0.4.6/num_bigint/trait.ToBigUint.html "trait num_bigint::ToBigUint") A generic trait for converting a value to a [`BigUint`](https://docs.rs/num-bigint/0.4.6/num_bigint/struct.BigUint.html "struct num_bigint::BigUint") . --- # owning_ref - Rust [Docs.rs](https://docs.rs/) * [owning\_ref-0.4.1](https://docs.rs/owning_ref/0.4.1/owning_ref/# "A library for creating references that carry their owner with them.") * owning\_ref 0.4.1 * [Docs.rs crate page](https://docs.rs/crate/owning_ref/0.4.1 "See owning_ref in docs.rs") * [MIT](https://spdx.org/licenses/MIT) * Links * [Documentation](http://kimundi.github.io/owning-ref-rs/owning_ref/index.html "Canonical documentation") * [Repository](https://github.com/Kimundi/owning-ref-rs) * [crates.io](https://crates.io/crates/owning_ref "See owning_ref in crates.io") * [Source](https://docs.rs/crate/owning_ref/0.4.1/source/ "Browse source of owning_ref-0.4.1") * Owners * [Kimundi](https://crates.io/users/Kimundi) * [avitex](https://crates.io/users/avitex) * Dependencies * * [stable\_deref\_trait ^1.0.0 _normal_](https://docs.rs/stable_deref_trait/^1.0.0/) * Versions * [**100%** of the crate is documented](https://docs.rs/crate/owning_ref/0.4.1) * [Platform](https://docs.rs/owning_ref/0.4.1/owning_ref/#) * [aarch64-apple-darwin](https://docs.rs/crate/owning_ref/0.4.1/target-redirect/aarch64-apple-darwin/owning_ref/) * [aarch64-unknown-linux-gnu](https://docs.rs/crate/owning_ref/0.4.1/target-redirect/aarch64-unknown-linux-gnu/owning_ref/) * [i686-pc-windows-msvc](https://docs.rs/crate/owning_ref/0.4.1/target-redirect/i686-pc-windows-msvc/owning_ref/) * [x86\_64-pc-windows-msvc](https://docs.rs/crate/owning_ref/0.4.1/target-redirect/x86_64-pc-windows-msvc/owning_ref/) * [x86\_64-unknown-linux-gnu](https://docs.rs/crate/owning_ref/0.4.1/target-redirect/owning_ref/) * [Feature flags](https://docs.rs/crate/owning_ref/0.4.1/features "Browse available feature flags of owning_ref-0.4.1") * [docs.rs](https://docs.rs/owning_ref/0.4.1/owning_ref/#) * [About docs.rs](https://docs.rs/about) * [Badges](https://docs.rs/about/badges) * [Builds](https://docs.rs/about/builds) * [Metadata](https://docs.rs/about/metadata) * [Shorthand URLs](https://docs.rs/about/redirections) * [Download](https://docs.rs/about/download) * [Rustdoc JSON](https://docs.rs/about/rustdoc-json) * [Build queue](https://docs.rs/releases/queue) * [Privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#docs.rs) * [Rust](https://docs.rs/owning_ref/0.4.1/owning_ref/#) * [Rust website](https://www.rust-lang.org/) * [The Book](https://doc.rust-lang.org/book/) * [Standard Library API Reference](https://doc.rust-lang.org/std/) * [Rust by Example](https://doc.rust-lang.org/rust-by-example/) * [The Cargo Guide](https://doc.rust-lang.org/cargo/guide/) * [Clippy Documentation](https://doc.rust-lang.org/nightly/clippy) [Skip to main content](https://docs.rs/owning_ref/0.4.1/owning_ref/#main-content) [Crate owning\_ref](https://docs.rs/owning_ref/0.4.1/owning_ref/#) ------------------------------------------------------------------- Crate owning\_ref Copy item path ================================ [Source](https://docs.rs/owning_ref/0.4.1/src/owning_ref/lib.rs.html#1-2016) Expand description [§](https://docs.rs/owning_ref/0.4.1/owning_ref/#an-owning-reference) An owning reference. ------------------------------------------------------------------------------------------ This crate provides the _owning reference_ types `OwningRef` and `OwningRefMut` that enables it to bundle a reference together with the owner of the data it points to. This allows moving and dropping of a `OwningRef` without needing to recreate the reference. This can sometimes be useful because Rust borrowing rules normally prevent moving a type that has been moved from. For example, this kind of code gets rejected: [ⓘ](https://docs.rs/owning_ref/0.4.1/owning_ref/# "This example is not tested") fn return_owned_and_referenced<'a>() -> (Vec, &'a [u8]) { let v = vec![1, 2, 3, 4]; let s = &v[1..3]; (v, s) } Even though, from a memory-layout point of view, this can be entirely safe if the new location of the vector still lives longer than the lifetime `'a` of the reference because the backing allocation of the vector does not change. This library enables this safe usage by keeping the owner and the reference bundled together in a wrapper type that ensure that lifetime constraint: fn return_owned_and_referenced() -> OwningRef, [u8]> { let v = vec![1, 2, 3, 4]; let or = OwningRef::new(v); let or = or.map(|v| &v[1..3]); or } It works by requiring owner types to dereference to stable memory locations and preventing mutable access to root containers, which in practice requires heap allocation as provided by `Box`, `Rc`, etc. Also provided are typedefs for common owner type combinations, which allow for less verbose type signatures. For example, `BoxRef` instead of `OwningRef, T>`. The crate also provides the more advanced `OwningHandle` type, which allows more freedom in bundling a dependent handle object along with the data it depends on, at the cost of some unsafe needed in the API. See the documentation around `OwningHandle` for more details. [§](https://docs.rs/owning_ref/0.4.1/owning_ref/#examples) Examples ------------------------------------------------------------------- ### [§](https://docs.rs/owning_ref/0.4.1/owning_ref/#basics) Basics extern crate owning_ref; use owning_ref::BoxRef; fn main() { // Create an array owned by a Box. let arr = Box::new([1, 2, 3, 4]) as Box<[i32]>; // Transfer into a BoxRef. let arr: BoxRef<[i32]> = BoxRef::new(arr); assert_eq!(&*arr, &[1, 2, 3, 4]); // We can slice the array without losing ownership or changing type. let arr: BoxRef<[i32]> = arr.map(|arr| &arr[1..3]); assert_eq!(&*arr, &[2, 3]); // Also works for Arc, Rc, String and Vec! } ### [§](https://docs.rs/owning_ref/0.4.1/owning_ref/#caching-a-reference-to-a-struct-field) Caching a reference to a struct field extern crate owning_ref; use owning_ref::BoxRef; fn main() { struct Foo { tag: u32, x: u16, y: u16, z: u16, } let foo = Foo { tag: 1, x: 100, y: 200, z: 300 }; let or = BoxRef::new(Box::new(foo)).map(|foo| { match foo.tag { 0 => &foo.x, 1 => &foo.y, 2 => &foo.z, _ => panic!(), } }); assert_eq!(*or, 200); } ### [§](https://docs.rs/owning_ref/0.4.1/owning_ref/#caching-a-reference-to-an-entry-in-a-vector) Caching a reference to an entry in a vector extern crate owning_ref; use owning_ref::VecRef; fn main() { let v = VecRef::new(vec![1, 2, 3, 4, 5]).map(|v| &v[3]); assert_eq!(*v, 4); } ### [§](https://docs.rs/owning_ref/0.4.1/owning_ref/#caching-a-subslice-of-a-string) Caching a subslice of a String extern crate owning_ref; use owning_ref::StringRef; fn main() { let s = StringRef::new("hello world".to_owned()) .map(|s| s.split(' ').nth(1).unwrap()); assert_eq!(&*s, "world"); } ### [§](https://docs.rs/owning_ref/0.4.1/owning_ref/#reference-counted-slices-that-share-ownership-of-the-backing-storage) Reference counted slices that share ownership of the backing storage extern crate owning_ref; use owning_ref::RcRef; use std::rc::Rc; fn main() { let rc: RcRef<[i32]> = RcRef::new(Rc::new([1, 2, 3, 4]) as Rc<[i32]>); assert_eq!(&*rc, &[1, 2, 3, 4]); let rc_a: RcRef<[i32]> = rc.clone().map(|s| &s[0..2]); let rc_b = rc.clone().map(|s| &s[1..3]); let rc_c = rc.clone().map(|s| &s[2..4]); assert_eq!(&*rc_a, &[1, 2]); assert_eq!(&*rc_b, &[2, 3]); assert_eq!(&*rc_c, &[3, 4]); let rc_c_a = rc_c.clone().map(|s| &s[1]); assert_eq!(&*rc_c_a, &4); } ### [§](https://docs.rs/owning_ref/0.4.1/owning_ref/#atomic-reference-counted-slices-that-share-ownership-of-the-backing-storage) Atomic reference counted slices that share ownership of the backing storage extern crate owning_ref; use owning_ref::ArcRef; use std::sync::Arc; fn main() { use std::thread; fn par_sum(rc: ArcRef<[i32]>) -> i32 { if rc.len() == 0 { return 0; } else if rc.len() == 1 { return rc[0]; } let mid = rc.len() / 2; let left = rc.clone().map(|s| &s[..mid]); let right = rc.map(|s| &s[mid..]); let left = thread::spawn(move || par_sum(left)); let right = thread::spawn(move || par_sum(right)); left.join().unwrap() + right.join().unwrap() } let rc: Arc<[i32]> = Arc::new([1, 2, 3, 4]); let rc: ArcRef<[i32]> = rc.into(); assert_eq!(par_sum(rc), 10); } ### [§](https://docs.rs/owning_ref/0.4.1/owning_ref/#references-into-raii-locks) References into RAII locks extern crate owning_ref; use owning_ref::RefRef; use std::cell::{RefCell, Ref}; fn main() { let refcell = RefCell::new((1, 2, 3, 4)); // Also works with Mutex and RwLock let refref = { let refref = RefRef::new(refcell.borrow()).map(|x| &x.3); assert_eq!(*refref, 4); // We move the RAII lock and the reference to one of // the subfields in the data it guards here: refref }; assert_eq!(*refref, 4); drop(refref); assert_eq!(*refcell.borrow(), (1, 2, 3, 4)); } ### [§](https://docs.rs/owning_ref/0.4.1/owning_ref/#mutable-reference) Mutable reference When the owned container implements `DerefMut`, it is also possible to make a _mutable owning reference_. (E.g. with `Box`, `RefMut`, `MutexGuard`) extern crate owning_ref; use owning_ref::RefMutRefMut; use std::cell::{RefCell, RefMut}; fn main() { let refcell = RefCell::new((1, 2, 3, 4)); let mut refmut_refmut = { let mut refmut_refmut = RefMutRefMut::new(refcell.borrow_mut()).map_mut(|x| &mut x.3); assert_eq!(*refmut_refmut, 4); *refmut_refmut *= 2; refmut_refmut }; assert_eq!(*refmut_refmut, 8); *refmut_refmut *= 2; drop(refmut_refmut); assert_eq!(*refcell.borrow(), (1, 2, 3, 16)); } Structs[§](https://docs.rs/owning_ref/0.4.1/owning_ref/#structs) ----------------------------------------------------------------- [OwningHandle](https://docs.rs/owning_ref/0.4.1/owning_ref/struct.OwningHandle.html "struct owning_ref::OwningHandle") `OwningHandle` is a complement to `OwningRef`. Where `OwningRef` allows consumers to pass around an owned object and a dependent reference, `OwningHandle` contains an owned object and a dependent _object_. [OwningRef](https://docs.rs/owning_ref/0.4.1/owning_ref/struct.OwningRef.html "struct owning_ref::OwningRef") An owning reference. [OwningRefMut](https://docs.rs/owning_ref/0.4.1/owning_ref/struct.OwningRefMut.html "struct owning_ref::OwningRefMut") An mutable owning reference. Traits[§](https://docs.rs/owning_ref/0.4.1/owning_ref/#traits) --------------------------------------------------------------- [CloneStableAddress](https://docs.rs/owning_ref/0.4.1/owning_ref/trait.CloneStableAddress.html "trait owning_ref::CloneStableAddress") An unsafe marker trait for types where clones deref to the same address. This has all the requirements of StableDeref, and additionally requires that after calling clone(), both the old and new value deref to the same address. For example, Rc and Arc implement CloneStableDeref, but Box and Vec do not. [Erased](https://docs.rs/owning_ref/0.4.1/owning_ref/trait.Erased.html "trait owning_ref::Erased") Helper trait for an erased concrete type an owner dereferences to. This is used in form of a trait object for keeping something around to (virtually) call the destructor. [IntoErased](https://docs.rs/owning_ref/0.4.1/owning_ref/trait.IntoErased.html "trait owning_ref::IntoErased") Helper trait for erasing the concrete type of what an owner derferences to, for example `Box -> Box`. This would be unneeded with higher kinded types support in the language. [StableAddress](https://docs.rs/owning_ref/0.4.1/owning_ref/trait.StableAddress.html "trait owning_ref::StableAddress") An unsafe marker trait for types that deref to a stable address, even when moved. For example, this is implemented by Box, Vec, Rc, Arc and String, among others. Even when a Box is moved, the underlying storage remains at a fixed location. [ToHandle](https://docs.rs/owning_ref/0.4.1/owning_ref/trait.ToHandle.html "trait owning_ref::ToHandle") Trait to implement the conversion of owner to handle for common types. [ToHandleMut](https://docs.rs/owning_ref/0.4.1/owning_ref/trait.ToHandleMut.html "trait owning_ref::ToHandleMut") Trait to implement the conversion of owner to mutable handle for common types. Type Aliases[§](https://docs.rs/owning_ref/0.4.1/owning_ref/#types) -------------------------------------------------------------------- [ArcRef](https://docs.rs/owning_ref/0.4.1/owning_ref/type.ArcRef.html "type owning_ref::ArcRef") Typedef of a owning reference that uses a `Arc` as the owner. [BoxRef](https://docs.rs/owning_ref/0.4.1/owning_ref/type.BoxRef.html "type owning_ref::BoxRef") Typedef of a owning reference that uses a `Box` as the owner. [BoxRefMut](https://docs.rs/owning_ref/0.4.1/owning_ref/type.BoxRefMut.html "type owning_ref::BoxRefMut") Typedef of a mutable owning reference that uses a `Box` as the owner. [ErasedArcRef](https://docs.rs/owning_ref/0.4.1/owning_ref/type.ErasedArcRef.html "type owning_ref::ErasedArcRef") Typedef of a owning reference that uses an erased `Arc` as the owner. [ErasedBoxRef](https://docs.rs/owning_ref/0.4.1/owning_ref/type.ErasedBoxRef.html "type owning_ref::ErasedBoxRef") Typedef of a owning reference that uses an erased `Box` as the owner. [ErasedBoxRefMut](https://docs.rs/owning_ref/0.4.1/owning_ref/type.ErasedBoxRefMut.html "type owning_ref::ErasedBoxRefMut") Typedef of a mutable owning reference that uses an erased `Box` as the owner. [ErasedRcRef](https://docs.rs/owning_ref/0.4.1/owning_ref/type.ErasedRcRef.html "type owning_ref::ErasedRcRef") Typedef of a owning reference that uses an erased `Rc` as the owner. [MutexGuardRef](https://docs.rs/owning_ref/0.4.1/owning_ref/type.MutexGuardRef.html "type owning_ref::MutexGuardRef") Typedef of a owning reference that uses a `MutexGuard` as the owner. [MutexGuardRefMut](https://docs.rs/owning_ref/0.4.1/owning_ref/type.MutexGuardRefMut.html "type owning_ref::MutexGuardRefMut") Typedef of a mutable owning reference that uses a `MutexGuard` as the owner. [RcRef](https://docs.rs/owning_ref/0.4.1/owning_ref/type.RcRef.html "type owning_ref::RcRef") Typedef of a owning reference that uses a `Rc` as the owner. [RefMutRef](https://docs.rs/owning_ref/0.4.1/owning_ref/type.RefMutRef.html "type owning_ref::RefMutRef") Typedef of a owning reference that uses a `RefMut` as the owner. [RefMutRefMut](https://docs.rs/owning_ref/0.4.1/owning_ref/type.RefMutRefMut.html "type owning_ref::RefMutRefMut") Typedef of a mutable owning reference that uses a `RefMut` as the owner. [RefRef](https://docs.rs/owning_ref/0.4.1/owning_ref/type.RefRef.html "type owning_ref::RefRef") Typedef of a owning reference that uses a `Ref` as the owner. [RwLockReadGuardRef](https://docs.rs/owning_ref/0.4.1/owning_ref/type.RwLockReadGuardRef.html "type owning_ref::RwLockReadGuardRef") Typedef of a owning reference that uses a `RwLockReadGuard` as the owner. [RwLockWriteGuardRef](https://docs.rs/owning_ref/0.4.1/owning_ref/type.RwLockWriteGuardRef.html "type owning_ref::RwLockWriteGuardRef") Typedef of a owning reference that uses a `RwLockWriteGuard` as the owner. [RwLockWriteGuardRefMut](https://docs.rs/owning_ref/0.4.1/owning_ref/type.RwLockWriteGuardRefMut.html "type owning_ref::RwLockWriteGuardRefMut") Typedef of a mutable owning reference that uses a `RwLockWriteGuard` as the owner. [StringRef](https://docs.rs/owning_ref/0.4.1/owning_ref/type.StringRef.html "type owning_ref::StringRef") Typedef of a owning reference that uses a `String` as the owner. [StringRefMut](https://docs.rs/owning_ref/0.4.1/owning_ref/type.StringRefMut.html "type owning_ref::StringRefMut") Typedef of a mutable owning reference that uses a `String` as the owner. [VecRef](https://docs.rs/owning_ref/0.4.1/owning_ref/type.VecRef.html "type owning_ref::VecRef") Typedef of a owning reference that uses a `Vec` as the owner. [VecRefMut](https://docs.rs/owning_ref/0.4.1/owning_ref/type.VecRefMut.html "type owning_ref::VecRefMut") Typedef of a mutable owning reference that uses a `Vec` as the owner. --- # csv - Rust [Docs.rs](https://docs.rs/) * [csv-1.4.0](https://docs.rs/csv/1.4.0/csv/# "Fast CSV parsing with support for serde.") * csv 1.4.0 * [Docs.rs crate page](https://docs.rs/crate/csv/1.4.0 "See csv in docs.rs") * [Unlicense](https://spdx.org/licenses/Unlicense) /[MIT](https://spdx.org/licenses/MIT) * Links * [Homepage](https://github.com/BurntSushi/rust-csv) * [Repository](https://github.com/BurntSushi/rust-csv) * [crates.io](https://crates.io/crates/csv "See csv in crates.io") * [Source](https://docs.rs/crate/csv/1.4.0/source/ "Browse source of csv-1.4.0") * Owners * [BurntSushi](https://crates.io/users/BurntSushi) * Dependencies * * [csv-core ^0.1.11 _normal_](https://docs.rs/csv-core/^0.1.11/) * [itoa ^1 _normal_](https://docs.rs/itoa/^1/) * [ryu ^1 _normal_](https://docs.rs/ryu/^1/) * [serde\_core ^1.0.221 _normal_](https://docs.rs/serde_core/^1.0.221/) * [bstr ^1.7.0 _dev_](https://docs.rs/bstr/^1.7.0/) * [serde ^1.0.221 _dev_](https://docs.rs/serde/^1.0.221/) * Versions * [**100%** of the crate is documented](https://docs.rs/crate/csv/1.4.0) * [Platform](https://docs.rs/csv/1.4.0/csv/#) * [aarch64-apple-darwin](https://docs.rs/crate/csv/1.4.0/target-redirect/aarch64-apple-darwin/csv/) * [aarch64-unknown-linux-gnu](https://docs.rs/crate/csv/1.4.0/target-redirect/aarch64-unknown-linux-gnu/csv/) * [i686-pc-windows-msvc](https://docs.rs/crate/csv/1.4.0/target-redirect/i686-pc-windows-msvc/csv/) * [x86\_64-pc-windows-msvc](https://docs.rs/crate/csv/1.4.0/target-redirect/x86_64-pc-windows-msvc/csv/) * [x86\_64-unknown-linux-gnu](https://docs.rs/crate/csv/1.4.0/target-redirect/csv/) * [Feature flags](https://docs.rs/crate/csv/1.4.0/features "Browse available feature flags of csv-1.4.0") * [docs.rs](https://docs.rs/csv/1.4.0/csv/#) * [About docs.rs](https://docs.rs/about) * [Badges](https://docs.rs/about/badges) * [Builds](https://docs.rs/about/builds) * [Metadata](https://docs.rs/about/metadata) * [Shorthand URLs](https://docs.rs/about/redirections) * [Download](https://docs.rs/about/download) * [Rustdoc JSON](https://docs.rs/about/rustdoc-json) * [Build queue](https://docs.rs/releases/queue) * [Privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#docs.rs) * [Rust](https://docs.rs/csv/1.4.0/csv/#) * [Rust website](https://www.rust-lang.org/) * [The Book](https://doc.rust-lang.org/book/) * [Standard Library API Reference](https://doc.rust-lang.org/std/) * [Rust by Example](https://doc.rust-lang.org/rust-by-example/) * [The Cargo Guide](https://doc.rust-lang.org/cargo/guide/) * [Clippy Documentation](https://doc.rust-lang.org/nightly/clippy) [Crate csv](https://docs.rs/csv/1.4.0/csv/#) --------------------------------------------- Crate csv Copy item path ======================== [Source](https://docs.rs/csv/1.4.0/src/csv/lib.rs.html#1-310) Expand description The `csv` crate provides a fast and flexible CSV reader and writer, with support for Serde. The [tutorial](https://docs.rs/csv/1.4.0/csv/tutorial/index.html) is a good place to start if you’re new to Rust. The [cookbook](https://docs.rs/csv/1.4.0/csv/cookbook/index.html) will give you a variety of complete Rust programs that do CSV reading and writing. [§](https://docs.rs/csv/1.4.0/csv/#brief-overview) Brief overview ----------------------------------------------------------------- **If you’re new to Rust**, you might find the [tutorial](https://docs.rs/csv/1.4.0/csv/tutorial/index.html) to be a good place to start. The primary types in this crate are [`Reader`](https://docs.rs/csv/1.4.0/csv/struct.Reader.html) and [`Writer`](https://docs.rs/csv/1.4.0/csv/struct.Writer.html) , for reading and writing CSV data respectively. Correspondingly, to support CSV data with custom field or record delimiters (among many other things), you should use either a [`ReaderBuilder`](https://docs.rs/csv/1.4.0/csv/struct.ReaderBuilder.html) or a [`WriterBuilder`](https://docs.rs/csv/1.4.0/csv/struct.WriterBuilder.html) , depending on whether you’re reading or writing CSV data. Unless you’re using Serde, the standard CSV record types are [`StringRecord`](https://docs.rs/csv/1.4.0/csv/struct.StringRecord.html) and [`ByteRecord`](https://docs.rs/csv/1.4.0/csv/struct.ByteRecord.html) . `StringRecord` should be used when you know your data to be valid UTF-8. For data that may be invalid UTF-8, `ByteRecord` is suitable. Finally, the set of errors is described by the [`Error`](https://docs.rs/csv/1.4.0/csv/struct.Error.html) type. The rest of the types in this crate mostly correspond to more detailed errors, position information, configuration knobs or iterator types. [§](https://docs.rs/csv/1.4.0/csv/#setup) Setup ----------------------------------------------- Run `cargo add csv` to add the latest version of the `csv` crate to your Cargo.toml. If you want to use Serde’s custom derive functionality on your custom structs, then run `cargo add serde --features derive` to add the `serde` crate with its `derive` feature enabled to your `Cargo.toml`. [§](https://docs.rs/csv/1.4.0/csv/#example) Example --------------------------------------------------- This example shows how to read CSV data from stdin and print each record to stdout. There are more examples in the [cookbook](https://docs.rs/csv/1.4.0/csv/cookbook/index.html) . use std::{error::Error, io, process}; fn example() -> Result<(), Box> { // Build the CSV reader and iterate over each record. let mut rdr = csv::Reader::from_reader(io::stdin()); for result in rdr.records() { // The iterator yields Result, so we check the // error here. let record = result?; println!("{:?}", record); } Ok(()) } fn main() { if let Err(err) = example() { println!("error running example: {}", err); process::exit(1); } } The above example can be run like so: [ⓘ](https://docs.rs/csv/1.4.0/csv/# "This example is not tested") $ git clone git://github.com/BurntSushi/rust-csv $ cd rust-csv $ cargo run --example cookbook-read-basic < examples/data/smallpop.csv [§](https://docs.rs/csv/1.4.0/csv/#example-with-serde) Example with Serde ------------------------------------------------------------------------- This example shows how to read CSV data from stdin into your own custom struct. By default, the member names of the struct are matched with the values in the header record of your CSV data. use std::{error::Error, io, process}; #[derive(Debug, serde::Deserialize)] struct Record { city: String, region: String, country: String, population: Option, } fn example() -> Result<(), Box> { let mut rdr = csv::Reader::from_reader(io::stdin()); for result in rdr.deserialize() { // Notice that we need to provide a type hint for automatic // deserialization. let record: Record = result?; println!("{:?}", record); } Ok(()) } fn main() { if let Err(err) = example() { println!("error running example: {}", err); process::exit(1); } } The above example can be run like so: [ⓘ](https://docs.rs/csv/1.4.0/csv/# "This example is not tested") $ git clone git://github.com/BurntSushi/rust-csv $ cd rust-csv $ cargo run --example cookbook-read-serde < examples/data/smallpop.csv Modules[§](https://docs.rs/csv/1.4.0/csv/#modules) --------------------------------------------------- [cookbook](https://docs.rs/csv/1.4.0/csv/cookbook/index.html "mod csv::cookbook") A cookbook of examples for CSV reading and writing. [tutorial](https://docs.rs/csv/1.4.0/csv/tutorial/index.html "mod csv::tutorial") A tutorial for handling CSV data in Rust. Structs[§](https://docs.rs/csv/1.4.0/csv/#structs) --------------------------------------------------- [ByteRecord](https://docs.rs/csv/1.4.0/csv/struct.ByteRecord.html "struct csv::ByteRecord") A single CSV record stored as raw bytes. [ByteRecordIter](https://docs.rs/csv/1.4.0/csv/struct.ByteRecordIter.html "struct csv::ByteRecordIter") A double-ended iterator over the fields in a byte record. [ByteRecordsIntoIter](https://docs.rs/csv/1.4.0/csv/struct.ByteRecordsIntoIter.html "struct csv::ByteRecordsIntoIter") An owned iterator over records as raw bytes. [ByteRecordsIter](https://docs.rs/csv/1.4.0/csv/struct.ByteRecordsIter.html "struct csv::ByteRecordsIter") A borrowed iterator over records as raw bytes. [DeserializeError](https://docs.rs/csv/1.4.0/csv/struct.DeserializeError.html "struct csv::DeserializeError") An Serde deserialization error. [DeserializeRecordsIntoIter](https://docs.rs/csv/1.4.0/csv/struct.DeserializeRecordsIntoIter.html "struct csv::DeserializeRecordsIntoIter") An owned iterator over deserialized records. [DeserializeRecordsIter](https://docs.rs/csv/1.4.0/csv/struct.DeserializeRecordsIter.html "struct csv::DeserializeRecordsIter") A borrowed iterator over deserialized records. [Error](https://docs.rs/csv/1.4.0/csv/struct.Error.html "struct csv::Error") An error that can occur when processing CSV data. [FromUtf8Error](https://docs.rs/csv/1.4.0/csv/struct.FromUtf8Error.html "struct csv::FromUtf8Error") A UTF-8 validation error during record conversion. [IntoInnerError](https://docs.rs/csv/1.4.0/csv/struct.IntoInnerError.html "struct csv::IntoInnerError") `IntoInnerError` occurs when consuming a `Writer` fails. [Position](https://docs.rs/csv/1.4.0/csv/struct.Position.html "struct csv::Position") A position in CSV data. [Reader](https://docs.rs/csv/1.4.0/csv/struct.Reader.html "struct csv::Reader") A already configured CSV reader. [ReaderBuilder](https://docs.rs/csv/1.4.0/csv/struct.ReaderBuilder.html "struct csv::ReaderBuilder") Builds a CSV reader with various configuration knobs. [StringRecord](https://docs.rs/csv/1.4.0/csv/struct.StringRecord.html "struct csv::StringRecord") A single CSV record stored as valid UTF-8 bytes. [StringRecordIter](https://docs.rs/csv/1.4.0/csv/struct.StringRecordIter.html "struct csv::StringRecordIter") An iterator over the fields in a string record. [StringRecordsIntoIter](https://docs.rs/csv/1.4.0/csv/struct.StringRecordsIntoIter.html "struct csv::StringRecordsIntoIter") An owned iterator over records as strings. [StringRecordsIter](https://docs.rs/csv/1.4.0/csv/struct.StringRecordsIter.html "struct csv::StringRecordsIter") A borrowed iterator over records as strings. [Utf8Error](https://docs.rs/csv/1.4.0/csv/struct.Utf8Error.html "struct csv::Utf8Error") A UTF-8 validation error. [Writer](https://docs.rs/csv/1.4.0/csv/struct.Writer.html "struct csv::Writer") An already configured CSV writer. [WriterBuilder](https://docs.rs/csv/1.4.0/csv/struct.WriterBuilder.html "struct csv::WriterBuilder") Builds a CSV writer with various configuration knobs. Enums[§](https://docs.rs/csv/1.4.0/csv/#enums) ----------------------------------------------- [DeserializeErrorKind](https://docs.rs/csv/1.4.0/csv/enum.DeserializeErrorKind.html "enum csv::DeserializeErrorKind") The type of a Serde deserialization error. [ErrorKind](https://docs.rs/csv/1.4.0/csv/enum.ErrorKind.html "enum csv::ErrorKind") The specific type of an error. [QuoteStyle](https://docs.rs/csv/1.4.0/csv/enum.QuoteStyle.html "enum csv::QuoteStyle") The quoting style to use when writing CSV data. [Terminator](https://docs.rs/csv/1.4.0/csv/enum.Terminator.html "enum csv::Terminator") A record terminator. [Trim](https://docs.rs/csv/1.4.0/csv/enum.Trim.html "enum csv::Trim") The whitespace preservation behaviour when reading CSV data. Functions[§](https://docs.rs/csv/1.4.0/csv/#functions) ------------------------------------------------------- [invalid\_option](https://docs.rs/csv/1.4.0/csv/fn.invalid_option.html "fn csv::invalid_option") A custom Serde deserializer for possibly invalid `Option` fields. Type Aliases[§](https://docs.rs/csv/1.4.0/csv/#types) ------------------------------------------------------ [Result](https://docs.rs/csv/1.4.0/csv/type.Result.html "type csv::Result") A type alias for `Result`. --- # Field in arrow_schema - Rust [Docs.rs](https://docs.rs/) * [arrow-schema-58.1.0](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html# "Defines the logical types for arrow arrays") * arrow-schema 58.1.0 * [Docs.rs crate page](https://docs.rs/crate/arrow-schema/58.1.0 "See arrow-schema in docs.rs") * [Apache-2.0](https://spdx.org/licenses/Apache-2.0) * Links * [Homepage](https://github.com/apache/arrow-rs) * [Repository](https://github.com/apache/arrow-rs) * [crates.io](https://crates.io/crates/arrow-schema "See arrow-schema in crates.io") * [Source](https://docs.rs/crate/arrow-schema/58.1.0/source/ "Browse source of arrow-schema-58.1.0") * Owners * [andygrove](https://crates.io/users/andygrove) * [xhochy](https://crates.io/users/xhochy) * [nevi-me](https://crates.io/users/nevi-me) * [alamb](https://crates.io/users/alamb) * [tustvold](https://crates.io/users/tustvold) * Dependencies * * [bitflags ^2.0.0 _normal_ _optional_](https://docs.rs/bitflags/^2.0.0/) * [serde ^1.0 _normal_ _optional_](https://docs.rs/serde/^1.0/) * [serde\_core ^1.0 _normal_ _optional_](https://docs.rs/serde_core/^1.0/) * [serde\_json ^1.0 _normal_ _optional_](https://docs.rs/serde_json/^1.0/) * [criterion ^0.8.0 _dev_](https://docs.rs/criterion/^0.8.0/) * [insta ^1.46.3 _dev_](https://docs.rs/insta/^1.46.3/) * [postcard ^1.0.10 _dev_](https://docs.rs/postcard/^1.0.10/) * Versions * [**100%** of the crate is documented](https://docs.rs/crate/arrow-schema/58.1.0) * [Platform](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#) * [aarch64-apple-darwin](https://docs.rs/crate/arrow-schema/58.1.0/target-redirect/aarch64-apple-darwin/arrow_schema/struct.Field.html) * [aarch64-unknown-linux-gnu](https://docs.rs/crate/arrow-schema/58.1.0/target-redirect/aarch64-unknown-linux-gnu/arrow_schema/struct.Field.html) * [i686-pc-windows-msvc](https://docs.rs/crate/arrow-schema/58.1.0/target-redirect/i686-pc-windows-msvc/arrow_schema/struct.Field.html) * [x86\_64-pc-windows-msvc](https://docs.rs/crate/arrow-schema/58.1.0/target-redirect/x86_64-pc-windows-msvc/arrow_schema/struct.Field.html) * [x86\_64-unknown-linux-gnu](https://docs.rs/crate/arrow-schema/58.1.0/target-redirect/arrow_schema/struct.Field.html) * [Feature flags](https://docs.rs/crate/arrow-schema/58.1.0/features "Browse available feature flags of arrow-schema-58.1.0") * [docs.rs](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#) * [About docs.rs](https://docs.rs/about) * [Badges](https://docs.rs/about/badges) * [Builds](https://docs.rs/about/builds) * [Metadata](https://docs.rs/about/metadata) * [Shorthand URLs](https://docs.rs/about/redirections) * [Download](https://docs.rs/about/download) * [Rustdoc JSON](https://docs.rs/about/rustdoc-json) * [Build queue](https://docs.rs/releases/queue) * [Privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#docs.rs) * [Rust](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#) * [Rust website](https://www.rust-lang.org/) * [The Book](https://doc.rust-lang.org/book/) * [Standard Library API Reference](https://doc.rust-lang.org/std/) * [Rust by Example](https://doc.rust-lang.org/rust-by-example/) * [The Cargo Guide](https://doc.rust-lang.org/cargo/guide/) * [Clippy Documentation](https://doc.rust-lang.org/nightly/clippy) [Skip to main content](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#main-content) [Field](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#) ----------------------------------------------------------------------------- [arrow\_schema](https://docs.rs/arrow-schema/58.1.0/arrow_schema/index.html) Struct Field Copy item path =========================== [Source](https://docs.rs/arrow-schema/58.1.0/src/arrow_schema/field.rs.html#49-61) pub struct Field { /* private fields */ } Expand description Describes a single column in a [`Schema`](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Schema.html "struct arrow_schema::Schema") . A [`Schema`](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Schema.html "struct arrow_schema::Schema") is an ordered collection of [`Field`](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html "struct arrow_schema::Field") objects. Fields contain: * `name`: the name of the field * `data_type`: the type of the field * `nullable`: if the field is nullable * `metadata`: a map of key-value pairs containing additional custom metadata Arrow Extension types, are encoded in `Field`s metadata. See [`Self::try_extension_type`](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#method.try_extension_type "method arrow_schema::Field::try_extension_type") to retrieve the [`ExtensionType`](https://docs.rs/arrow-schema/58.1.0/arrow_schema/extension/trait.ExtensionType.html "trait arrow_schema::extension::ExtensionType") , if any. Implementations[§](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#implementations) ------------------------------------------------------------------------------------------------------- [Source](https://docs.rs/arrow-schema/58.1.0/src/arrow_schema/field.rs.html#181-975) [§](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#impl-Field) ### impl [Field](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html "struct arrow_schema::Field") [Source](https://docs.rs/arrow-schema/58.1.0/src/arrow_schema/field.rs.html#183) #### pub const [LIST\_FIELD\_DEFAULT\_NAME](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#associatedconstant.LIST_FIELD_DEFAULT_NAME) : &'static [str](https://doc.rust-lang.org/nightly/std/primitive.str.html) = "item" Default list member field name [Source](https://docs.rs/arrow-schema/58.1.0/src/arrow_schema/field.rs.html#192-202) #### pub fn [new](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#method.new) (name: impl [Into](https://doc.rust-lang.org/nightly/core/convert/trait.Into.html "trait core::convert::Into") <[String](https://doc.rust-lang.org/nightly/alloc/string/struct.String.html "struct alloc::string::String") \>, data\_type: [DataType](https://docs.rs/arrow-schema/58.1.0/arrow_schema/enum.DataType.html "enum arrow_schema::DataType") , nullable: [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) ) -> Self Creates a new field with the given name, data type, and nullability ##### [§](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#example) Example Field::new("field_name", DataType::Int32, true); [Source](https://docs.rs/arrow-schema/58.1.0/src/arrow_schema/field.rs.html#218-220) #### pub fn [new\_list\_field](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#method.new_list_field) (data\_type: [DataType](https://docs.rs/arrow-schema/58.1.0/arrow_schema/enum.DataType.html "enum arrow_schema::DataType") , nullable: [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) ) -> Self Creates a new `Field` suitable for [`DataType::List`](https://docs.rs/arrow-schema/58.1.0/arrow_schema/enum.DataType.html#variant.List "variant arrow_schema::DataType::List") and [`DataType::LargeList`](https://docs.rs/arrow-schema/58.1.0/arrow_schema/enum.DataType.html#variant.LargeList "variant arrow_schema::DataType::LargeList") While not required, this method follows the convention of naming the `Field` `"item"`. ##### [§](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#example-1) Example assert_eq!( Field::new("item", DataType::Int32, true), Field::new_list_field(DataType::Int32, true) ); [Source](https://docs.rs/arrow-schema/58.1.0/src/arrow_schema/field.rs.html#227-243) #### pub fn [new\_dict](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#method.new_dict) ( name: impl [Into](https://doc.rust-lang.org/nightly/core/convert/trait.Into.html "trait core::convert::Into") <[String](https://doc.rust-lang.org/nightly/alloc/string/struct.String.html "struct alloc::string::String") \>, data\_type: [DataType](https://docs.rs/arrow-schema/58.1.0/arrow_schema/enum.DataType.html "enum arrow_schema::DataType") , nullable: [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) , dict\_id: [i64](https://doc.rust-lang.org/nightly/std/primitive.i64.html) , dict\_is\_ordered: [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) , ) -> Self 👎Deprecated since 54.0.0: The ability to preserve dictionary IDs will be removed. With the dict\_id field disappearing this function signature will change by removing the dict\_id parameter. Creates a new field that has additional dictionary information [Source](https://docs.rs/arrow-schema/58.1.0/src/arrow_schema/field.rs.html#252-264) #### pub fn [new\_dictionary](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#method.new_dictionary) ( name: impl [Into](https://doc.rust-lang.org/nightly/core/convert/trait.Into.html "trait core::convert::Into") <[String](https://doc.rust-lang.org/nightly/alloc/string/struct.String.html "struct alloc::string::String") \>, key: [DataType](https://docs.rs/arrow-schema/58.1.0/arrow_schema/enum.DataType.html "enum arrow_schema::DataType") , value: [DataType](https://docs.rs/arrow-schema/58.1.0/arrow_schema/enum.DataType.html "enum arrow_schema::DataType") , nullable: [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) , ) -> Self Create a new [`Field`](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html "struct arrow_schema::Field") with [`DataType::Dictionary`](https://docs.rs/arrow-schema/58.1.0/arrow_schema/enum.DataType.html#variant.Dictionary "variant arrow_schema::DataType::Dictionary") Use [`Self::new_dict`](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#method.new_dict "associated function arrow_schema::Field::new_dict") for more advanced dictionary options ##### [§](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#panics) Panics Panics if [`!key.is_dictionary_key_type`](https://docs.rs/arrow-schema/58.1.0/arrow_schema/enum.DataType.html#method.is_dictionary_key_type "method arrow_schema::DataType::is_dictionary_key_type") [Source](https://docs.rs/arrow-schema/58.1.0/src/arrow_schema/field.rs.html#271-273) #### pub fn [new\_struct](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#method.new_struct) ( name: impl [Into](https://doc.rust-lang.org/nightly/core/convert/trait.Into.html "trait core::convert::Into") <[String](https://doc.rust-lang.org/nightly/alloc/string/struct.String.html "struct alloc::string::String") \>, fields: impl [Into](https://doc.rust-lang.org/nightly/core/convert/trait.Into.html "trait core::convert::Into") <[Fields](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Fields.html "struct arrow_schema::Fields") \>, nullable: [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) , ) -> Self Create a new [`Field`](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html "struct arrow_schema::Field") with [`DataType::Struct`](https://docs.rs/arrow-schema/58.1.0/arrow_schema/enum.DataType.html#variant.Struct "variant arrow_schema::DataType::Struct") * `name`: the name of the [`DataType::Struct`](https://docs.rs/arrow-schema/58.1.0/arrow_schema/enum.DataType.html#variant.Struct "variant arrow_schema::DataType::Struct") field * `fields`: the description of each struct element * `nullable`: if the [`DataType::Struct`](https://docs.rs/arrow-schema/58.1.0/arrow_schema/enum.DataType.html#variant.Struct "variant arrow_schema::DataType::Struct") array is nullable [Source](https://docs.rs/arrow-schema/58.1.0/src/arrow_schema/field.rs.html#280-282) #### pub fn [new\_list](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#method.new_list) ( name: impl [Into](https://doc.rust-lang.org/nightly/core/convert/trait.Into.html "trait core::convert::Into") <[String](https://doc.rust-lang.org/nightly/alloc/string/struct.String.html "struct alloc::string::String") \>, value: impl [Into](https://doc.rust-lang.org/nightly/core/convert/trait.Into.html "trait core::convert::Into") <[FieldRef](https://docs.rs/arrow-schema/58.1.0/arrow_schema/type.FieldRef.html "type arrow_schema::FieldRef") \>, nullable: [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) , ) -> Self Create a new [`Field`](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html "struct arrow_schema::Field") with [`DataType::List`](https://docs.rs/arrow-schema/58.1.0/arrow_schema/enum.DataType.html#variant.List "variant arrow_schema::DataType::List") * `name`: the name of the [`DataType::List`](https://docs.rs/arrow-schema/58.1.0/arrow_schema/enum.DataType.html#variant.List "variant arrow_schema::DataType::List") field * `value`: the description of each list element * `nullable`: if the [`DataType::List`](https://docs.rs/arrow-schema/58.1.0/arrow_schema/enum.DataType.html#variant.List "variant arrow_schema::DataType::List") array is nullable [Source](https://docs.rs/arrow-schema/58.1.0/src/arrow_schema/field.rs.html#289-295) #### pub fn [new\_large\_list](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#method.new_large_list) ( name: impl [Into](https://doc.rust-lang.org/nightly/core/convert/trait.Into.html "trait core::convert::Into") <[String](https://doc.rust-lang.org/nightly/alloc/string/struct.String.html "struct alloc::string::String") \>, value: impl [Into](https://doc.rust-lang.org/nightly/core/convert/trait.Into.html "trait core::convert::Into") <[FieldRef](https://docs.rs/arrow-schema/58.1.0/arrow_schema/type.FieldRef.html "type arrow_schema::FieldRef") \>, nullable: [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) , ) -> Self Create a new [`Field`](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html "struct arrow_schema::Field") with [`DataType::LargeList`](https://docs.rs/arrow-schema/58.1.0/arrow_schema/enum.DataType.html#variant.LargeList "variant arrow_schema::DataType::LargeList") * `name`: the name of the [`DataType::LargeList`](https://docs.rs/arrow-schema/58.1.0/arrow_schema/enum.DataType.html#variant.LargeList "variant arrow_schema::DataType::LargeList") field * `value`: the description of each list element * `nullable`: if the [`DataType::LargeList`](https://docs.rs/arrow-schema/58.1.0/arrow_schema/enum.DataType.html#variant.LargeList "variant arrow_schema::DataType::LargeList") array is nullable [Source](https://docs.rs/arrow-schema/58.1.0/src/arrow_schema/field.rs.html#303-310) #### pub fn [new\_fixed\_size\_list](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#method.new_fixed_size_list) ( name: impl [Into](https://doc.rust-lang.org/nightly/core/convert/trait.Into.html "trait core::convert::Into") <[String](https://doc.rust-lang.org/nightly/alloc/string/struct.String.html "struct alloc::string::String") \>, value: impl [Into](https://doc.rust-lang.org/nightly/core/convert/trait.Into.html "trait core::convert::Into") <[FieldRef](https://docs.rs/arrow-schema/58.1.0/arrow_schema/type.FieldRef.html "type arrow_schema::FieldRef") \>, size: [i32](https://doc.rust-lang.org/nightly/std/primitive.i32.html) , nullable: [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) , ) -> Self Create a new [`Field`](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html "struct arrow_schema::Field") with [`DataType::FixedSizeList`](https://docs.rs/arrow-schema/58.1.0/arrow_schema/enum.DataType.html#variant.FixedSizeList "variant arrow_schema::DataType::FixedSizeList") * `name`: the name of the [`DataType::FixedSizeList`](https://docs.rs/arrow-schema/58.1.0/arrow_schema/enum.DataType.html#variant.FixedSizeList "variant arrow_schema::DataType::FixedSizeList") field * `value`: the description of each list element * `size`: the size of the fixed size list * `nullable`: if the [`DataType::FixedSizeList`](https://docs.rs/arrow-schema/58.1.0/arrow_schema/enum.DataType.html#variant.FixedSizeList "variant arrow_schema::DataType::FixedSizeList") array is nullable [Source](https://docs.rs/arrow-schema/58.1.0/src/arrow_schema/field.rs.html#320-337) #### pub fn [new\_map](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#method.new_map) ( name: impl [Into](https://doc.rust-lang.org/nightly/core/convert/trait.Into.html "trait core::convert::Into") <[String](https://doc.rust-lang.org/nightly/alloc/string/struct.String.html "struct alloc::string::String") \>, entries: impl [Into](https://doc.rust-lang.org/nightly/core/convert/trait.Into.html "trait core::convert::Into") <[String](https://doc.rust-lang.org/nightly/alloc/string/struct.String.html "struct alloc::string::String") \>, keys: impl [Into](https://doc.rust-lang.org/nightly/core/convert/trait.Into.html "trait core::convert::Into") <[FieldRef](https://docs.rs/arrow-schema/58.1.0/arrow_schema/type.FieldRef.html "type arrow_schema::FieldRef") \>, values: impl [Into](https://doc.rust-lang.org/nightly/core/convert/trait.Into.html "trait core::convert::Into") <[FieldRef](https://docs.rs/arrow-schema/58.1.0/arrow_schema/type.FieldRef.html "type arrow_schema::FieldRef") \>, sorted: [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) , nullable: [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) , ) -> Self Create a new [`Field`](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html "struct arrow_schema::Field") with [`DataType::Map`](https://docs.rs/arrow-schema/58.1.0/arrow_schema/enum.DataType.html#variant.Map "variant arrow_schema::DataType::Map") * `name`: the name of the [`DataType::Map`](https://docs.rs/arrow-schema/58.1.0/arrow_schema/enum.DataType.html#variant.Map "variant arrow_schema::DataType::Map") field * `entries`: the name of the inner [`DataType::Struct`](https://docs.rs/arrow-schema/58.1.0/arrow_schema/enum.DataType.html#variant.Struct "variant arrow_schema::DataType::Struct") field * `keys`: the map keys * `values`: the map values * `sorted`: if the [`DataType::Map`](https://docs.rs/arrow-schema/58.1.0/arrow_schema/enum.DataType.html#variant.Map "variant arrow_schema::DataType::Map") array is sorted * `nullable`: if the [`DataType::Map`](https://docs.rs/arrow-schema/58.1.0/arrow_schema/enum.DataType.html#variant.Map "variant arrow_schema::DataType::Map") array is nullable [Source](https://docs.rs/arrow-schema/58.1.0/src/arrow_schema/field.rs.html#352-367) #### pub fn [new\_union](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#method.new_union) ( name: S, type\_ids: T, fields: F, mode: [UnionMode](https://docs.rs/arrow-schema/58.1.0/arrow_schema/enum.UnionMode.html "enum arrow_schema::UnionMode") , ) -> Self where S: [Into](https://doc.rust-lang.org/nightly/core/convert/trait.Into.html "trait core::convert::Into") <[String](https://doc.rust-lang.org/nightly/alloc/string/struct.String.html "struct alloc::string::String") \>, F: [IntoIterator](https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html "trait core::iter::traits::collect::IntoIterator") , F::[Item](https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.Item "type core::iter::traits::collect::IntoIterator::Item") : [Into](https://doc.rust-lang.org/nightly/core/convert/trait.Into.html "trait core::convert::Into") <[FieldRef](https://docs.rs/arrow-schema/58.1.0/arrow_schema/type.FieldRef.html "type arrow_schema::FieldRef") \>, T: [IntoIterator](https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html "trait core::iter::traits::collect::IntoIterator") , Create a new [`Field`](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html "struct arrow_schema::Field") with [`DataType::Union`](https://docs.rs/arrow-schema/58.1.0/arrow_schema/enum.DataType.html#variant.Union "variant arrow_schema::DataType::Union") * `name`: the name of the [`DataType::Union`](https://docs.rs/arrow-schema/58.1.0/arrow_schema/enum.DataType.html#variant.Union "variant arrow_schema::DataType::Union") field * `type_ids`: the union type ids * `fields`: the union fields * `mode`: the union mode ##### [§](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#panics-1) Panics Panics if: * any type ID is negative * type IDs contain duplicates * the number of type IDs does not equal the number of fields [Source](https://docs.rs/arrow-schema/58.1.0/src/arrow_schema/field.rs.html#371-373) #### pub fn [set\_metadata](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#method.set_metadata) (&mut self, metadata: [HashMap](https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html "struct std::collections::hash::map::HashMap") <[String](https://doc.rust-lang.org/nightly/alloc/string/struct.String.html "struct alloc::string::String") , [String](https://doc.rust-lang.org/nightly/alloc/string/struct.String.html "struct alloc::string::String") \>) Sets the `Field`’s optional custom metadata. [Source](https://docs.rs/arrow-schema/58.1.0/src/arrow_schema/field.rs.html#376-379) #### pub fn [with\_metadata](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#method.with_metadata) (self, metadata: [HashMap](https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html "struct std::collections::hash::map::HashMap") <[String](https://doc.rust-lang.org/nightly/alloc/string/struct.String.html "struct alloc::string::String") , [String](https://doc.rust-lang.org/nightly/alloc/string/struct.String.html "struct alloc::string::String") \>) -> Self Sets the metadata of this `Field` to be `metadata` and returns self [Source](https://docs.rs/arrow-schema/58.1.0/src/arrow_schema/field.rs.html#383-385) #### pub const fn [metadata](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#method.metadata) (&self) -> &[HashMap](https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html "struct std::collections::hash::map::HashMap") <[String](https://doc.rust-lang.org/nightly/alloc/string/struct.String.html "struct alloc::string::String") , [String](https://doc.rust-lang.org/nightly/alloc/string/struct.String.html "struct alloc::string::String") \> Returns the immutable reference to the `Field`’s optional custom metadata. [Source](https://docs.rs/arrow-schema/58.1.0/src/arrow_schema/field.rs.html#389-391) #### pub fn [metadata\_mut](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#method.metadata_mut) (&mut self) -> &mut [HashMap](https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html "struct std::collections::hash::map::HashMap") <[String](https://doc.rust-lang.org/nightly/alloc/string/struct.String.html "struct alloc::string::String") , [String](https://doc.rust-lang.org/nightly/alloc/string/struct.String.html "struct alloc::string::String") \> Returns a mutable reference to the `Field`’s optional custom metadata. [Source](https://docs.rs/arrow-schema/58.1.0/src/arrow_schema/field.rs.html#395-397) #### pub const fn [name](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#method.name) (&self) -> &[String](https://doc.rust-lang.org/nightly/alloc/string/struct.String.html "struct alloc::string::String") Returns an immutable reference to the `Field`’s name. [Source](https://docs.rs/arrow-schema/58.1.0/src/arrow_schema/field.rs.html#401-403) #### pub fn [set\_name](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#method.set_name) (&mut self, name: impl [Into](https://doc.rust-lang.org/nightly/core/convert/trait.Into.html "trait core::convert::Into") <[String](https://doc.rust-lang.org/nightly/alloc/string/struct.String.html "struct alloc::string::String") \>) Set the name of this [`Field`](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html "struct arrow_schema::Field") [Source](https://docs.rs/arrow-schema/58.1.0/src/arrow_schema/field.rs.html#414-417) #### pub fn [with\_name](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#method.with_name) (self, name: impl [Into](https://doc.rust-lang.org/nightly/core/convert/trait.Into.html "trait core::convert::Into") <[String](https://doc.rust-lang.org/nightly/alloc/string/struct.String.html "struct alloc::string::String") \>) -> Self Set the name of the [`Field`](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html "struct arrow_schema::Field") and returns self. let field = Field::new("c1", DataType::Int64, false) .with_name("c2"); assert_eq!(field.name(), "c2"); [Source](https://docs.rs/arrow-schema/58.1.0/src/arrow_schema/field.rs.html#421-423) #### pub const fn [data\_type](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#method.data_type) (&self) -> &[DataType](https://docs.rs/arrow-schema/58.1.0/arrow_schema/enum.DataType.html "enum arrow_schema::DataType") Returns an immutable reference to the [`Field`](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html "struct arrow_schema::Field") ’s [`DataType`](https://docs.rs/arrow-schema/58.1.0/arrow_schema/enum.DataType.html "enum arrow_schema::DataType") . [Source](https://docs.rs/arrow-schema/58.1.0/src/arrow_schema/field.rs.html#435-437) #### pub fn [set\_data\_type](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#method.set_data_type) (&mut self, data\_type: [DataType](https://docs.rs/arrow-schema/58.1.0/arrow_schema/enum.DataType.html "enum arrow_schema::DataType") ) Set [`DataType`](https://docs.rs/arrow-schema/58.1.0/arrow_schema/enum.DataType.html "enum arrow_schema::DataType") of the [`Field`](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html "struct arrow_schema::Field") let mut field = Field::new("c1", DataType::Int64, false); field.set_data_type(DataType::Utf8); assert_eq!(field.data_type(), &DataType::Utf8); [Source](https://docs.rs/arrow-schema/58.1.0/src/arrow_schema/field.rs.html#448-451) #### pub fn [with\_data\_type](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#method.with_data_type) (self, data\_type: [DataType](https://docs.rs/arrow-schema/58.1.0/arrow_schema/enum.DataType.html "enum arrow_schema::DataType") ) -> Self Set [`DataType`](https://docs.rs/arrow-schema/58.1.0/arrow_schema/enum.DataType.html "enum arrow_schema::DataType") of the [`Field`](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html "struct arrow_schema::Field") and returns self. let field = Field::new("c1", DataType::Int64, false) .with_data_type(DataType::Utf8); assert_eq!(field.data_type(), &DataType::Utf8); [Source](https://docs.rs/arrow-schema/58.1.0/src/arrow_schema/field.rs.html#474-478) #### pub fn [extension\_type\_name](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#method.extension_type_name) (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <&[str](https://doc.rust-lang.org/nightly/std/primitive.str.html) \> Returns the extension type name of this [`Field`](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html "struct arrow_schema::Field") , if set. This returns the value of [`EXTENSION_TYPE_NAME_KEY`](https://docs.rs/arrow-schema/58.1.0/arrow_schema/extension/constant.EXTENSION_TYPE_NAME_KEY.html "constant arrow_schema::extension::EXTENSION_TYPE_NAME_KEY") , if set in [`Field::metadata`](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#method.metadata "method arrow_schema::Field::metadata") . If the key is missing, there is no extension type name and this returns `None`. ##### [§](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#example-2) Example let field = Field::new("", DataType::Null, false); assert_eq!(field.extension_type_name(), None); let field = Field::new("", DataType::Null, false).with_metadata( [(EXTENSION_TYPE_NAME_KEY.to_owned(), "example".to_owned())] .into_iter() .collect(), ); assert_eq!(field.extension_type_name(), Some("example")); [Source](https://docs.rs/arrow-schema/58.1.0/src/arrow_schema/field.rs.html#501-505) #### pub fn [extension\_type\_metadata](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#method.extension_type_metadata) (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <&[str](https://doc.rust-lang.org/nightly/std/primitive.str.html) \> Returns the extension type metadata of this [`Field`](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html "struct arrow_schema::Field") , if set. This returns the value of [`EXTENSION_TYPE_METADATA_KEY`](https://docs.rs/arrow-schema/58.1.0/arrow_schema/extension/constant.EXTENSION_TYPE_METADATA_KEY.html "constant arrow_schema::extension::EXTENSION_TYPE_METADATA_KEY") , if set in [`Field::metadata`](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#method.metadata "method arrow_schema::Field::metadata") . If the key is missing, there is no extension type metadata and this returns `None`. ##### [§](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#example-3) Example let field = Field::new("", DataType::Null, false); assert_eq!(field.extension_type_metadata(), None); let field = Field::new("", DataType::Null, false).with_metadata( [(EXTENSION_TYPE_METADATA_KEY.to_owned(), "example".to_owned())] .into_iter() .collect(), ); assert_eq!(field.extension_type_metadata(), Some("example")); [Source](https://docs.rs/arrow-schema/58.1.0/src/arrow_schema/field.rs.html#577-579) #### pub fn [try\_extension\_type](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#method.try_extension_type) (&self) -> [Result](https://doc.rust-lang.org/nightly/core/result/enum.Result.html "enum core::result::Result") Returns an instance of the given [`ExtensionType`](https://docs.rs/arrow-schema/58.1.0/arrow_schema/extension/trait.ExtensionType.html "trait arrow_schema::extension::ExtensionType") of this [`Field`](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html "struct arrow_schema::Field") , if set in the [`Field::metadata`](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#method.metadata "method arrow_schema::Field::metadata") . Note that using `try_extension_type` with an extension type that does not match the name in the metadata will return an `ArrowError` which can be slow due to string allocations. If you only want to check if a [`Field`](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html "struct arrow_schema::Field") has a specific [`ExtensionType`](https://docs.rs/arrow-schema/58.1.0/arrow_schema/extension/trait.ExtensionType.html "trait arrow_schema::extension::ExtensionType") , see the example below. ##### [§](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#errors) Errors Returns an error if * this field does not have the name of this extension type ([`ExtensionType::NAME`](https://docs.rs/arrow-schema/58.1.0/arrow_schema/extension/trait.ExtensionType.html#associatedconstant.NAME "associated constant arrow_schema::extension::ExtensionType::NAME") ) in the [`Field::metadata`](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#method.metadata "method arrow_schema::Field::metadata") (mismatch or missing) * the deserialization of the metadata ([`ExtensionType::deserialize_metadata`](https://docs.rs/arrow-schema/58.1.0/arrow_schema/extension/trait.ExtensionType.html#tymethod.deserialize_metadata "associated function arrow_schema::extension::ExtensionType::deserialize_metadata") ) fails * the construction of the extension type ([`ExtensionType::try_new`](https://docs.rs/arrow-schema/58.1.0/arrow_schema/extension/trait.ExtensionType.html#tymethod.try_new "associated function arrow_schema::extension::ExtensionType::try_new") ) fail (for example when the [`Field::data_type`](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#method.data_type "method arrow_schema::Field::data_type") is not supported by the extension type ([`ExtensionType::supports_data_type`](https://docs.rs/arrow-schema/58.1.0/arrow_schema/extension/trait.ExtensionType.html#tymethod.supports_data_type "method arrow_schema::extension::ExtensionType::supports_data_type") )) ##### [§](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#examples-check-and-retrieve-an-extension-type) Examples: Check and retrieve an extension type You can use this to check if a [`Field`](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html "struct arrow_schema::Field") has a specific [`ExtensionType`](https://docs.rs/arrow-schema/58.1.0/arrow_schema/extension/trait.ExtensionType.html "trait arrow_schema::extension::ExtensionType") and retrieve it: let field = get_field(); if let Ok(extension_type) = field.try_extension_type::() { // do something with extension_type } ##### [§](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#example-checking-if-a-field-has-a-specific-extension-type-first) Example: Checking if a field has a specific extension type first Since `try_extension_type` returns an error, it is more efficient to first check if the name matches before calling `try_extension_type`: let field = get_field(); // First check if the name matches before calling the potentially expensive `try_extension_type` if field.extension_type_name() == Some(MyExtensionType::NAME) { if let Ok(extension_type) = field.try_extension_type::() { // do something with extension_type } } [Source](https://docs.rs/arrow-schema/58.1.0/src/arrow_schema/field.rs.html#588-591) #### pub fn [extension\_type](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#method.extension_type) (&self) -> E Returns an instance of the given [`ExtensionType`](https://docs.rs/arrow-schema/58.1.0/arrow_schema/extension/trait.ExtensionType.html "trait arrow_schema::extension::ExtensionType") of this [`Field`](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html "struct arrow_schema::Field") , panics if this [`Field`](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html "struct arrow_schema::Field") does not have this extension type. ##### [§](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#panic) Panic This calls [`Field::try_extension_type`](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#method.try_extension_type "method arrow_schema::Field::try_extension_type") and panics when it returns an error. [Source](https://docs.rs/arrow-schema/58.1.0/src/arrow_schema/field.rs.html#605-624) #### pub fn [try\_with\_extension\_type](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#method.try_with_extension_type) ( &mut self, extension\_type: E, ) -> [Result](https://doc.rust-lang.org/nightly/core/result/enum.Result.html "enum core::result::Result") <[()](https://doc.rust-lang.org/nightly/std/primitive.unit.html) , [ArrowError](https://docs.rs/arrow-schema/58.1.0/arrow_schema/enum.ArrowError.html "enum arrow_schema::ArrowError") \> Updates the metadata of this [`Field`](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html "struct arrow_schema::Field") with the [`ExtensionType::NAME`](https://docs.rs/arrow-schema/58.1.0/arrow_schema/extension/trait.ExtensionType.html#associatedconstant.NAME "associated constant arrow_schema::extension::ExtensionType::NAME") and [`ExtensionType::metadata`](https://docs.rs/arrow-schema/58.1.0/arrow_schema/extension/trait.ExtensionType.html#tymethod.metadata "method arrow_schema::extension::ExtensionType::metadata") of the given [`ExtensionType`](https://docs.rs/arrow-schema/58.1.0/arrow_schema/extension/trait.ExtensionType.html "trait arrow_schema::extension::ExtensionType") , if the given extension type supports the [`Field::data_type`](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#method.data_type "method arrow_schema::Field::data_type") of this field ([`ExtensionType::supports_data_type`](https://docs.rs/arrow-schema/58.1.0/arrow_schema/extension/trait.ExtensionType.html#tymethod.supports_data_type "method arrow_schema::extension::ExtensionType::supports_data_type") ). If the given extension type defines no metadata, a previously set value of [`EXTENSION_TYPE_METADATA_KEY`](https://docs.rs/arrow-schema/58.1.0/arrow_schema/extension/constant.EXTENSION_TYPE_METADATA_KEY.html "constant arrow_schema::extension::EXTENSION_TYPE_METADATA_KEY") is cleared. ##### [§](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#error) Error This functions returns an error if the data type of this field does not match any of the supported storage types of the given extension type. [Source](https://docs.rs/arrow-schema/58.1.0/src/arrow_schema/field.rs.html#633-637) #### pub fn [with\_extension\_type](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#method.with_extension_type) (self, extension\_type: E) -> Self Updates the metadata of this [`Field`](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html "struct arrow_schema::Field") with the [`ExtensionType::NAME`](https://docs.rs/arrow-schema/58.1.0/arrow_schema/extension/trait.ExtensionType.html#associatedconstant.NAME "associated constant arrow_schema::extension::ExtensionType::NAME") and [`ExtensionType::metadata`](https://docs.rs/arrow-schema/58.1.0/arrow_schema/extension/trait.ExtensionType.html#tymethod.metadata "method arrow_schema::extension::ExtensionType::metadata") of the given [`ExtensionType`](https://docs.rs/arrow-schema/58.1.0/arrow_schema/extension/trait.ExtensionType.html "trait arrow_schema::extension::ExtensionType") . ##### [§](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#panics-2) Panics This calls [`Field::try_with_extension_type`](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#method.try_with_extension_type "method arrow_schema::Field::try_with_extension_type") and panics when it returns an error. [Source](https://docs.rs/arrow-schema/58.1.0/src/arrow_schema/field.rs.html#648-650) #### pub fn [try\_canonical\_extension\_type](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#method.try_canonical_extension_type) ( &self, ) -> [Result](https://doc.rust-lang.org/nightly/core/result/enum.Result.html "enum core::result::Result") <[CanonicalExtensionType](https://docs.rs/arrow-schema/58.1.0/arrow_schema/extension/enum.CanonicalExtensionType.html "enum arrow_schema::extension::CanonicalExtensionType") , [ArrowError](https://docs.rs/arrow-schema/58.1.0/arrow_schema/enum.ArrowError.html "enum arrow_schema::ArrowError") \> Available on **crate feature `canonical_extension_types`** only. Returns the [`CanonicalExtensionType`](https://docs.rs/arrow-schema/58.1.0/arrow_schema/extension/enum.CanonicalExtensionType.html "enum arrow_schema::extension::CanonicalExtensionType") of this [`Field`](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html "struct arrow_schema::Field") , if set. ##### [§](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#error-1) Error Returns an error if * this field does not have a canonical extension type (mismatch or missing) * the canonical extension is not supported * the construction of the extension type fails [Source](https://docs.rs/arrow-schema/58.1.0/src/arrow_schema/field.rs.html#656-658) #### pub const fn [is\_nullable](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#method.is_nullable) (&self) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) Indicates whether this [`Field`](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html "struct arrow_schema::Field") supports null values. If true, the field _may_ contain null values. [Source](https://docs.rs/arrow-schema/58.1.0/src/arrow_schema/field.rs.html#670-672) #### pub fn [set\_nullable](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#method.set_nullable) (&mut self, nullable: [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) ) Set the `nullable` of this [`Field`](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html "struct arrow_schema::Field") . let mut field = Field::new("c1", DataType::Int64, false); field.set_nullable(true); assert_eq!(field.is_nullable(), true); [Source](https://docs.rs/arrow-schema/58.1.0/src/arrow_schema/field.rs.html#683-686) #### pub fn [with\_nullable](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#method.with_nullable) (self, nullable: [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) ) -> Self Set `nullable` of the [`Field`](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html "struct arrow_schema::Field") and returns self. let field = Field::new("c1", DataType::Int64, false) .with_nullable(true); assert_eq!(field.is_nullable(), true); [Source](https://docs.rs/arrow-schema/58.1.0/src/arrow_schema/field.rs.html#737-743) #### pub const fn [dict\_id](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#method.dict_id) (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <[i64](https://doc.rust-lang.org/nightly/std/primitive.i64.html) \> 👎Deprecated since 54.0.0: The ability to preserve dictionary IDs will be removed. With it, all fields related to it. Returns the dictionary ID, if this is a dictionary type. [Source](https://docs.rs/arrow-schema/58.1.0/src/arrow_schema/field.rs.html#760-765) #### pub const fn [dict\_is\_ordered](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#method.dict_is_ordered) (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <[bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) \> Returns whether this `Field`’s dictionary is ordered, if this is a dictionary type. ##### [§](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#example-4) Example // non dictionaries do not have a dict is ordered flat let field = Field::new("c1", DataType::Int64, false); assert_eq!(field.dict_is_ordered(), None); // by default dictionary is not ordered let field = Field::new("c1", DataType::Dictionary(Box::new(DataType::Int64), Box::new(DataType::Utf8)), false); assert_eq!(field.dict_is_ordered(), Some(false)); let field = field.with_dict_is_ordered(true); assert_eq!(field.dict_is_ordered(), Some(true)); [Source](https://docs.rs/arrow-schema/58.1.0/src/arrow_schema/field.rs.html#772-777) #### pub fn [with\_dict\_is\_ordered](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#method.with_dict_is_ordered) (self, dict\_is\_ordered: [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) ) -> Self Set the is ordered field for this `Field`, if it is a dictionary. Does nothing if this is not a dictionary type. See [`Field::dict_is_ordered`](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#method.dict_is_ordered "method arrow_schema::Field::dict_is_ordered") for more information. [Source](https://docs.rs/arrow-schema/58.1.0/src/arrow_schema/field.rs.html#793-942) #### pub fn [try\_merge](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#method.try_merge) (&mut self, from: &[Field](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html "struct arrow_schema::Field") ) -> [Result](https://doc.rust-lang.org/nightly/core/result/enum.Result.html "enum core::result::Result") <[()](https://doc.rust-lang.org/nightly/std/primitive.unit.html) , [ArrowError](https://docs.rs/arrow-schema/58.1.0/arrow_schema/enum.ArrowError.html "enum arrow_schema::ArrowError") \> Merge this field into self if it is compatible. Struct fields are merged recursively. NOTE: `self` may be updated to a partial / unexpected state in case of merge failure. Example: let mut field = Field::new("c1", DataType::Int64, false); assert!(field.try_merge(&Field::new("c1", DataType::Int64, true)).is_ok()); assert!(field.is_nullable()); [Source](https://docs.rs/arrow-schema/58.1.0/src/arrow_schema/field.rs.html#949-959) #### pub fn [contains](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#method.contains) (&self, other: &[Field](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html "struct arrow_schema::Field") ) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) Check to see if `self` is a superset of `other` field. Superset is defined as: * if nullability doesn’t match, self needs to be nullable * self.metadata is a superset of other.metadata * all other fields are equal [Source](https://docs.rs/arrow-schema/58.1.0/src/arrow_schema/field.rs.html#964-974) #### pub fn [size](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#method.size) (&self) -> [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) Return size of this instance in bytes. Includes the size of `Self`. Trait Implementations[§](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#trait-implementations) ------------------------------------------------------------------------------------------------------------------- [Source](https://docs.rs/arrow-schema/58.1.0/src/arrow_schema/field.rs.html#175-179) [§](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#impl-AsRef%3CField%3E-for-Field) ### impl [AsRef](https://doc.rust-lang.org/nightly/core/convert/trait.AsRef.html "trait core::convert::AsRef") <[Field](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html "struct arrow_schema::Field") \> for [Field](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html "struct arrow_schema::Field") [Source](https://docs.rs/arrow-schema/58.1.0/src/arrow_schema/field.rs.html#176-178) [§](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#method.as_ref) #### fn [as\_ref](https://doc.rust-lang.org/nightly/core/convert/trait.AsRef.html#tymethod.as_ref) (&self) -> &[Field](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html "struct arrow_schema::Field") Converts this type into a shared reference of the (usually inferred) input type. [Source](https://docs.rs/arrow-schema/58.1.0/src/arrow_schema/field.rs.html#47) [§](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#impl-Clone-for-Field) ### impl [Clone](https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html "trait core::clone::Clone") for [Field](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html "struct arrow_schema::Field") [Source](https://docs.rs/arrow-schema/58.1.0/src/arrow_schema/field.rs.html#47) [§](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#method.clone) #### fn [clone](https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone) (&self) -> [Field](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html "struct arrow_schema::Field") Returns a duplicate of the value. [Read more](https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone) 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/clone.rs.html#245-247) [§](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#method.clone_from) #### fn [clone\_from](https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from) (&mut self, source: &Self) Performs copy-assignment from `source`. [Read more](https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from) [Source](https://docs.rs/arrow-schema/58.1.0/src/arrow_schema/field.rs.html#63-101) [§](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#impl-Debug-for-Field) ### impl [Debug](https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html "trait core::fmt::Debug") for [Field](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html "struct arrow_schema::Field") [Source](https://docs.rs/arrow-schema/58.1.0/src/arrow_schema/field.rs.html#64-100) [§](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#method.fmt) #### fn [fmt](https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt) (&self, f: &mut [Formatter](https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html "struct core::fmt::Formatter") <'\_>) -> [Result](https://doc.rust-lang.org/nightly/core/fmt/type.Result.html "type core::fmt::Result") Formats the value using the given formatter. [Read more](https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt) [Source](https://docs.rs/arrow-schema/58.1.0/src/arrow_schema/field.rs.html#48) [§](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#impl-Deserialize%3C'de%3E-for-Field) ### impl<'de> [Deserialize](https://docs.rs/serde_core/1.0.228/x86_64-unknown-linux-gnu/serde_core/de/trait.Deserialize.html "trait serde_core::de::Deserialize") <'de> for [Field](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html "struct arrow_schema::Field") [Source](https://docs.rs/arrow-schema/58.1.0/src/arrow_schema/field.rs.html#48) [§](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#method.deserialize) #### fn [deserialize](https://docs.rs/serde_core/1.0.228/x86_64-unknown-linux-gnu/serde_core/de/trait.Deserialize.html#tymethod.deserialize) <\_\_D>(\_\_deserializer: \_\_D) -> [Result](https://doc.rust-lang.org/nightly/core/result/enum.Result.html "enum core::result::Result") where \_\_D: [Deserializer](https://docs.rs/serde_core/1.0.228/x86_64-unknown-linux-gnu/serde_core/de/trait.Deserializer.html "trait serde_core::de::Deserializer") <'de>, Deserialize this value from the given Serde deserializer. [Read more](https://docs.rs/serde_core/1.0.228/x86_64-unknown-linux-gnu/serde_core/de/trait.Deserialize.html#tymethod.deserialize) [Source](https://docs.rs/arrow-schema/58.1.0/src/arrow_schema/field.rs.html#977-1009) [§](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#impl-Display-for-Field) ### impl [Display](https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html "trait core::fmt::Display") for [Field](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html "struct arrow_schema::Field") [Source](https://docs.rs/arrow-schema/58.1.0/src/arrow_schema/field.rs.html#978-1008) [§](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#method.fmt-1) #### fn [fmt](https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html#tymethod.fmt) (&self, f: &mut [Formatter](https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html "struct core::fmt::Formatter") <'\_>) -> [Result](https://doc.rust-lang.org/nightly/core/fmt/type.Result.html "type core::fmt::Result") Formats the value using the given formatter. [Read more](https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html#tymethod.fmt) [Source](https://docs.rs/arrow-schema/58.1.0/src/arrow_schema/schema.rs.html#168-176) [§](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#impl-Extend%3CField%3E-for-SchemaBuilder) ### impl [Extend](https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.Extend.html "trait core::iter::traits::collect::Extend") <[Field](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html "struct arrow_schema::Field") \> for [SchemaBuilder](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.SchemaBuilder.html "struct arrow_schema::SchemaBuilder") [Source](https://docs.rs/arrow-schema/58.1.0/src/arrow_schema/schema.rs.html#169-175) [§](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#method.extend) #### fn [extend](https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.Extend.html#tymethod.extend) >(&mut self, iter: T) Extends a collection with the contents of an iterator. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.Extend.html#tymethod.extend) [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/collect.rs.html#420) [§](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#method.extend_one) #### fn [extend\_one](https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.Extend.html#method.extend_one) (&mut self, item: A) 🔬This is a nightly-only experimental API. (`extend_one`) Extends a collection with exactly one element. [Source](https://doc.rust-lang.org/nightly/src/core/iter/traits/collect.rs.html#428) [§](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#method.extend_reserve) #### fn [extend\_reserve](https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.Extend.html#method.extend_reserve) (&mut self, additional: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) ) 🔬This is a nightly-only experimental API. (`extend_one`) Reserves capacity in a collection for the given number of additional elements. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.Extend.html#method.extend_reserve) [Source](https://docs.rs/arrow-schema/58.1.0/src/arrow_schema/fields.rs.html#267-271) [§](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#impl-FromIterator%3CField%3E-for-Fields) ### impl [FromIterator](https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.FromIterator.html "trait core::iter::traits::collect::FromIterator") <[Field](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html "struct arrow_schema::Field") \> for [Fields](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Fields.html "struct arrow_schema::Fields") [Source](https://docs.rs/arrow-schema/58.1.0/src/arrow_schema/fields.rs.html#268-270) [§](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#method.from_iter) #### fn [from\_iter](https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.FromIterator.html#tymethod.from_iter) >(iter: T) -> Self Creates a value from an iterator. [Read more](https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.FromIterator.html#tymethod.from_iter) [Source](https://docs.rs/arrow-schema/58.1.0/src/arrow_schema/field.rs.html#159-173) [§](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#impl-Hash-for-Field) ### impl [Hash](https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html "trait core::hash::Hash") for [Field](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html "struct arrow_schema::Field") [Source](https://docs.rs/arrow-schema/58.1.0/src/arrow_schema/field.rs.html#160-172) [§](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#method.hash) #### fn [hash](https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#tymethod.hash) (&self, state: [&mut H](https://doc.rust-lang.org/nightly/std/primitive.reference.html) ) Feeds this value into the given [`Hasher`](https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html "trait core::hash::Hasher") . [Read more](https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#tymethod.hash) 1.3.0 · [Source](https://doc.rust-lang.org/nightly/src/core/hash/mod.rs.html#234-236) [§](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#method.hash_slice) #### fn [hash\_slice](https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#method.hash_slice) (data: &\[Self\], state: [&mut H](https://doc.rust-lang.org/nightly/std/primitive.reference.html) ) where H: [Hasher](https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html "trait core::hash::Hasher") , Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , Feeds a slice of this type into the given [`Hasher`](https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html "trait core::hash::Hasher") . [Read more](https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#method.hash_slice) [Source](https://docs.rs/arrow-schema/58.1.0/src/arrow_schema/field.rs.html#125-157) [§](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#impl-Ord-for-Field) ### impl [Ord](https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html "trait core::cmp::Ord") for [Field](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html "struct arrow_schema::Field") [Source](https://docs.rs/arrow-schema/58.1.0/src/arrow_schema/field.rs.html#126-156) [§](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#method.cmp) #### fn [cmp](https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#tymethod.cmp) (&self, other: &Self) -> [Ordering](https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html "enum core::cmp::Ordering") This method returns an [`Ordering`](https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html "enum core::cmp::Ordering") between `self` and `other`. [Read more](https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#tymethod.cmp) 1.21.0 · [Source](https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1034-1036) [§](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#method.max) #### fn [max](https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.max) (self, other: Self) -> Self where Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , Compares and returns the maximum of two values. [Read more](https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.max) 1.21.0 · [Source](https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1073-1075) [§](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#method.min) #### fn [min](https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.min) (self, other: Self) -> Self where Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , Compares and returns the minimum of two values. [Read more](https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.min) 1.50.0 · [Source](https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1099-1101) [§](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#method.clamp) #### fn [clamp](https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.clamp) (self, min: Self, max: Self) -> Self where Self: [Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , Restrict a value to a certain interval. [Read more](https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html#method.clamp) [Source](https://docs.rs/arrow-schema/58.1.0/src/arrow_schema/field.rs.html#108-115) [§](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#impl-PartialEq-for-Field) ### impl [PartialEq](https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html "trait core::cmp::PartialEq") for [Field](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html "struct arrow_schema::Field") [Source](https://docs.rs/arrow-schema/58.1.0/src/arrow_schema/field.rs.html#109-114) [§](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#method.eq) #### fn [eq](https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq) (&self, other: &Self) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) Tests for `self` and `other` values to be equal, and is used by `==`. 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#264) [§](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#method.ne) #### fn [ne](https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne) (&self, other: [&Rhs](https://doc.rust-lang.org/nightly/std/primitive.reference.html) ) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) Tests for `!=`. The default implementation is almost always sufficient, and should not be overridden without very good reason. [Source](https://docs.rs/arrow-schema/58.1.0/src/arrow_schema/field.rs.html#119-123) [§](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#impl-PartialOrd-for-Field) ### impl [PartialOrd](https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html "trait core::cmp::PartialOrd") for [Field](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html "struct arrow_schema::Field") [Source](https://docs.rs/arrow-schema/58.1.0/src/arrow_schema/field.rs.html#120-122) [§](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#method.partial_cmp) #### fn [partial\_cmp](https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#tymethod.partial_cmp) (&self, other: &Self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <[Ordering](https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html "enum core::cmp::Ordering") \> This method returns an ordering between `self` and `other` values if one exists. [Read more](https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#tymethod.partial_cmp) 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1411) [§](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#method.lt) #### fn [lt](https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.lt) (&self, other: [&Rhs](https://doc.rust-lang.org/nightly/std/primitive.reference.html) ) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) Tests less than (for `self` and `other`) and is used by the `<` operator. [Read more](https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.lt) 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1429) [§](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#method.le) #### fn [le](https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.le) (&self, other: [&Rhs](https://doc.rust-lang.org/nightly/std/primitive.reference.html) ) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) Tests less than or equal to (for `self` and `other`) and is used by the `<=` operator. [Read more](https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.le) 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1447) [§](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#method.gt) #### fn [gt](https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.gt) (&self, other: [&Rhs](https://doc.rust-lang.org/nightly/std/primitive.reference.html) ) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) Tests greater than (for `self` and `other`) and is used by the `>` operator. [Read more](https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.gt) 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#1465) [§](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#method.ge) #### fn [ge](https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.ge) (&self, other: [&Rhs](https://doc.rust-lang.org/nightly/std/primitive.reference.html) ) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) Tests greater than or equal to (for `self` and `other`) and is used by the `>=` operator. [Read more](https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#method.ge) [Source](https://docs.rs/arrow-schema/58.1.0/src/arrow_schema/field.rs.html#48) [§](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#impl-Serialize-for-Field) ### impl [Serialize](https://docs.rs/serde_core/1.0.228/x86_64-unknown-linux-gnu/serde_core/ser/trait.Serialize.html "trait serde_core::ser::Serialize") for [Field](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html "struct arrow_schema::Field") [Source](https://docs.rs/arrow-schema/58.1.0/src/arrow_schema/field.rs.html#48) [§](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#method.serialize) #### fn [serialize](https://docs.rs/serde_core/1.0.228/x86_64-unknown-linux-gnu/serde_core/ser/trait.Serialize.html#tymethod.serialize) <\_\_S>(&self, \_\_serializer: \_\_S) -> [Result](https://doc.rust-lang.org/nightly/core/result/enum.Result.html "enum core::result::Result") <\_\_S::[Ok](https://docs.rs/serde_core/1.0.228/x86_64-unknown-linux-gnu/serde_core/ser/trait.Serializer.html#associatedtype.Ok "type serde_core::ser::Serializer::Ok") , \_\_S::[Error](https://docs.rs/serde_core/1.0.228/x86_64-unknown-linux-gnu/serde_core/ser/trait.Serializer.html#associatedtype.Error "type serde_core::ser::Serializer::Error") \> where \_\_S: [Serializer](https://docs.rs/serde_core/1.0.228/x86_64-unknown-linux-gnu/serde_core/ser/trait.Serializer.html "trait serde_core::ser::Serializer") , Serialize this value into the given Serde serializer. [Read more](https://docs.rs/serde_core/1.0.228/x86_64-unknown-linux-gnu/serde_core/ser/trait.Serialize.html#tymethod.serialize) [Source](https://docs.rs/arrow-schema/58.1.0/src/arrow_schema/ffi.rs.html#631-640) [§](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#impl-TryFrom%3C%26FFI_ArrowSchema%3E-for-Field) ### impl [TryFrom](https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html "trait core::convert::TryFrom") <&[FFI\_ArrowSchema](https://docs.rs/arrow-schema/58.1.0/arrow_schema/ffi/struct.FFI_ArrowSchema.html "struct arrow_schema::ffi::FFI_ArrowSchema") \> for [Field](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html "struct arrow_schema::Field") Available on **crate feature `ffi`** only. [Source](https://docs.rs/arrow-schema/58.1.0/src/arrow_schema/ffi.rs.html#632) [§](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#associatedtype.Error-1) #### type [Error](https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error) = [ArrowError](https://docs.rs/arrow-schema/58.1.0/arrow_schema/enum.ArrowError.html "enum arrow_schema::ArrowError") The type returned in the event of a conversion error. [Source](https://docs.rs/arrow-schema/58.1.0/src/arrow_schema/ffi.rs.html#634-639) [§](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#method.try_from-1) #### fn [try\_from](https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from) (c\_schema: &[FFI\_ArrowSchema](https://docs.rs/arrow-schema/58.1.0/arrow_schema/ffi/struct.FFI_ArrowSchema.html "struct arrow_schema::ffi::FFI_ArrowSchema") ) -> [Result](https://doc.rust-lang.org/nightly/core/result/enum.Result.html "enum core::result::Result") Performs the conversion. [Source](https://docs.rs/arrow-schema/58.1.0/src/arrow_schema/extension/canonical/mod.rs.html#89-124) [§](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#impl-TryFrom%3C%26Field%3E-for-CanonicalExtensionType) ### impl [TryFrom](https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html "trait core::convert::TryFrom") <&[Field](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html "struct arrow_schema::Field") \> for [CanonicalExtensionType](https://docs.rs/arrow-schema/58.1.0/arrow_schema/extension/enum.CanonicalExtensionType.html "enum arrow_schema::extension::CanonicalExtensionType") Available on **crate feature `canonical_extension_types`** only. [Source](https://docs.rs/arrow-schema/58.1.0/src/arrow_schema/extension/canonical/mod.rs.html#90) [§](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#associatedtype.Error) #### type [Error](https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error) = [ArrowError](https://docs.rs/arrow-schema/58.1.0/arrow_schema/enum.ArrowError.html "enum arrow_schema::ArrowError") The type returned in the event of a conversion error. [Source](https://docs.rs/arrow-schema/58.1.0/src/arrow_schema/extension/canonical/mod.rs.html#92-123) [§](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#method.try_from) #### fn [try\_from](https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from) (value: &[Field](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html "struct arrow_schema::Field") ) -> [Result](https://doc.rust-lang.org/nightly/core/result/enum.Result.html "enum core::result::Result") Performs the conversion. [Source](https://docs.rs/arrow-schema/58.1.0/src/arrow_schema/ffi.rs.html#789-808) [§](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#impl-TryFrom%3C%26Field%3E-for-FFI_ArrowSchema) ### impl [TryFrom](https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html "trait core::convert::TryFrom") <&[Field](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html "struct arrow_schema::Field") \> for [FFI\_ArrowSchema](https://docs.rs/arrow-schema/58.1.0/arrow_schema/ffi/struct.FFI_ArrowSchema.html "struct arrow_schema::ffi::FFI_ArrowSchema") Available on **crate feature `ffi`** only. [Source](https://docs.rs/arrow-schema/58.1.0/src/arrow_schema/ffi.rs.html#790) [§](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#associatedtype.Error-2) #### type [Error](https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error) = [ArrowError](https://docs.rs/arrow-schema/58.1.0/arrow_schema/enum.ArrowError.html "enum arrow_schema::ArrowError") The type returned in the event of a conversion error. [Source](https://docs.rs/arrow-schema/58.1.0/src/arrow_schema/ffi.rs.html#792-807) [§](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#method.try_from-2) #### fn [try\_from](https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from) (field: &[Field](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html "struct arrow_schema::Field") ) -> [Result](https://doc.rust-lang.org/nightly/core/result/enum.Result.html "enum core::result::Result") Performs the conversion. [Source](https://docs.rs/arrow-schema/58.1.0/src/arrow_schema/ffi.rs.html#828-834) [§](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#impl-TryFrom%3CField%3E-for-FFI_ArrowSchema) ### impl [TryFrom](https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html "trait core::convert::TryFrom") <[Field](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html "struct arrow_schema::Field") \> for [FFI\_ArrowSchema](https://docs.rs/arrow-schema/58.1.0/arrow_schema/ffi/struct.FFI_ArrowSchema.html "struct arrow_schema::ffi::FFI_ArrowSchema") Available on **crate feature `ffi`** only. [Source](https://docs.rs/arrow-schema/58.1.0/src/arrow_schema/ffi.rs.html#829) [§](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#associatedtype.Error-3) #### type [Error](https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error) = [ArrowError](https://docs.rs/arrow-schema/58.1.0/arrow_schema/enum.ArrowError.html "enum arrow_schema::ArrowError") The type returned in the event of a conversion error. [Source](https://docs.rs/arrow-schema/58.1.0/src/arrow_schema/ffi.rs.html#831-833) [§](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#method.try_from-3) #### fn [try\_from](https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from) (field: [Field](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html "struct arrow_schema::Field") ) -> [Result](https://doc.rust-lang.org/nightly/core/result/enum.Result.html "enum core::result::Result") Performs the conversion. [Source](https://docs.rs/arrow-schema/58.1.0/src/arrow_schema/field.rs.html#117) [§](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#impl-Eq-for-Field) ### impl [Eq](https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html "trait core::cmp::Eq") for [Field](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html "struct arrow_schema::Field") Auto Trait Implementations[§](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#synthetic-implementations) ---------------------------------------------------------------------------------------------------------------------------- [§](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#impl-Freeze-for-Field) ### impl [Freeze](https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html "trait core::marker::Freeze") for [Field](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html "struct arrow_schema::Field") [§](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#impl-RefUnwindSafe-for-Field) ### impl [RefUnwindSafe](https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html "trait core::panic::unwind_safe::RefUnwindSafe") for [Field](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html "struct arrow_schema::Field") [§](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#impl-Send-for-Field) ### impl [Send](https://doc.rust-lang.org/nightly/core/marker/trait.Send.html "trait core::marker::Send") for [Field](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html "struct arrow_schema::Field") [§](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#impl-Sync-for-Field) ### impl [Sync](https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html "trait core::marker::Sync") for [Field](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html "struct arrow_schema::Field") [§](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#impl-Unpin-for-Field) ### impl [Unpin](https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html "trait core::marker::Unpin") for [Field](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html "struct arrow_schema::Field") [§](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#impl-UnsafeUnpin-for-Field) ### impl [UnsafeUnpin](https://doc.rust-lang.org/nightly/core/marker/trait.UnsafeUnpin.html "trait core::marker::UnsafeUnpin") for [Field](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html "struct arrow_schema::Field") [§](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#impl-UnwindSafe-for-Field) ### impl [UnwindSafe](https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html "trait core::panic::unwind_safe::UnwindSafe") for [Field](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html "struct arrow_schema::Field") Blanket Implementations[§](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#blanket-implementations) ----------------------------------------------------------------------------------------------------------------------- [Source](https://doc.rust-lang.org/nightly/src/core/any.rs.html#141) [§](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#impl-Any-for-T) ### impl [Any](https://doc.rust-lang.org/nightly/core/any/trait.Any.html "trait core::any::Any") for T where T: 'static + ?[Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , [Source](https://doc.rust-lang.org/nightly/src/core/any.rs.html#142) [§](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#method.type_id) #### fn [type\_id](https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id) (&self) -> [TypeId](https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html "struct core::any::TypeId") Gets the `TypeId` of `self`. [Read more](https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id) [Source](https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#212) [§](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#impl-Borrow%3CT%3E-for-T) ### impl [Borrow](https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html "trait core::borrow::Borrow") for T where T: ?[Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , [Source](https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#214) [§](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#method.borrow) #### fn [borrow](https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow) (&self) -> [&T](https://doc.rust-lang.org/nightly/std/primitive.reference.html) Immutably borrows from an owned value. [Read more](https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow) [Source](https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#221) [§](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#impl-BorrowMut%3CT%3E-for-T) ### impl [BorrowMut](https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html "trait core::borrow::BorrowMut") for T where T: ?[Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , [Source](https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#222) [§](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#method.borrow_mut) #### fn [borrow\_mut](https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut) (&mut self) -> [&mut T](https://doc.rust-lang.org/nightly/std/primitive.reference.html) Mutably borrows from an owned value. [Read more](https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut) [Source](https://doc.rust-lang.org/nightly/src/core/clone.rs.html#547) [§](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#impl-CloneToUninit-for-T) ### impl [CloneToUninit](https://doc.rust-lang.org/nightly/core/clone/trait.CloneToUninit.html "trait core::clone::CloneToUninit") for T where T: [Clone](https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html "trait core::clone::Clone") , [Source](https://doc.rust-lang.org/nightly/src/core/clone.rs.html#549) [§](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#method.clone_to_uninit) #### unsafe fn [clone\_to\_uninit](https://doc.rust-lang.org/nightly/core/clone/trait.CloneToUninit.html#tymethod.clone_to_uninit) (&self, dest: [\*mut](https://doc.rust-lang.org/nightly/std/primitive.pointer.html) [u8](https://doc.rust-lang.org/nightly/std/primitive.u8.html) ) 🔬This is a nightly-only experimental API. (`clone_to_uninit`) Performs copy-assignment from `self` to `dest`. [Read more](https://doc.rust-lang.org/nightly/core/clone/trait.CloneToUninit.html#tymethod.clone_to_uninit) [Source](https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#785) [§](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#impl-From%3CT%3E-for-T) ### impl [From](https://doc.rust-lang.org/nightly/core/convert/trait.From.html "trait core::convert::From") for T [Source](https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#788) [§](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#method.from) #### fn [from](https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from) (t: T) -> T Returns the argument unchanged. [Source](https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#767-769) [§](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#impl-Into%3CU%3E-for-T) ### impl [Into](https://doc.rust-lang.org/nightly/core/convert/trait.Into.html "trait core::convert::Into") for T where U: [From](https://doc.rust-lang.org/nightly/core/convert/trait.From.html "trait core::convert::From") , [Source](https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#777) [§](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#method.into) #### fn [into](https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into) (self) -> U Calls `U::from(self)`. That is, this conversion is whatever the implementation of `[From](https://doc.rust-lang.org/nightly/core/convert/trait.From.html "trait core::convert::From") for U` chooses to do. [Source](https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#72-74) [§](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#impl-ToOwned-for-T) ### impl [ToOwned](https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html "trait alloc::borrow::ToOwned") for T where T: [Clone](https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html "trait core::clone::Clone") , [Source](https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#76) [§](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#associatedtype.Owned) #### type [Owned](https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned) = T The resulting type after obtaining ownership. [Source](https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#77) [§](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#method.to_owned) #### fn [to\_owned](https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned) (&self) -> T Creates owned data from borrowed data, usually by cloning. [Read more](https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned) [Source](https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#81) [§](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#method.clone_into) #### fn [clone\_into](https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into) (&self, target: [&mut T](https://doc.rust-lang.org/nightly/std/primitive.reference.html) ) Uses borrowed data to replace owned data, usually by cloning. [Read more](https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into) [Source](https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2891) [§](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#impl-ToString-for-T) ### impl [ToString](https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html "trait alloc::string::ToString") for T where T: [Display](https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html "trait core::fmt::Display") + ?[Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized") , [Source](https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2893) [§](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#method.to_string) #### fn [to\_string](https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html#tymethod.to_string) (&self) -> [String](https://doc.rust-lang.org/nightly/alloc/string/struct.String.html "struct alloc::string::String") Converts the given value to a `String`. [Read more](https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html#tymethod.to_string) [Source](https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#827-829) [§](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#impl-TryFrom%3CU%3E-for-T) ### impl [TryFrom](https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html "trait core::convert::TryFrom") for T where U: [Into](https://doc.rust-lang.org/nightly/core/convert/trait.Into.html "trait core::convert::Into") , [Source](https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#831) [§](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#associatedtype.Error-5) #### type [Error](https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error) = [Infallible](https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html "enum core::convert::Infallible") The type returned in the event of a conversion error. [Source](https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#834) [§](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#method.try_from-4) #### fn [try\_from](https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from) (value: U) -> [Result](https://doc.rust-lang.org/nightly/core/result/enum.Result.html "enum core::result::Result") >::[Error](https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error "type core::convert::TryFrom::Error") \> Performs the conversion. [Source](https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#811-813) [§](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#impl-TryInto%3CU%3E-for-T) ### impl [TryInto](https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html "trait core::convert::TryInto") for T where U: [TryFrom](https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html "trait core::convert::TryFrom") , [Source](https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#815) [§](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#associatedtype.Error-4) #### type [Error](https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error) = >::[Error](https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error "type core::convert::TryFrom::Error") The type returned in the event of a conversion error. [Source](https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#818) [§](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#method.try_into) #### fn [try\_into](https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into) (self) -> [Result](https://doc.rust-lang.org/nightly/core/result/enum.Result.html "enum core::result::Result") >::[Error](https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error "type core::convert::TryFrom::Error") \> Performs the conversion. [Source](https://docs.rs/serde_core/1.0.228/x86_64-unknown-linux-gnu/src/serde_core/de/mod.rs.html#633) [§](https://docs.rs/arrow-schema/58.1.0/arrow_schema/struct.Field.html#impl-DeserializeOwned-for-T) ### impl [DeserializeOwned](https://docs.rs/serde_core/1.0.228/x86_64-unknown-linux-gnu/serde_core/de/trait.DeserializeOwned.html "trait serde_core::de::DeserializeOwned") for T where T: for<'de> [Deserialize](https://docs.rs/serde_core/1.0.228/x86_64-unknown-linux-gnu/serde_core/de/trait.Deserialize.html "trait serde_core::de::Deserialize") <'de>, --- # List of all items in this crate [Docs.rs](https://docs.rs/) * [arrow-cast-58.1.0](https://docs.rs/arrow-cast/58.1.0/arrow_cast/all.html# "Cast kernel and utilities for Apache Arrow") * arrow-cast 58.1.0 * [Docs.rs crate page](https://docs.rs/crate/arrow-cast/58.1.0 "See arrow-cast in docs.rs") * [Apache-2.0](https://spdx.org/licenses/Apache-2.0) * Links * [Homepage](https://github.com/apache/arrow-rs) * [Repository](https://github.com/apache/arrow-rs) * [crates.io](https://crates.io/crates/arrow-cast "See arrow-cast in crates.io") * [Source](https://docs.rs/crate/arrow-cast/58.1.0/source/ "Browse source of arrow-cast-58.1.0") * Owners * [kou](https://crates.io/users/kou) * [xhochy](https://crates.io/users/xhochy) * [nevi-me](https://crates.io/users/nevi-me) * [alamb](https://crates.io/users/alamb) * [tustvold](https://crates.io/users/tustvold) * Dependencies * * [arrow-array ^58.1.0 _normal_](https://docs.rs/arrow-array/^58.1.0/) * [arrow-buffer ^58.1.0 _normal_](https://docs.rs/arrow-buffer/^58.1.0/) * [arrow-data ^58.1.0 _normal_](https://docs.rs/arrow-data/^58.1.0/) * [arrow-ord ^58.1.0 _normal_](https://docs.rs/arrow-ord/^58.1.0/) * [arrow-schema ^58.1.0 _normal_](https://docs.rs/arrow-schema/^58.1.0/) * [arrow-select ^58.1.0 _normal_](https://docs.rs/arrow-select/^58.1.0/) * [atoi ^2.0.0 _normal_](https://docs.rs/atoi/^2.0.0/) * [base64 ^0.22 _normal_](https://docs.rs/base64/^0.22/) * [chrono ^0.4.40 _normal_](https://docs.rs/chrono/^0.4.40/) * [comfy-table ^7 _normal_ _optional_](https://docs.rs/comfy-table/^7/) * [half ^2.1 _normal_](https://docs.rs/half/^2.1/) * [lexical-core ^1.0 _normal_](https://docs.rs/lexical-core/^1.0/) * [num-traits ^0.2.19 _normal_](https://docs.rs/num-traits/^0.2.19/) * [ryu ^1.0.16 _normal_](https://docs.rs/ryu/^1.0.16/) * [criterion ^0.8.0 _dev_](https://docs.rs/criterion/^0.8.0/) * [half ^2.1 _dev_](https://docs.rs/half/^2.1/) * [insta ^1.46.3 _dev_](https://docs.rs/insta/^1.46.3/) * [rand ^0.9 _dev_](https://docs.rs/rand/^0.9/) * Versions * [**100%** of the crate is documented](https://docs.rs/crate/arrow-cast/58.1.0) * [Platform](https://docs.rs/arrow-cast/58.1.0/arrow_cast/all.html#) * [aarch64-apple-darwin](https://docs.rs/crate/arrow-cast/58.1.0/target-redirect/aarch64-apple-darwin/arrow_cast/all.html) * [aarch64-unknown-linux-gnu](https://docs.rs/crate/arrow-cast/58.1.0/target-redirect/aarch64-unknown-linux-gnu/arrow_cast/all.html) * [i686-pc-windows-msvc](https://docs.rs/crate/arrow-cast/58.1.0/target-redirect/i686-pc-windows-msvc/arrow_cast/all.html) * [x86\_64-pc-windows-msvc](https://docs.rs/crate/arrow-cast/58.1.0/target-redirect/x86_64-pc-windows-msvc/arrow_cast/all.html) * [x86\_64-unknown-linux-gnu](https://docs.rs/crate/arrow-cast/58.1.0/target-redirect/arrow_cast/all.html) * [Feature flags](https://docs.rs/crate/arrow-cast/58.1.0/features "Browse available feature flags of arrow-cast-58.1.0") * [docs.rs](https://docs.rs/arrow-cast/58.1.0/arrow_cast/all.html#) * [About docs.rs](https://docs.rs/about) * [Badges](https://docs.rs/about/badges) * [Builds](https://docs.rs/about/builds) * [Metadata](https://docs.rs/about/metadata) * [Shorthand URLs](https://docs.rs/about/redirections) * [Download](https://docs.rs/about/download) * [Rustdoc JSON](https://docs.rs/about/rustdoc-json) * [Build queue](https://docs.rs/releases/queue) * [Privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#docs.rs) * [Rust](https://docs.rs/arrow-cast/58.1.0/arrow_cast/all.html#) * [Rust website](https://www.rust-lang.org/) * [The Book](https://doc.rust-lang.org/book/) * [Standard Library API Reference](https://doc.rust-lang.org/std/) * [Rust by Example](https://doc.rust-lang.org/rust-by-example/) * [The Cargo Guide](https://doc.rust-lang.org/cargo/guide/) * [Clippy Documentation](https://doc.rust-lang.org/nightly/clippy) [Skip to main content](https://docs.rs/arrow-cast/58.1.0/arrow_cast/all.html#main-content) [All](https://docs.rs/arrow-cast/58.1.0/arrow_cast/all.html#) -------------------------------------------------------------- List of all items ================= ### Structs * [cast::CastOptions](https://docs.rs/arrow-cast/58.1.0/arrow_cast/cast/struct.CastOptions.html) * [display::ArrayFormatter](https://docs.rs/arrow-cast/58.1.0/arrow_cast/display/struct.ArrayFormatter.html) * [display::FormatOptions](https://docs.rs/arrow-cast/58.1.0/arrow_cast/display/struct.FormatOptions.html) * [display::ValueFormatter](https://docs.rs/arrow-cast/58.1.0/arrow_cast/display/struct.ValueFormatter.html) * [parse::IntervalParseConfig](https://docs.rs/arrow-cast/58.1.0/arrow_cast/parse/struct.IntervalParseConfig.html) ### Enums * [display::DurationFormat](https://docs.rs/arrow-cast/58.1.0/arrow_cast/display/enum.DurationFormat.html) * [display::FormatError](https://docs.rs/arrow-cast/58.1.0/arrow_cast/display/enum.FormatError.html) * [parse::IntervalUnit](https://docs.rs/arrow-cast/58.1.0/arrow_cast/parse/enum.IntervalUnit.html) ### Traits * [base64::Engine](https://docs.rs/arrow-cast/58.1.0/arrow_cast/base64/trait.Engine.html) * [cast::DecimalCast](https://docs.rs/arrow-cast/58.1.0/arrow_cast/cast/trait.DecimalCast.html) * [display::ArrayFormatterFactory](https://docs.rs/arrow-cast/58.1.0/arrow_cast/display/trait.ArrayFormatterFactory.html) * [display::DisplayIndex](https://docs.rs/arrow-cast/58.1.0/arrow_cast/display/trait.DisplayIndex.html) * [parse::Parser](https://docs.rs/arrow-cast/58.1.0/arrow_cast/parse/trait.Parser.html) ### Functions * [base64::b64\_decode](https://docs.rs/arrow-cast/58.1.0/arrow_cast/base64/fn.b64_decode.html) * [base64::b64\_encode](https://docs.rs/arrow-cast/58.1.0/arrow_cast/base64/fn.b64_encode.html) * [cast::can\_cast\_types](https://docs.rs/arrow-cast/58.1.0/arrow_cast/cast/fn.can_cast_types.html) * [cast::cast](https://docs.rs/arrow-cast/58.1.0/arrow_cast/cast/fn.cast.html) * [cast::cast\_with\_options](https://docs.rs/arrow-cast/58.1.0/arrow_cast/cast/fn.cast_with_options.html) * [cast::rescale\_decimal](https://docs.rs/arrow-cast/58.1.0/arrow_cast/cast/fn.rescale_decimal.html) * [display::array\_value\_to\_string](https://docs.rs/arrow-cast/58.1.0/arrow_cast/display/fn.array_value_to_string.html) * [display::lexical\_to\_string](https://docs.rs/arrow-cast/58.1.0/arrow_cast/display/fn.lexical_to_string.html) * [parse::parse\_decimal](https://docs.rs/arrow-cast/58.1.0/arrow_cast/parse/fn.parse_decimal.html) * [parse::parse\_interval\_day\_time](https://docs.rs/arrow-cast/58.1.0/arrow_cast/parse/fn.parse_interval_day_time.html) * [parse::parse\_interval\_month\_day\_nano](https://docs.rs/arrow-cast/58.1.0/arrow_cast/parse/fn.parse_interval_month_day_nano.html) * [parse::parse\_interval\_month\_day\_nano\_config](https://docs.rs/arrow-cast/58.1.0/arrow_cast/parse/fn.parse_interval_month_day_nano_config.html) * [parse::parse\_interval\_year\_month](https://docs.rs/arrow-cast/58.1.0/arrow_cast/parse/fn.parse_interval_year_month.html) * [parse::string\_to\_datetime](https://docs.rs/arrow-cast/58.1.0/arrow_cast/parse/fn.string_to_datetime.html) * [parse::string\_to\_time\_nanoseconds](https://docs.rs/arrow-cast/58.1.0/arrow_cast/parse/fn.string_to_time_nanoseconds.html) * [parse::string\_to\_timestamp\_nanos](https://docs.rs/arrow-cast/58.1.0/arrow_cast/parse/fn.string_to_timestamp_nanos.html) * [pretty::pretty\_format\_batches](https://docs.rs/arrow-cast/58.1.0/arrow_cast/pretty/fn.pretty_format_batches.html) * [pretty::pretty\_format\_batches\_with\_options](https://docs.rs/arrow-cast/58.1.0/arrow_cast/pretty/fn.pretty_format_batches_with_options.html) * [pretty::pretty\_format\_batches\_with\_schema](https://docs.rs/arrow-cast/58.1.0/arrow_cast/pretty/fn.pretty_format_batches_with_schema.html) * [pretty::pretty\_format\_columns](https://docs.rs/arrow-cast/58.1.0/arrow_cast/pretty/fn.pretty_format_columns.html) * [pretty::pretty\_format\_columns\_with\_options](https://docs.rs/arrow-cast/58.1.0/arrow_cast/pretty/fn.pretty_format_columns_with_options.html) * [pretty::print\_batches](https://docs.rs/arrow-cast/58.1.0/arrow_cast/pretty/fn.print_batches.html) * [pretty::print\_columns](https://docs.rs/arrow-cast/58.1.0/arrow_cast/pretty/fn.print_columns.html) ### Type Aliases * [display::FormatResult](https://docs.rs/arrow-cast/58.1.0/arrow_cast/display/type.FormatResult.html) * [parse::MonthDayNano](https://docs.rs/arrow-cast/58.1.0/arrow_cast/parse/type.MonthDayNano.html) ### Constants * [base64::BASE64\_STANDARD](https://docs.rs/arrow-cast/58.1.0/arrow_cast/base64/constant.BASE64_STANDARD.html) * [base64::BASE64\_STANDARD\_NO\_PAD](https://docs.rs/arrow-cast/58.1.0/arrow_cast/base64/constant.BASE64_STANDARD_NO_PAD.html) * [base64::BASE64\_URL\_SAFE](https://docs.rs/arrow-cast/58.1.0/arrow_cast/base64/constant.BASE64_URL_SAFE.html) * [base64::BASE64\_URL\_SAFE\_NO\_PAD](https://docs.rs/arrow-cast/58.1.0/arrow_cast/base64/constant.BASE64_URL_SAFE_NO_PAD.html) --- # AsArray in arrow::array - Rust [Docs.rs](https://docs.rs/) * [arrow-58.1.0](https://docs.rs/arrow/58.1.0/arrow/array/trait.AsArray.html# "Rust implementation of Apache Arrow") * arrow 58.1.0 * [Docs.rs crate page](https://docs.rs/crate/arrow/58.1.0 "See arrow in docs.rs") * [Apache-2.0](https://spdx.org/licenses/Apache-2.0) * Links * [Homepage](https://github.com/apache/arrow-rs) * [Repository](https://github.com/apache/arrow-rs) * [crates.io](https://crates.io/crates/arrow "See arrow in crates.io") * [Source](https://docs.rs/crate/arrow/58.1.0/source/ "Browse source of arrow-58.1.0") * Owners * [andygrove](https://crates.io/users/andygrove) * [kou](https://crates.io/users/kou) * [kszucs](https://crates.io/users/kszucs) * [xhochy](https://crates.io/users/xhochy) * [nevi-me](https://crates.io/users/nevi-me) * [alamb](https://crates.io/users/alamb) * [tustvold](https://crates.io/users/tustvold) * Dependencies * * [arrow-arith ^58.1.0 _normal_](https://docs.rs/arrow-arith/^58.1.0/) * [arrow-array ^58.1.0 _normal_](https://docs.rs/arrow-array/^58.1.0/) * [arrow-buffer ^58.1.0 _normal_](https://docs.rs/arrow-buffer/^58.1.0/) * [arrow-cast ^58.1.0 _normal_](https://docs.rs/arrow-cast/^58.1.0/) * [arrow-csv ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-csv/^58.1.0/) * [arrow-data ^58.1.0 _normal_](https://docs.rs/arrow-data/^58.1.0/) * [arrow-ipc ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-ipc/^58.1.0/) * [arrow-json ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-json/^58.1.0/) * [arrow-ord ^58.1.0 _normal_](https://docs.rs/arrow-ord/^58.1.0/) * [arrow-pyarrow ^58.1.0 _normal_ _optional_](https://docs.rs/arrow-pyarrow/^58.1.0/) * [arrow-row ^58.1.0 _normal_](https://docs.rs/arrow-row/^58.1.0/) * [arrow-schema ^58.1.0 _normal_](https://docs.rs/arrow-schema/^58.1.0/) * [arrow-select ^58.1.0 _normal_](https://docs.rs/arrow-select/^58.1.0/) * [arrow-string ^58.1.0 _normal_](https://docs.rs/arrow-string/^58.1.0/) * [half ^2.1 _normal_ _optional_](https://docs.rs/half/^2.1/) * [rand ^0.9 _normal_ _optional_](https://docs.rs/rand/^0.9/) * [bytes ^1.9 _dev_](https://docs.rs/bytes/^1.9/) * [chrono ^0.4.40 _dev_](https://docs.rs/chrono/^0.4.40/) * [criterion ^0.8.0 _dev_](https://docs.rs/criterion/^0.8.0/) * [half ^2.1 _dev_](https://docs.rs/half/^2.1/) * [memmap2 ^0.9.3 _dev_](https://docs.rs/memmap2/^0.9.3/) * [rand ^0.9 _dev_](https://docs.rs/rand/^0.9/) * [serde ^1.0 _dev_](https://docs.rs/serde/^1.0/) * Versions * [**100%** of the crate is documented](https://docs.rs/crate/arrow/58.1.0) * [Platform](https://docs.rs/arrow/58.1.0/arrow/array/trait.AsArray.html#) * [x86\_64-unknown-linux-gnu](https://docs.rs/crate/arrow/58.1.0/target-redirect/arrow/array/trait.AsArray.html) * [Feature flags](https://docs.rs/crate/arrow/58.1.0/features "Browse available feature flags of arrow-58.1.0") * [docs.rs](https://docs.rs/arrow/58.1.0/arrow/array/trait.AsArray.html#) * [About docs.rs](https://docs.rs/about) * [Badges](https://docs.rs/about/badges) * [Builds](https://docs.rs/about/builds) * [Metadata](https://docs.rs/about/metadata) * [Shorthand URLs](https://docs.rs/about/redirections) * [Download](https://docs.rs/about/download) * [Rustdoc JSON](https://docs.rs/about/rustdoc-json) * [Build queue](https://docs.rs/releases/queue) * [Privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#docs.rs) * [Rust](https://docs.rs/arrow/58.1.0/arrow/array/trait.AsArray.html#) * [Rust website](https://www.rust-lang.org/) * [The Book](https://doc.rust-lang.org/book/) * [Standard Library API Reference](https://doc.rust-lang.org/std/) * [Rust by Example](https://doc.rust-lang.org/rust-by-example/) * [The Cargo Guide](https://doc.rust-lang.org/cargo/guide/) * [Clippy Documentation](https://doc.rust-lang.org/nightly/clippy) [Skip to main content](https://docs.rs/arrow/58.1.0/arrow/array/trait.AsArray.html#main-content) [AsArray](https://docs.rs/arrow/58.1.0/arrow/array/trait.AsArray.html#) ------------------------------------------------------------------------ [arrow](https://docs.rs/arrow/58.1.0/arrow/index.html) ::[array](https://docs.rs/arrow/58.1.0/arrow/array/index.html) Trait AsArray Copy item path ============================ [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#835) pub trait AsArray: Sealed { Show 36 methods // Required methods fn as_boolean_opt(&self) -> Option<&BooleanArray>; fn as_primitive_opt(&self) -> Option<&PrimitiveArray> where T: ArrowPrimitiveType; fn as_bytes_opt(&self) -> Option<&GenericByteArray> where T: ByteArrayType; fn as_byte_view_opt(&self) -> Option<&GenericByteViewArray> where T: ByteViewType; fn as_struct_opt(&self) -> Option<&StructArray>; fn as_union_opt(&self) -> Option<&UnionArray>; fn as_list_opt(&self) -> Option<&GenericListArray> where O: OffsetSizeTrait; fn as_list_view_opt(&self) -> Option<&GenericListViewArray> where O: OffsetSizeTrait; fn as_fixed_size_binary_opt(&self) -> Option<&FixedSizeBinaryArray>; fn as_fixed_size_list_opt(&self) -> Option<&FixedSizeListArray>; fn as_map_opt(&self) -> Option<&MapArray>; fn as_dictionary_opt(&self) -> Option<&DictionaryArray> where K: ArrowDictionaryKeyType; fn as_run_opt(&self) -> Option<&RunArray> where K: RunEndIndexType; fn as_any_dictionary_opt(&self) -> Option<&dyn AnyDictionaryArray>; // Provided methods fn as_boolean(&self) -> &BooleanArray { ... } fn as_primitive(&self) -> &PrimitiveArray where T: ArrowPrimitiveType { ... } fn as_bytes(&self) -> &GenericByteArray where T: ByteArrayType { ... } fn as_string_opt( &self, ) -> Option<&GenericByteArray>> where O: OffsetSizeTrait { ... } fn as_string(&self) -> &GenericByteArray> where O: OffsetSizeTrait { ... } fn as_binary_opt( &self, ) -> Option<&GenericByteArray>> where O: OffsetSizeTrait { ... } fn as_binary(&self) -> &GenericByteArray> where O: OffsetSizeTrait { ... } fn as_string_view_opt( &self, ) -> Option<&GenericByteViewArray> { ... } fn as_string_view(&self) -> &GenericByteViewArray { ... } fn as_binary_view_opt( &self, ) -> Option<&GenericByteViewArray> { ... } fn as_binary_view(&self) -> &GenericByteViewArray { ... } fn as_byte_view(&self) -> &GenericByteViewArray where T: ByteViewType { ... } fn as_struct(&self) -> &StructArray { ... } fn as_union(&self) -> &UnionArray { ... } fn as_list(&self) -> &GenericListArray where O: OffsetSizeTrait { ... } fn as_list_view(&self) -> &GenericListViewArray where O: OffsetSizeTrait { ... } fn as_fixed_size_binary(&self) -> &FixedSizeBinaryArray { ... } fn as_fixed_size_list(&self) -> &FixedSizeListArray { ... } fn as_map(&self) -> &MapArray { ... } fn as_dictionary(&self) -> &DictionaryArray where K: ArrowDictionaryKeyType { ... } fn as_run(&self) -> &RunArray where K: RunEndIndexType { ... } fn as_any_dictionary(&self) -> &dyn AnyDictionaryArray { ... } } Expand description An extension trait for `dyn Array` that provides ergonomic downcasting let col = Arc::new(Int32Array::from(vec![1, 2, 3])) as ArrayRef; assert_eq!(col.as_primitive::().values(), &[1, 2, 3]); Required Methods[§](https://docs.rs/arrow/58.1.0/arrow/array/trait.AsArray.html#required-methods) -------------------------------------------------------------------------------------------------- [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#837) #### fn [as\_boolean\_opt](https://docs.rs/arrow/58.1.0/arrow/array/trait.AsArray.html#tymethod.as_boolean_opt) (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <&[BooleanArray](https://docs.rs/arrow/58.1.0/arrow/array/struct.BooleanArray.html "struct arrow::array::BooleanArray") \> Downcast this to a [`BooleanArray`](https://docs.rs/arrow/58.1.0/arrow/array/struct.BooleanArray.html "struct arrow::array::BooleanArray") returning `None` if not possible [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#845) #### fn [as\_primitive\_opt](https://docs.rs/arrow/58.1.0/arrow/array/trait.AsArray.html#tymethod.as_primitive_opt) (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <&[PrimitiveArray](https://docs.rs/arrow/58.1.0/arrow/array/struct.PrimitiveArray.html "struct arrow::array::PrimitiveArray") > where T: [ArrowPrimitiveType](https://docs.rs/arrow/58.1.0/arrow/array/trait.ArrowPrimitiveType.html "trait arrow::array::ArrowPrimitiveType") , Downcast this to a [`PrimitiveArray`](https://docs.rs/arrow/58.1.0/arrow/array/struct.PrimitiveArray.html "struct arrow::array::PrimitiveArray") returning `None` if not possible [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#853) #### fn [as\_bytes\_opt](https://docs.rs/arrow/58.1.0/arrow/array/trait.AsArray.html#tymethod.as_bytes_opt) (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <&[GenericByteArray](https://docs.rs/arrow/58.1.0/arrow/array/struct.GenericByteArray.html "struct arrow::array::GenericByteArray") > where T: [ByteArrayType](https://docs.rs/arrow/58.1.0/arrow/datatypes/trait.ByteArrayType.html "trait arrow::datatypes::ByteArrayType") , Downcast this to a [`GenericByteArray`](https://docs.rs/arrow/58.1.0/arrow/array/struct.GenericByteArray.html "struct arrow::array::GenericByteArray") returning `None` if not possible [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#901) #### fn [as\_byte\_view\_opt](https://docs.rs/arrow/58.1.0/arrow/array/trait.AsArray.html#tymethod.as_byte_view_opt) (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <&[GenericByteViewArray](https://docs.rs/arrow/58.1.0/arrow/array/struct.GenericByteViewArray.html "struct arrow::array::GenericByteViewArray") > where T: [ByteViewType](https://docs.rs/arrow/58.1.0/arrow/datatypes/trait.ByteViewType.html "trait arrow::datatypes::ByteViewType") , Downcast this to a [`GenericByteViewArray`](https://docs.rs/arrow/58.1.0/arrow/array/struct.GenericByteViewArray.html "struct arrow::array::GenericByteViewArray") returning `None` if not possible [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#909) #### fn [as\_struct\_opt](https://docs.rs/arrow/58.1.0/arrow/array/trait.AsArray.html#tymethod.as_struct_opt) (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <&[StructArray](https://docs.rs/arrow/58.1.0/arrow/array/struct.StructArray.html "struct arrow::array::StructArray") \> Downcast this to a [`StructArray`](https://docs.rs/arrow/58.1.0/arrow/array/struct.StructArray.html "struct arrow::array::StructArray") returning `None` if not possible [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#917) #### fn [as\_union\_opt](https://docs.rs/arrow/58.1.0/arrow/array/trait.AsArray.html#tymethod.as_union_opt) (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <&[UnionArray](https://docs.rs/arrow/58.1.0/arrow/array/struct.UnionArray.html "struct arrow::array::UnionArray") \> Downcast this to a [`UnionArray`](https://docs.rs/arrow/58.1.0/arrow/array/struct.UnionArray.html "struct arrow::array::UnionArray") returning `None` if not possible [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#925) #### fn [as\_list\_opt](https://docs.rs/arrow/58.1.0/arrow/array/trait.AsArray.html#tymethod.as_list_opt) (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <&[GenericListArray](https://docs.rs/arrow/58.1.0/arrow/array/struct.GenericListArray.html "struct arrow::array::GenericListArray") > where O: [OffsetSizeTrait](https://docs.rs/arrow/58.1.0/arrow/array/trait.OffsetSizeTrait.html "trait arrow::array::OffsetSizeTrait") , Downcast this to a [`GenericListArray`](https://docs.rs/arrow/58.1.0/arrow/array/struct.GenericListArray.html "struct arrow::array::GenericListArray") returning `None` if not possible [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#933) #### fn [as\_list\_view\_opt](https://docs.rs/arrow/58.1.0/arrow/array/trait.AsArray.html#tymethod.as_list_view_opt) (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <&[GenericListViewArray](https://docs.rs/arrow/58.1.0/arrow/array/struct.GenericListViewArray.html "struct arrow::array::GenericListViewArray") > where O: [OffsetSizeTrait](https://docs.rs/arrow/58.1.0/arrow/array/trait.OffsetSizeTrait.html "trait arrow::array::OffsetSizeTrait") , Downcast this to a [`GenericListViewArray`](https://docs.rs/arrow/58.1.0/arrow/array/struct.GenericListViewArray.html "struct arrow::array::GenericListViewArray") returning `None` if not possible [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#941) #### fn [as\_fixed\_size\_binary\_opt](https://docs.rs/arrow/58.1.0/arrow/array/trait.AsArray.html#tymethod.as_fixed_size_binary_opt) (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <&[FixedSizeBinaryArray](https://docs.rs/arrow/58.1.0/arrow/array/struct.FixedSizeBinaryArray.html "struct arrow::array::FixedSizeBinaryArray") \> Downcast this to a [`FixedSizeBinaryArray`](https://docs.rs/arrow/58.1.0/arrow/array/struct.FixedSizeBinaryArray.html "struct arrow::array::FixedSizeBinaryArray") returning `None` if not possible [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#950) #### fn [as\_fixed\_size\_list\_opt](https://docs.rs/arrow/58.1.0/arrow/array/trait.AsArray.html#tymethod.as_fixed_size_list_opt) (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <&[FixedSizeListArray](https://docs.rs/arrow/58.1.0/arrow/array/struct.FixedSizeListArray.html "struct arrow::array::FixedSizeListArray") \> Downcast this to a [`FixedSizeListArray`](https://docs.rs/arrow/58.1.0/arrow/array/struct.FixedSizeListArray.html "struct arrow::array::FixedSizeListArray") returning `None` if not possible [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#959) #### fn [as\_map\_opt](https://docs.rs/arrow/58.1.0/arrow/array/trait.AsArray.html#tymethod.as_map_opt) (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <&[MapArray](https://docs.rs/arrow/58.1.0/arrow/array/struct.MapArray.html "struct arrow::array::MapArray") \> Downcast this to a [`MapArray`](https://docs.rs/arrow/58.1.0/arrow/array/struct.MapArray.html "struct arrow::array::MapArray") returning `None` if not possible [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#967) #### fn [as\_dictionary\_opt](https://docs.rs/arrow/58.1.0/arrow/array/trait.AsArray.html#tymethod.as_dictionary_opt) (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <&[DictionaryArray](https://docs.rs/arrow/58.1.0/arrow/array/struct.DictionaryArray.html "struct arrow::array::DictionaryArray") > where K: [ArrowDictionaryKeyType](https://docs.rs/arrow/58.1.0/arrow/datatypes/trait.ArrowDictionaryKeyType.html "trait arrow::datatypes::ArrowDictionaryKeyType") , Downcast this to a [`DictionaryArray`](https://docs.rs/arrow/58.1.0/arrow/array/struct.DictionaryArray.html "struct arrow::array::DictionaryArray") returning `None` if not possible [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#975) #### fn [as\_run\_opt](https://docs.rs/arrow/58.1.0/arrow/array/trait.AsArray.html#tymethod.as_run_opt) (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <&[RunArray](https://docs.rs/arrow/58.1.0/arrow/array/struct.RunArray.html "struct arrow::array::RunArray") > where K: [RunEndIndexType](https://docs.rs/arrow/58.1.0/arrow/datatypes/trait.RunEndIndexType.html "trait arrow::datatypes::RunEndIndexType") , Downcast this to a [`RunArray`](https://docs.rs/arrow/58.1.0/arrow/array/struct.RunArray.html "struct arrow::array::RunArray") returning `None` if not possible [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#983) #### fn [as\_any\_dictionary\_opt](https://docs.rs/arrow/58.1.0/arrow/array/trait.AsArray.html#tymethod.as_any_dictionary_opt) (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <&dyn [AnyDictionaryArray](https://docs.rs/arrow/58.1.0/arrow/array/trait.AnyDictionaryArray.html "trait arrow::array::AnyDictionaryArray") \> Downcasts this to a [`AnyDictionaryArray`](https://docs.rs/arrow/58.1.0/arrow/array/trait.AnyDictionaryArray.html "trait arrow::array::AnyDictionaryArray") returning `None` if not possible Provided Methods[§](https://docs.rs/arrow/58.1.0/arrow/array/trait.AsArray.html#provided-methods) -------------------------------------------------------------------------------------------------- [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#840) #### fn [as\_boolean](https://docs.rs/arrow/58.1.0/arrow/array/trait.AsArray.html#method.as_boolean) (&self) -> &[BooleanArray](https://docs.rs/arrow/58.1.0/arrow/array/struct.BooleanArray.html "struct arrow::array::BooleanArray") Downcast this to a [`BooleanArray`](https://docs.rs/arrow/58.1.0/arrow/array/struct.BooleanArray.html "struct arrow::array::BooleanArray") panicking if not possible [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#848) #### fn [as\_primitive](https://docs.rs/arrow/58.1.0/arrow/array/trait.AsArray.html#method.as_primitive) (&self) -> &[PrimitiveArray](https://docs.rs/arrow/58.1.0/arrow/array/struct.PrimitiveArray.html "struct arrow::array::PrimitiveArray") where T: [ArrowPrimitiveType](https://docs.rs/arrow/58.1.0/arrow/array/trait.ArrowPrimitiveType.html "trait arrow::array::ArrowPrimitiveType") , Downcast this to a [`PrimitiveArray`](https://docs.rs/arrow/58.1.0/arrow/array/struct.PrimitiveArray.html "struct arrow::array::PrimitiveArray") panicking if not possible [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#856) #### fn [as\_bytes](https://docs.rs/arrow/58.1.0/arrow/array/trait.AsArray.html#method.as_bytes) (&self) -> &[GenericByteArray](https://docs.rs/arrow/58.1.0/arrow/array/struct.GenericByteArray.html "struct arrow::array::GenericByteArray") where T: [ByteArrayType](https://docs.rs/arrow/58.1.0/arrow/datatypes/trait.ByteArrayType.html "trait arrow::datatypes::ByteArrayType") , Downcast this to a [`GenericByteArray`](https://docs.rs/arrow/58.1.0/arrow/array/struct.GenericByteArray.html "struct arrow::array::GenericByteArray") panicking if not possible [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#861) #### fn [as\_string\_opt](https://docs.rs/arrow/58.1.0/arrow/array/trait.AsArray.html#method.as_string_opt) (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <&[GenericByteArray](https://docs.rs/arrow/58.1.0/arrow/array/struct.GenericByteArray.html "struct arrow::array::GenericByteArray") <[GenericStringType](https://docs.rs/arrow/58.1.0/arrow/datatypes/struct.GenericStringType.html "struct arrow::datatypes::GenericStringType") >> where O: [OffsetSizeTrait](https://docs.rs/arrow/58.1.0/arrow/array/trait.OffsetSizeTrait.html "trait arrow::array::OffsetSizeTrait") , Downcast this to a [`GenericStringArray`](https://docs.rs/arrow/58.1.0/arrow/array/type.GenericStringArray.html "type arrow::array::GenericStringArray") returning `None` if not possible [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#866) #### fn [as\_string](https://docs.rs/arrow/58.1.0/arrow/array/trait.AsArray.html#method.as_string) (&self) -> &[GenericByteArray](https://docs.rs/arrow/58.1.0/arrow/array/struct.GenericByteArray.html "struct arrow::array::GenericByteArray") <[GenericStringType](https://docs.rs/arrow/58.1.0/arrow/datatypes/struct.GenericStringType.html "struct arrow::datatypes::GenericStringType") > where O: [OffsetSizeTrait](https://docs.rs/arrow/58.1.0/arrow/array/trait.OffsetSizeTrait.html "trait arrow::array::OffsetSizeTrait") , Downcast this to a [`GenericStringArray`](https://docs.rs/arrow/58.1.0/arrow/array/type.GenericStringArray.html "type arrow::array::GenericStringArray") panicking if not possible [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#871) #### fn [as\_binary\_opt](https://docs.rs/arrow/58.1.0/arrow/array/trait.AsArray.html#method.as_binary_opt) (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <&[GenericByteArray](https://docs.rs/arrow/58.1.0/arrow/array/struct.GenericByteArray.html "struct arrow::array::GenericByteArray") <[GenericBinaryType](https://docs.rs/arrow/58.1.0/arrow/datatypes/struct.GenericBinaryType.html "struct arrow::datatypes::GenericBinaryType") >> where O: [OffsetSizeTrait](https://docs.rs/arrow/58.1.0/arrow/array/trait.OffsetSizeTrait.html "trait arrow::array::OffsetSizeTrait") , Downcast this to a [`GenericBinaryArray`](https://docs.rs/arrow/58.1.0/arrow/array/type.GenericBinaryArray.html "type arrow::array::GenericBinaryArray") returning `None` if not possible [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#876) #### fn [as\_binary](https://docs.rs/arrow/58.1.0/arrow/array/trait.AsArray.html#method.as_binary) (&self) -> &[GenericByteArray](https://docs.rs/arrow/58.1.0/arrow/array/struct.GenericByteArray.html "struct arrow::array::GenericByteArray") <[GenericBinaryType](https://docs.rs/arrow/58.1.0/arrow/datatypes/struct.GenericBinaryType.html "struct arrow::datatypes::GenericBinaryType") > where O: [OffsetSizeTrait](https://docs.rs/arrow/58.1.0/arrow/array/trait.OffsetSizeTrait.html "trait arrow::array::OffsetSizeTrait") , Downcast this to a [`GenericBinaryArray`](https://docs.rs/arrow/58.1.0/arrow/array/type.GenericBinaryArray.html "type arrow::array::GenericBinaryArray") panicking if not possible [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#881) #### fn [as\_string\_view\_opt](https://docs.rs/arrow/58.1.0/arrow/array/trait.AsArray.html#method.as_string_view_opt) (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <&[GenericByteViewArray](https://docs.rs/arrow/58.1.0/arrow/array/struct.GenericByteViewArray.html "struct arrow::array::GenericByteViewArray") <[StringViewType](https://docs.rs/arrow/58.1.0/arrow/datatypes/struct.StringViewType.html "struct arrow::datatypes::StringViewType") \>> Downcast this to a [`StringViewArray`](https://docs.rs/arrow/58.1.0/arrow/array/type.StringViewArray.html "type arrow::array::StringViewArray") returning `None` if not possible [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#886) #### fn [as\_string\_view](https://docs.rs/arrow/58.1.0/arrow/array/trait.AsArray.html#method.as_string_view) (&self) -> &[GenericByteViewArray](https://docs.rs/arrow/58.1.0/arrow/array/struct.GenericByteViewArray.html "struct arrow::array::GenericByteViewArray") <[StringViewType](https://docs.rs/arrow/58.1.0/arrow/datatypes/struct.StringViewType.html "struct arrow::datatypes::StringViewType") \> Downcast this to a [`StringViewArray`](https://docs.rs/arrow/58.1.0/arrow/array/type.StringViewArray.html "type arrow::array::StringViewArray") panicking if not possible [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#891) #### fn [as\_binary\_view\_opt](https://docs.rs/arrow/58.1.0/arrow/array/trait.AsArray.html#method.as_binary_view_opt) (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <&[GenericByteViewArray](https://docs.rs/arrow/58.1.0/arrow/array/struct.GenericByteViewArray.html "struct arrow::array::GenericByteViewArray") <[BinaryViewType](https://docs.rs/arrow/58.1.0/arrow/datatypes/struct.BinaryViewType.html "struct arrow::datatypes::BinaryViewType") \>> Downcast this to a [`BinaryViewArray`](https://docs.rs/arrow/58.1.0/arrow/array/type.BinaryViewArray.html "type arrow::array::BinaryViewArray") returning `None` if not possible [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#896) #### fn [as\_binary\_view](https://docs.rs/arrow/58.1.0/arrow/array/trait.AsArray.html#method.as_binary_view) (&self) -> &[GenericByteViewArray](https://docs.rs/arrow/58.1.0/arrow/array/struct.GenericByteViewArray.html "struct arrow::array::GenericByteViewArray") <[BinaryViewType](https://docs.rs/arrow/58.1.0/arrow/datatypes/struct.BinaryViewType.html "struct arrow::datatypes::BinaryViewType") \> Downcast this to a [`BinaryViewArray`](https://docs.rs/arrow/58.1.0/arrow/array/type.BinaryViewArray.html "type arrow::array::BinaryViewArray") panicking if not possible [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#904) #### fn [as\_byte\_view](https://docs.rs/arrow/58.1.0/arrow/array/trait.AsArray.html#method.as_byte_view) (&self) -> &[GenericByteViewArray](https://docs.rs/arrow/58.1.0/arrow/array/struct.GenericByteViewArray.html "struct arrow::array::GenericByteViewArray") where T: [ByteViewType](https://docs.rs/arrow/58.1.0/arrow/datatypes/trait.ByteViewType.html "trait arrow::datatypes::ByteViewType") , Downcast this to a [`GenericByteViewArray`](https://docs.rs/arrow/58.1.0/arrow/array/struct.GenericByteViewArray.html "struct arrow::array::GenericByteViewArray") panicking if not possible [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#912) #### fn [as\_struct](https://docs.rs/arrow/58.1.0/arrow/array/trait.AsArray.html#method.as_struct) (&self) -> &[StructArray](https://docs.rs/arrow/58.1.0/arrow/array/struct.StructArray.html "struct arrow::array::StructArray") Downcast this to a [`StructArray`](https://docs.rs/arrow/58.1.0/arrow/array/struct.StructArray.html "struct arrow::array::StructArray") panicking if not possible [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#920) #### fn [as\_union](https://docs.rs/arrow/58.1.0/arrow/array/trait.AsArray.html#method.as_union) (&self) -> &[UnionArray](https://docs.rs/arrow/58.1.0/arrow/array/struct.UnionArray.html "struct arrow::array::UnionArray") Downcast this to a [`UnionArray`](https://docs.rs/arrow/58.1.0/arrow/array/struct.UnionArray.html "struct arrow::array::UnionArray") panicking if not possible [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#928) #### fn [as\_list](https://docs.rs/arrow/58.1.0/arrow/array/trait.AsArray.html#method.as_list) (&self) -> &[GenericListArray](https://docs.rs/arrow/58.1.0/arrow/array/struct.GenericListArray.html "struct arrow::array::GenericListArray") where O: [OffsetSizeTrait](https://docs.rs/arrow/58.1.0/arrow/array/trait.OffsetSizeTrait.html "trait arrow::array::OffsetSizeTrait") , Downcast this to a [`GenericListArray`](https://docs.rs/arrow/58.1.0/arrow/array/struct.GenericListArray.html "struct arrow::array::GenericListArray") panicking if not possible [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#936) #### fn [as\_list\_view](https://docs.rs/arrow/58.1.0/arrow/array/trait.AsArray.html#method.as_list_view) (&self) -> &[GenericListViewArray](https://docs.rs/arrow/58.1.0/arrow/array/struct.GenericListViewArray.html "struct arrow::array::GenericListViewArray") where O: [OffsetSizeTrait](https://docs.rs/arrow/58.1.0/arrow/array/trait.OffsetSizeTrait.html "trait arrow::array::OffsetSizeTrait") , Downcast this to a [`GenericListViewArray`](https://docs.rs/arrow/58.1.0/arrow/array/struct.GenericListViewArray.html "struct arrow::array::GenericListViewArray") panicking if not possible [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#944) #### fn [as\_fixed\_size\_binary](https://docs.rs/arrow/58.1.0/arrow/array/trait.AsArray.html#method.as_fixed_size_binary) (&self) -> &[FixedSizeBinaryArray](https://docs.rs/arrow/58.1.0/arrow/array/struct.FixedSizeBinaryArray.html "struct arrow::array::FixedSizeBinaryArray") Downcast this to a [`FixedSizeBinaryArray`](https://docs.rs/arrow/58.1.0/arrow/array/struct.FixedSizeBinaryArray.html "struct arrow::array::FixedSizeBinaryArray") panicking if not possible [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#953) #### fn [as\_fixed\_size\_list](https://docs.rs/arrow/58.1.0/arrow/array/trait.AsArray.html#method.as_fixed_size_list) (&self) -> &[FixedSizeListArray](https://docs.rs/arrow/58.1.0/arrow/array/struct.FixedSizeListArray.html "struct arrow::array::FixedSizeListArray") Downcast this to a [`FixedSizeListArray`](https://docs.rs/arrow/58.1.0/arrow/array/struct.FixedSizeListArray.html "struct arrow::array::FixedSizeListArray") panicking if not possible [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#962) #### fn [as\_map](https://docs.rs/arrow/58.1.0/arrow/array/trait.AsArray.html#method.as_map) (&self) -> &[MapArray](https://docs.rs/arrow/58.1.0/arrow/array/struct.MapArray.html "struct arrow::array::MapArray") Downcast this to a [`MapArray`](https://docs.rs/arrow/58.1.0/arrow/array/struct.MapArray.html "struct arrow::array::MapArray") panicking if not possible [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#970) #### fn [as\_dictionary](https://docs.rs/arrow/58.1.0/arrow/array/trait.AsArray.html#method.as_dictionary) (&self) -> &[DictionaryArray](https://docs.rs/arrow/58.1.0/arrow/array/struct.DictionaryArray.html "struct arrow::array::DictionaryArray") where K: [ArrowDictionaryKeyType](https://docs.rs/arrow/58.1.0/arrow/datatypes/trait.ArrowDictionaryKeyType.html "trait arrow::datatypes::ArrowDictionaryKeyType") , Downcast this to a [`DictionaryArray`](https://docs.rs/arrow/58.1.0/arrow/array/struct.DictionaryArray.html "struct arrow::array::DictionaryArray") panicking if not possible [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#978) #### fn [as\_run](https://docs.rs/arrow/58.1.0/arrow/array/trait.AsArray.html#method.as_run) (&self) -> &[RunArray](https://docs.rs/arrow/58.1.0/arrow/array/struct.RunArray.html "struct arrow::array::RunArray") where K: [RunEndIndexType](https://docs.rs/arrow/58.1.0/arrow/datatypes/trait.RunEndIndexType.html "trait arrow::datatypes::RunEndIndexType") , Downcast this to a [`RunArray`](https://docs.rs/arrow/58.1.0/arrow/array/struct.RunArray.html "struct arrow::array::RunArray") panicking if not possible [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#986) #### fn [as\_any\_dictionary](https://docs.rs/arrow/58.1.0/arrow/array/trait.AsArray.html#method.as_any_dictionary) (&self) -> &dyn [AnyDictionaryArray](https://docs.rs/arrow/58.1.0/arrow/array/trait.AnyDictionaryArray.html "trait arrow::array::AnyDictionaryArray") Downcasts this to a [`AnyDictionaryArray`](https://docs.rs/arrow/58.1.0/arrow/array/trait.AnyDictionaryArray.html "trait arrow::array::AnyDictionaryArray") panicking if not possible Dyn Compatibility[§](https://docs.rs/arrow/58.1.0/arrow/array/trait.AsArray.html#dyn-compatibility) ---------------------------------------------------------------------------------------------------- This trait is **not** [dyn compatible](https://doc.rust-lang.org/nightly/reference/items/traits.html#dyn-compatibility) . _In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe._ Implementations on Foreign Types[§](https://docs.rs/arrow/58.1.0/arrow/array/trait.AsArray.html#foreign-impls) --------------------------------------------------------------------------------------------------------------- [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#1055) [§](https://docs.rs/arrow/58.1.0/arrow/array/trait.AsArray.html#impl-AsArray-for-Arc%3Cdyn+Array%3E) ### impl [AsArray](https://docs.rs/arrow/58.1.0/arrow/array/trait.AsArray.html "trait arrow::array::AsArray") for [Arc](https://doc.rust-lang.org/nightly/alloc/sync/struct.Arc.html "struct alloc::sync::Arc") [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#1056) [§](https://docs.rs/arrow/58.1.0/arrow/array/trait.AsArray.html#method.as_boolean_opt) #### fn [as\_boolean\_opt](https://docs.rs/arrow/58.1.0/arrow/array/trait.AsArray.html#tymethod.as_boolean_opt) (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <&[BooleanArray](https://docs.rs/arrow/58.1.0/arrow/array/struct.BooleanArray.html "struct arrow::array::BooleanArray") \> [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#1060) [§](https://docs.rs/arrow/58.1.0/arrow/array/trait.AsArray.html#method.as_primitive_opt) #### fn [as\_primitive\_opt](https://docs.rs/arrow/58.1.0/arrow/array/trait.AsArray.html#tymethod.as_primitive_opt) (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <&[PrimitiveArray](https://docs.rs/arrow/58.1.0/arrow/array/struct.PrimitiveArray.html "struct arrow::array::PrimitiveArray") > where T: [ArrowPrimitiveType](https://docs.rs/arrow/58.1.0/arrow/array/trait.ArrowPrimitiveType.html "trait arrow::array::ArrowPrimitiveType") , [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#1064) [§](https://docs.rs/arrow/58.1.0/arrow/array/trait.AsArray.html#method.as_bytes_opt) #### fn [as\_bytes\_opt](https://docs.rs/arrow/58.1.0/arrow/array/trait.AsArray.html#tymethod.as_bytes_opt) (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <&[GenericByteArray](https://docs.rs/arrow/58.1.0/arrow/array/struct.GenericByteArray.html "struct arrow::array::GenericByteArray") > where T: [ByteArrayType](https://docs.rs/arrow/58.1.0/arrow/datatypes/trait.ByteArrayType.html "trait arrow::datatypes::ByteArrayType") , [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#1068) [§](https://docs.rs/arrow/58.1.0/arrow/array/trait.AsArray.html#method.as_byte_view_opt) #### fn [as\_byte\_view\_opt](https://docs.rs/arrow/58.1.0/arrow/array/trait.AsArray.html#tymethod.as_byte_view_opt) (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <&[GenericByteViewArray](https://docs.rs/arrow/58.1.0/arrow/array/struct.GenericByteViewArray.html "struct arrow::array::GenericByteViewArray") > where T: [ByteViewType](https://docs.rs/arrow/58.1.0/arrow/datatypes/trait.ByteViewType.html "trait arrow::datatypes::ByteViewType") , [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#1072) [§](https://docs.rs/arrow/58.1.0/arrow/array/trait.AsArray.html#method.as_struct_opt) #### fn [as\_struct\_opt](https://docs.rs/arrow/58.1.0/arrow/array/trait.AsArray.html#tymethod.as_struct_opt) (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <&[StructArray](https://docs.rs/arrow/58.1.0/arrow/array/struct.StructArray.html "struct arrow::array::StructArray") \> [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#1076) [§](https://docs.rs/arrow/58.1.0/arrow/array/trait.AsArray.html#method.as_union_opt) #### fn [as\_union\_opt](https://docs.rs/arrow/58.1.0/arrow/array/trait.AsArray.html#tymethod.as_union_opt) (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <&[UnionArray](https://docs.rs/arrow/58.1.0/arrow/array/struct.UnionArray.html "struct arrow::array::UnionArray") \> [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#1080) [§](https://docs.rs/arrow/58.1.0/arrow/array/trait.AsArray.html#method.as_list_opt) #### fn [as\_list\_opt](https://docs.rs/arrow/58.1.0/arrow/array/trait.AsArray.html#tymethod.as_list_opt) (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <&[GenericListArray](https://docs.rs/arrow/58.1.0/arrow/array/struct.GenericListArray.html "struct arrow::array::GenericListArray") > where O: [OffsetSizeTrait](https://docs.rs/arrow/58.1.0/arrow/array/trait.OffsetSizeTrait.html "trait arrow::array::OffsetSizeTrait") , [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#1084) [§](https://docs.rs/arrow/58.1.0/arrow/array/trait.AsArray.html#method.as_list_view_opt) #### fn [as\_list\_view\_opt](https://docs.rs/arrow/58.1.0/arrow/array/trait.AsArray.html#tymethod.as_list_view_opt) (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <&[GenericListViewArray](https://docs.rs/arrow/58.1.0/arrow/array/struct.GenericListViewArray.html "struct arrow::array::GenericListViewArray") > where O: [OffsetSizeTrait](https://docs.rs/arrow/58.1.0/arrow/array/trait.OffsetSizeTrait.html "trait arrow::array::OffsetSizeTrait") , [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#1088) [§](https://docs.rs/arrow/58.1.0/arrow/array/trait.AsArray.html#method.as_fixed_size_binary_opt) #### fn [as\_fixed\_size\_binary\_opt](https://docs.rs/arrow/58.1.0/arrow/array/trait.AsArray.html#tymethod.as_fixed_size_binary_opt) (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <&[FixedSizeBinaryArray](https://docs.rs/arrow/58.1.0/arrow/array/struct.FixedSizeBinaryArray.html "struct arrow::array::FixedSizeBinaryArray") \> [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#1092) [§](https://docs.rs/arrow/58.1.0/arrow/array/trait.AsArray.html#method.as_fixed_size_list_opt) #### fn [as\_fixed\_size\_list\_opt](https://docs.rs/arrow/58.1.0/arrow/array/trait.AsArray.html#tymethod.as_fixed_size_list_opt) (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <&[FixedSizeListArray](https://docs.rs/arrow/58.1.0/arrow/array/struct.FixedSizeListArray.html "struct arrow::array::FixedSizeListArray") \> [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#1096) [§](https://docs.rs/arrow/58.1.0/arrow/array/trait.AsArray.html#method.as_map_opt) #### fn [as\_map\_opt](https://docs.rs/arrow/58.1.0/arrow/array/trait.AsArray.html#tymethod.as_map_opt) (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <&[MapArray](https://docs.rs/arrow/58.1.0/arrow/array/struct.MapArray.html "struct arrow::array::MapArray") \> [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#1100) [§](https://docs.rs/arrow/58.1.0/arrow/array/trait.AsArray.html#method.as_dictionary_opt) #### fn [as\_dictionary\_opt](https://docs.rs/arrow/58.1.0/arrow/array/trait.AsArray.html#tymethod.as_dictionary_opt) (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <&[DictionaryArray](https://docs.rs/arrow/58.1.0/arrow/array/struct.DictionaryArray.html "struct arrow::array::DictionaryArray") > where K: [ArrowDictionaryKeyType](https://docs.rs/arrow/58.1.0/arrow/datatypes/trait.ArrowDictionaryKeyType.html "trait arrow::datatypes::ArrowDictionaryKeyType") , [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#1104) [§](https://docs.rs/arrow/58.1.0/arrow/array/trait.AsArray.html#method.as_any_dictionary_opt) #### fn [as\_any\_dictionary\_opt](https://docs.rs/arrow/58.1.0/arrow/array/trait.AsArray.html#tymethod.as_any_dictionary_opt) (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <&dyn [AnyDictionaryArray](https://docs.rs/arrow/58.1.0/arrow/array/trait.AnyDictionaryArray.html "trait arrow::array::AnyDictionaryArray") \> [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#1108) [§](https://docs.rs/arrow/58.1.0/arrow/array/trait.AsArray.html#method.as_run_opt) #### fn [as\_run\_opt](https://docs.rs/arrow/58.1.0/arrow/array/trait.AsArray.html#tymethod.as_run_opt) (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <&[RunArray](https://docs.rs/arrow/58.1.0/arrow/array/struct.RunArray.html "struct arrow::array::RunArray") > where K: [RunEndIndexType](https://docs.rs/arrow/58.1.0/arrow/datatypes/trait.RunEndIndexType.html "trait arrow::datatypes::RunEndIndexType") , [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#1112) [§](https://docs.rs/arrow/58.1.0/arrow/array/trait.AsArray.html#method.as_string_opt-1) #### fn [as\_string\_opt](https://docs.rs/arrow/58.1.0/arrow/array/trait.AsArray.html#method.as_string_opt) (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <&[GenericByteArray](https://docs.rs/arrow/58.1.0/arrow/array/struct.GenericByteArray.html "struct arrow::array::GenericByteArray") <[GenericStringType](https://docs.rs/arrow/58.1.0/arrow/datatypes/struct.GenericStringType.html "struct arrow::datatypes::GenericStringType") >> where O: [OffsetSizeTrait](https://docs.rs/arrow/58.1.0/arrow/array/trait.OffsetSizeTrait.html "trait arrow::array::OffsetSizeTrait") , Implementors[§](https://docs.rs/arrow/58.1.0/arrow/array/trait.AsArray.html#implementors) ------------------------------------------------------------------------------------------ [Source](https://docs.rs/arrow-array/58.1.0/x86_64-unknown-linux-gnu/src/arrow_array/cast.rs.html#992) [§](https://docs.rs/arrow/58.1.0/arrow/array/trait.AsArray.html#impl-AsArray-for-dyn+Array) ### impl [AsArray](https://docs.rs/arrow/58.1.0/arrow/array/trait.AsArray.html "trait arrow::array::AsArray") for dyn [Array](https://docs.rs/arrow/58.1.0/arrow/array/trait.Array.html "trait arrow::array::Array") + '\_ --- # OffsetBuffer in arrow_buffer::buffer - Rust [Docs.rs](https://docs.rs/) * [arrow-buffer-58.1.0](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html# "Buffer abstractions for Apache Arrow") * arrow-buffer 58.1.0 * [Docs.rs crate page](https://docs.rs/crate/arrow-buffer/58.1.0 "See arrow-buffer in docs.rs") * [Apache-2.0](https://spdx.org/licenses/Apache-2.0) * Links * [Homepage](https://github.com/apache/arrow-rs) * [Repository](https://github.com/apache/arrow-rs) * [crates.io](https://crates.io/crates/arrow-buffer "See arrow-buffer in crates.io") * [Source](https://docs.rs/crate/arrow-buffer/58.1.0/source/ "Browse source of arrow-buffer-58.1.0") * Owners * [andygrove](https://crates.io/users/andygrove) * [kou](https://crates.io/users/kou) * [kszucs](https://crates.io/users/kszucs) * [xhochy](https://crates.io/users/xhochy) * [nevi-me](https://crates.io/users/nevi-me) * [alamb](https://crates.io/users/alamb) * [tustvold](https://crates.io/users/tustvold) * Dependencies * * [bytes ^1.4 _normal_](https://docs.rs/bytes/^1.4/) * [half ^2.1 _normal_](https://docs.rs/half/^2.1/) * [num-bigint ^0.4.6 _normal_](https://docs.rs/num-bigint/^0.4.6/) * [num-traits ^0.2.19 _normal_](https://docs.rs/num-traits/^0.2.19/) * [criterion ^0.8.0 _dev_](https://docs.rs/criterion/^0.8.0/) * [rand ^0.9 _dev_](https://docs.rs/rand/^0.9/) * Versions * [**100%** of the crate is documented](https://docs.rs/crate/arrow-buffer/58.1.0) * [Platform](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#) * [aarch64-apple-darwin](https://docs.rs/crate/arrow-buffer/58.1.0/target-redirect/aarch64-apple-darwin/arrow_buffer/buffer/struct.OffsetBuffer.html) * [aarch64-unknown-linux-gnu](https://docs.rs/crate/arrow-buffer/58.1.0/target-redirect/aarch64-unknown-linux-gnu/arrow_buffer/buffer/struct.OffsetBuffer.html) * [i686-pc-windows-msvc](https://docs.rs/crate/arrow-buffer/58.1.0/target-redirect/i686-pc-windows-msvc/arrow_buffer/buffer/struct.OffsetBuffer.html) * [x86\_64-pc-windows-msvc](https://docs.rs/crate/arrow-buffer/58.1.0/target-redirect/x86_64-pc-windows-msvc/arrow_buffer/buffer/struct.OffsetBuffer.html) * [x86\_64-unknown-linux-gnu](https://docs.rs/crate/arrow-buffer/58.1.0/target-redirect/arrow_buffer/buffer/struct.OffsetBuffer.html) * [Feature flags](https://docs.rs/crate/arrow-buffer/58.1.0/features "Browse available feature flags of arrow-buffer-58.1.0") * [docs.rs](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#) * [About docs.rs](https://docs.rs/about) * [Badges](https://docs.rs/about/badges) * [Builds](https://docs.rs/about/builds) * [Metadata](https://docs.rs/about/metadata) * [Shorthand URLs](https://docs.rs/about/redirections) * [Download](https://docs.rs/about/download) * [Rustdoc JSON](https://docs.rs/about/rustdoc-json) * [Build queue](https://docs.rs/releases/queue) * [Privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#docs.rs) * [Rust](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#) * [Rust website](https://www.rust-lang.org/) * [The Book](https://doc.rust-lang.org/book/) * [Standard Library API Reference](https://doc.rust-lang.org/std/) * [Rust by Example](https://doc.rust-lang.org/rust-by-example/) * [The Cargo Guide](https://doc.rust-lang.org/cargo/guide/) * [Clippy Documentation](https://doc.rust-lang.org/nightly/clippy) [Skip to main content](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#main-content) [OffsetBuffer](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#) -------------------------------------------------------------------------------------------------- [arrow\_buffer](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/index.html) ::[buffer](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/index.html) Struct OffsetBuffer Copy item path ================================== [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/offset.rs.html#59) pub struct OffsetBuffer(/* private fields */); Expand description A non-empty buffer of monotonically increasing, positive integers. [`OffsetBuffer`](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html "struct arrow_buffer::buffer::OffsetBuffer") are used to represent ranges of offsets. An `OffsetBuffer` of `N+1` items contains `N` such ranges. The start offset for element `i` is `offsets[i]` and the end offset is `offsets[i+1]`. Equal offsets represent an empty range. [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#example) Example ----------------------------------------------------------------------------------------------------- This example shows how 5 distinct ranges, are represented using a 6 entry `OffsetBuffer`. The first entry `(0, 3)` represents the three offsets `0, 1, 2`. The entry `(3,3)` represent no offsets (e.g. an empty list). ┌───────┐ ┌───┐ │ (0,3) │ │ 0 │ ├───────┤ ├───┤ │ (3,3) │ │ 3 │ ├───────┤ ├───┤ │ (3,4) │ │ 3 │ ├───────┤ ├───┤ │ (4,5) │ │ 4 │ ├───────┤ ├───┤ │ (5,7) │ │ 5 │ └───────┘ ├───┤ │ 7 │ └───┘ Offsets Buffer Logical Offsets (offsets[i], offsets[i+1]) Implementations[§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#implementations) --------------------------------------------------------------------------------------------------------------------- [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/offset.rs.html#61-241) [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#impl-OffsetBuffer%3CO%3E) ### impl [OffsetBuffer](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html "struct arrow_buffer::buffer::OffsetBuffer") [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/offset.rs.html#68-79) #### pub fn [new](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#method.new) (buffer: [ScalarBuffer](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.ScalarBuffer.html "struct arrow_buffer::buffer::ScalarBuffer") ) -> Self Create a new [`OffsetBuffer`](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html "struct arrow_buffer::buffer::OffsetBuffer") from the provided [`ScalarBuffer`](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.ScalarBuffer.html "struct arrow_buffer::buffer::ScalarBuffer") ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#panics) Panics Panics if `buffer` is not a non-empty buffer containing monotonically increasing values greater than or equal to zero [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/offset.rs.html#87-89) #### pub unsafe fn [new\_unchecked](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#method.new_unchecked) (buffer: [ScalarBuffer](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.ScalarBuffer.html "struct arrow_buffer::buffer::ScalarBuffer") ) -> Self Create a new [`OffsetBuffer`](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html "struct arrow_buffer::buffer::OffsetBuffer") from the provided [`ScalarBuffer`](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.ScalarBuffer.html "struct arrow_buffer::buffer::ScalarBuffer") ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#safety) Safety `buffer` must be a non-empty buffer containing monotonically increasing values greater than or equal to zero [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/offset.rs.html#92-95) #### pub fn [new\_empty](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#method.new_empty) () -> Self Create a new [`OffsetBuffer`](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html "struct arrow_buffer::buffer::OffsetBuffer") containing a single 0 value [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/offset.rs.html#98-105) #### pub fn [new\_zeroed](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#method.new_zeroed) (len: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) ) -> Self Create a new [`OffsetBuffer`](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html "struct arrow_buffer::buffer::OffsetBuffer") containing `len + 1` `0` values [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/offset.rs.html#121-137) #### pub fn [from\_lengths](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#method.from_lengths) (lengths: I) -> Self where I: [IntoIterator](https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html "trait core::iter::traits::collect::IntoIterator") , Create a new [`OffsetBuffer`](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html "struct arrow_buffer::buffer::OffsetBuffer") from the iterator of slice lengths let offsets = OffsetBuffer::::from_lengths([1, 3, 5]); assert_eq!(offsets.as_ref(), &[0, 1, 4, 9]); If you want to create an [`OffsetBuffer`](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html "struct arrow_buffer::buffer::OffsetBuffer") where all lengths are the same, consider using the faster [`OffsetBuffer::from_repeated_length`](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#method.from_repeated_length "associated function arrow_buffer::buffer::OffsetBuffer::from_repeated_length") instead. ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#panics-1) Panics Panics on overflow [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/offset.rs.html#153-174) #### pub fn [from\_repeated\_length](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#method.from_repeated_length) (length: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) , n: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) ) -> Self Create a new [`OffsetBuffer`](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html "struct arrow_buffer::buffer::OffsetBuffer") where each slice has the same length `length`, repeated `n` times. Example let offsets = OffsetBuffer::::from_repeated_length(4, 3); assert_eq!(offsets.as_ref(), &[0, 4, 8, 12]); ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#panics-2) Panics Panics on overflow [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/offset.rs.html#204-206) #### pub fn [lengths](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#method.lengths) (&self) -> impl [ExactSizeIterator](https://doc.rust-lang.org/nightly/core/iter/traits/exact_size/trait.ExactSizeIterator.html "trait core::iter::traits::exact_size::ExactSizeIterator") + '\_ Get an Iterator over the lengths of this [`OffsetBuffer`](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html "struct arrow_buffer::buffer::OffsetBuffer") let offsets = OffsetBuffer::<_>::new(ScalarBuffer::::from(vec![0, 1, 4, 9])); assert_eq!(offsets.lengths().collect::>(), vec![1, 3, 5]); Empty [`OffsetBuffer`](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html "struct arrow_buffer::buffer::OffsetBuffer") will return an empty iterator let offsets = OffsetBuffer::::new_empty(); assert_eq!(offsets.lengths().count(), 0); This can be used to merge multiple [`OffsetBuffer`](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html "struct arrow_buffer::buffer::OffsetBuffer") s to one let buffer1 = OffsetBuffer::::from_lengths([2, 6, 3, 7, 2]); let buffer2 = OffsetBuffer::::from_lengths([1, 3, 5, 7, 9]); let merged = OffsetBuffer::::from_lengths( vec![buffer1, buffer2].iter().flat_map(|x| x.lengths()) ); assert_eq!(merged.lengths().collect::>(), &[2, 6, 3, 7, 2, 1, 3, 5, 7, 9]); [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/offset.rs.html#209-211) #### pub fn [shrink\_to\_fit](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#method.shrink_to_fit) (&mut self) Free up unused memory. [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/offset.rs.html#214-216) #### pub fn [inner](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#method.inner) (&self) -> &[ScalarBuffer](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.ScalarBuffer.html "struct arrow_buffer::buffer::ScalarBuffer") Returns the inner [`ScalarBuffer`](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.ScalarBuffer.html "struct arrow_buffer::buffer::ScalarBuffer") [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/offset.rs.html#219-221) #### pub fn [into\_inner](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#method.into_inner) (self) -> [ScalarBuffer](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.ScalarBuffer.html "struct arrow_buffer::buffer::ScalarBuffer") Returns the inner [`ScalarBuffer`](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.ScalarBuffer.html "struct arrow_buffer::buffer::ScalarBuffer") , consuming self [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/offset.rs.html#225-227) #### pub fn [claim](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#method.claim) (&self, pool: &dyn [MemoryPool](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/trait.MemoryPool.html "trait arrow_buffer::MemoryPool") ) Available on **crate feature `pool`** only. Claim memory used by this buffer in the provided memory pool. [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/offset.rs.html#230-232) #### pub fn [slice](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#method.slice) (&self, offset: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) , len: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) ) -> Self Returns a zero-copy slice of this buffer with length `len` and starting at `offset` [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/offset.rs.html#238-240) #### pub fn [ptr\_eq](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#method.ptr_eq) (&self, other: &Self) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) Returns true if this [`OffsetBuffer`](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html "struct arrow_buffer::buffer::OffsetBuffer") is equal to `other`, using pointer comparisons to determine buffer equality. This is cheaper than `PartialEq::eq` but may return false when the arrays are logically equal Methods from [Deref](https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html "trait core::ops::deref::Deref") [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#deref-methods-%5BT%5D) -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#116) #### pub fn [len](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#method.len) (&self) -> [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) Returns the number of elements in the slice. ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#examples) Examples let a = [1, 2, 3]; assert_eq!(a.len(), 3); 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#136) #### pub fn [is\_empty](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#method.is_empty) (&self) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) Returns `true` if the slice has a length of 0. ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#examples-1) Examples let a = [1, 2, 3]; assert!(!a.is_empty()); let b: &[i32] = &[]; assert!(b.is_empty()); 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#155) #### pub fn [first](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#method.first) (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <[&T](https://doc.rust-lang.org/nightly/std/primitive.reference.html) \> Returns the first element of the slice, or `None` if it is empty. ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#examples-2) Examples let v = [10, 40, 30]; assert_eq!(Some(&10), v.first()); let w: &[i32] = &[]; assert_eq!(None, w.first()); 1.5.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#198) #### pub fn [split\_first](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#method.split_first) (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <([&T](https://doc.rust-lang.org/nightly/std/primitive.reference.html) , &[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html) )> Returns the first and all the rest of the elements of the slice, or `None` if it is empty. ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#examples-3) Examples let x = &[0, 1, 2]; if let Some((first, elements)) = x.split_first() { assert_eq!(first, &0); assert_eq!(elements, &[1, 2]); } 1.5.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#240) #### pub fn [split\_last](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#method.split_last) (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <([&T](https://doc.rust-lang.org/nightly/std/primitive.reference.html) , &[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html) )> Returns the last and all the rest of the elements of the slice, or `None` if it is empty. ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#examples-4) Examples let x = &[0, 1, 2]; if let Some((last, elements)) = x.split_last() { assert_eq!(last, &2); assert_eq!(elements, &[0, 1]); } 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#281) #### pub fn [last](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#method.last) (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <[&T](https://doc.rust-lang.org/nightly/std/primitive.reference.html) \> Returns the last element of the slice, or `None` if it is empty. ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#examples-5) Examples let v = [10, 40, 30]; assert_eq!(Some(&30), v.last()); let w: &[i32] = &[]; assert_eq!(None, w.last()); 1.77.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#327) #### pub fn [first\_chunk](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#method.first_chunk) (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <&[\[T; N\]](https://doc.rust-lang.org/nightly/std/primitive.array.html) \> Returns an array reference to the first `N` items in the slice. If the slice is not at least `N` in length, this will return `None`. ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#examples-6) Examples let u = [10, 40, 30]; assert_eq!(Some(&[10, 40]), u.first_chunk::<2>()); let v: &[i32] = &[10]; assert_eq!(None, v.first_chunk::<2>()); let w: &[i32] = &[]; assert_eq!(Some(&[]), w.first_chunk::<0>()); 1.77.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#387) #### pub fn [split\_first\_chunk](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#method.split_first_chunk) (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <(&[\[T; N\]](https://doc.rust-lang.org/nightly/std/primitive.array.html) , &[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html) )> Returns an array reference to the first `N` items in the slice and the remaining slice. If the slice is not at least `N` in length, this will return `None`. ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#examples-7) Examples let x = &[0, 1, 2]; if let Some((first, elements)) = x.split_first_chunk::<2>() { assert_eq!(first, &[0, 1]); assert_eq!(elements, &[2]); } assert_eq!(None, x.split_first_chunk::<4>()); 1.77.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#447) #### pub fn [split\_last\_chunk](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#method.split_last_chunk) (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <(&[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html) , &[\[T; N\]](https://doc.rust-lang.org/nightly/std/primitive.array.html) )> Returns an array reference to the last `N` items in the slice and the remaining slice. If the slice is not at least `N` in length, this will return `None`. ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#examples-8) Examples let x = &[0, 1, 2]; if let Some((elements, last)) = x.split_last_chunk::<2>() { assert_eq!(elements, &[0]); assert_eq!(last, &[1, 2]); } assert_eq!(None, x.split_last_chunk::<4>()); 1.77.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#509) #### pub fn [last\_chunk](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#method.last_chunk) (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <&[\[T; N\]](https://doc.rust-lang.org/nightly/std/primitive.array.html) \> Returns an array reference to the last `N` items in the slice. If the slice is not at least `N` in length, this will return `None`. ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#examples-9) Examples let u = [10, 40, 30]; assert_eq!(Some(&[40, 30]), u.last_chunk::<2>()); let v: &[i32] = &[10]; assert_eq!(None, v.last_chunk::<2>()); let w: &[i32] = &[]; assert_eq!(Some(&[]), w.last_chunk::<0>()); 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#572-574) #### pub fn [get](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#method.get) (&self, index: I) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <&>::[Output](https://doc.rust-lang.org/nightly/core/slice/index/trait.SliceIndex.html#associatedtype.Output "type core::slice::index::SliceIndex::Output") \> where I: [SliceIndex](https://doc.rust-lang.org/nightly/core/slice/index/trait.SliceIndex.html "trait core::slice::index::SliceIndex") <[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html) \>, Returns a reference to an element or subslice depending on the type of index. * If given a position, returns a reference to the element at that position or `None` if out of bounds. * If given a range, returns the subslice corresponding to that range, or `None` if out of bounds. ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#examples-10) Examples let v = [10, 40, 30]; assert_eq!(Some(&40), v.get(1)); assert_eq!(Some(&[10, 40][..]), v.get(0..2)); assert_eq!(None, v.get(3)); assert_eq!(None, v.get(0..4)); 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#639-641) #### pub unsafe fn [get\_unchecked](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#method.get_unchecked) ( &self, index: I, ) -> &>::[Output](https://doc.rust-lang.org/nightly/core/slice/index/trait.SliceIndex.html#associatedtype.Output "type core::slice::index::SliceIndex::Output") where I: [SliceIndex](https://doc.rust-lang.org/nightly/core/slice/index/trait.SliceIndex.html "trait core::slice::index::SliceIndex") <[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html) \>, Returns a reference to an element or subslice, without doing bounds checking. For a safe alternative see [`get`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.get "method slice::get") . ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#safety-1) Safety Calling this method with an out-of-bounds index is _[undefined behavior](https://doc.rust-lang.org/reference/behavior-considered-undefined.html) _ even if the resulting reference is not used. You can think of this like `.get(index).unwrap_unchecked()`. It’s UB to call `.get_unchecked(len)`, even if you immediately convert to a pointer. And it’s UB to call `.get_unchecked(..len + 1)`, `.get_unchecked(..=len)`, or similar. ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#examples-11) Examples let x = &[1, 2, 4]; unsafe { assert_eq!(x.get_unchecked(1), &2); } 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#726) #### pub fn [as\_ptr](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#method.as_ptr) (&self) -> [\*const T](https://doc.rust-lang.org/nightly/std/primitive.pointer.html) Returns a raw pointer to the slice’s buffer. The caller must ensure that the slice outlives the pointer this function returns, or else it will end up dangling. The caller must also ensure that the memory the pointer (non-transitively) points to is never written to (except inside an `UnsafeCell`) using this pointer or any pointer derived from it. If you need to mutate the contents of the slice, use [`as_mut_ptr`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.as_mut_ptr "method slice::as_mut_ptr") . Modifying the container referenced by this slice may cause its buffer to be reallocated, which would also make any pointers to it invalid. ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#examples-12) Examples let x = &[1, 2, 4]; let x_ptr = x.as_ptr(); unsafe { for i in 0..x.len() { assert_eq!(x.get_unchecked(i), &*x_ptr.add(i)); } } 1.48.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#793) #### pub fn [as\_ptr\_range](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#method.as_ptr_range) (&self) -> [Range](https://doc.rust-lang.org/nightly/core/ops/range/struct.Range.html "struct core::ops::range::Range") <[\*const T](https://doc.rust-lang.org/nightly/std/primitive.pointer.html) \> Returns the two raw pointers spanning the slice. The returned range is half-open, which means that the end pointer points _one past_ the last element of the slice. This way, an empty slice is represented by two equal pointers, and the difference between the two pointers represents the size of the slice. See [`as_ptr`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.as_ptr "method slice::as_ptr") for warnings on using these pointers. The end pointer requires extra caution, as it does not point to a valid element in the slice. This function is useful for interacting with foreign interfaces which use two pointers to refer to a range of elements in memory, as is common in C++. It can also be useful to check if a pointer to an element refers to an element of this slice: let a = [1, 2, 3]; let x = &a[1] as *const _; let y = &5 as *const _; assert!(a.as_ptr_range().contains(&x)); assert!(!a.as_ptr_range().contains(&y)); 1.93.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#850) #### pub fn [as\_array](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#method.as_array) (&self) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option") <&[\[T; N\]](https://doc.rust-lang.org/nightly/std/primitive.array.html) \> Gets a reference to the underlying array. If `N` is not exactly equal to the length of `self`, then this method returns `None`. 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#1040) #### pub fn [iter](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#method.iter) (&self) -> [Iter](https://doc.rust-lang.org/nightly/core/slice/iter/struct.Iter.html "struct core::slice::iter::Iter") <'\_, T> Returns an iterator over the slice. The iterator yields all items from start to end. ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#examples-13) Examples let x = &[1, 2, 4]; let mut iterator = x.iter(); assert_eq!(iterator.next(), Some(&1)); assert_eq!(iterator.next(), Some(&2)); assert_eq!(iterator.next(), Some(&4)); assert_eq!(iterator.next(), None); 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#1115) #### pub fn [windows](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#method.windows) (&self, size: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) ) -> [Windows](https://doc.rust-lang.org/nightly/core/slice/iter/struct.Windows.html "struct core::slice::iter::Windows") <'\_, T> Returns an iterator over all contiguous windows of length `size`. The windows overlap. If the slice is shorter than `size`, the iterator returns no values. ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#panics-3) Panics Panics if `size` is zero. ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#examples-14) Examples let slice = ['l', 'o', 'r', 'e', 'm']; let mut iter = slice.windows(3); assert_eq!(iter.next().unwrap(), &['l', 'o', 'r']); assert_eq!(iter.next().unwrap(), &['o', 'r', 'e']); assert_eq!(iter.next().unwrap(), &['r', 'e', 'm']); assert!(iter.next().is_none()); If the slice is shorter than `size`: let slice = ['f', 'o', 'o']; let mut iter = slice.windows(4); assert!(iter.next().is_none()); Because the [Iterator](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html "trait core::iter::traits::iterator::Iterator") trait cannot represent the required lifetimes, there is no `windows_mut` analog to `windows`; `[0,1,2].windows_mut(2).collect()` would violate [the rules of references](https://doc.rust-lang.org/book/ch04-02-references-and-borrowing.html#the-rules-of-references) (though a [LendingIterator](https://blog.rust-lang.org/2022/10/28/gats-stabilization.html) analog is possible). You can sometimes use [`Cell::as_slice_of_cells`](https://doc.rust-lang.org/nightly/core/cell/struct.Cell.html#method.as_slice_of_cells "method core::cell::Cell::as_slice_of_cells") in conjunction with `windows` instead: use std::cell::Cell; let mut array = ['R', 'u', 's', 't', ' ', '2', '0', '1', '5']; let slice = &mut array[..]; let slice_of_cells: &[Cell] = Cell::from_mut(slice).as_slice_of_cells(); for w in slice_of_cells.windows(3) { Cell::swap(&w[0], &w[2]); } assert_eq!(array, ['s', 't', ' ', '2', '0', '1', '5', 'u', 'R']); 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#1155) #### pub fn [chunks](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#method.chunks) (&self, chunk\_size: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) ) -> [Chunks](https://doc.rust-lang.org/nightly/core/slice/iter/struct.Chunks.html "struct core::slice::iter::Chunks") <'\_, T> Returns an iterator over `chunk_size` elements of the slice at a time, starting at the beginning of the slice. The chunks are slices and do not overlap. If `chunk_size` does not divide the length of the slice, then the last chunk will not have length `chunk_size`. See [`chunks_exact`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.chunks_exact "method slice::chunks_exact") for a variant of this iterator that returns chunks of always exactly `chunk_size` elements, and [`rchunks`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.rchunks "method slice::rchunks") for the same iterator but starting at the end of the slice. If your `chunk_size` is a constant, consider using [`as_chunks`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.as_chunks "method slice::as_chunks") instead, which will give references to arrays of exactly that length, rather than slices. ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#panics-4) Panics Panics if `chunk_size` is zero. ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#examples-15) Examples let slice = ['l', 'o', 'r', 'e', 'm']; let mut iter = slice.chunks(2); assert_eq!(iter.next().unwrap(), &['l', 'o']); assert_eq!(iter.next().unwrap(), &['r', 'e']); assert_eq!(iter.next().unwrap(), &['m']); assert!(iter.next().is_none()); 1.31.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#1242) #### pub fn [chunks\_exact](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#method.chunks_exact) (&self, chunk\_size: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) ) -> [ChunksExact](https://doc.rust-lang.org/nightly/core/slice/iter/struct.ChunksExact.html "struct core::slice::iter::ChunksExact") <'\_, T> Returns an iterator over `chunk_size` elements of the slice at a time, starting at the beginning of the slice. The chunks are slices and do not overlap. If `chunk_size` does not divide the length of the slice, then the last up to `chunk_size-1` elements will be omitted and can be retrieved from the `remainder` function of the iterator. Due to each chunk having exactly `chunk_size` elements, the compiler can often optimize the resulting code better than in the case of [`chunks`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.chunks "method slice::chunks") . See [`chunks`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.chunks "method slice::chunks") for a variant of this iterator that also returns the remainder as a smaller chunk, and [`rchunks_exact`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.rchunks_exact "method slice::rchunks_exact") for the same iterator but starting at the end of the slice. If your `chunk_size` is a constant, consider using [`as_chunks`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.as_chunks "method slice::as_chunks") instead, which will give references to arrays of exactly that length, rather than slices. ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#panics-5) Panics Panics if `chunk_size` is zero. ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#examples-16) Examples let slice = ['l', 'o', 'r', 'e', 'm']; let mut iter = slice.chunks_exact(2); assert_eq!(iter.next().unwrap(), &['l', 'o']); assert_eq!(iter.next().unwrap(), &['r', 'e']); assert!(iter.next().is_none()); assert_eq!(iter.remainder(), &['m']); 1.88.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#1338) #### pub unsafe fn [as\_chunks\_unchecked](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#method.as_chunks_unchecked) (&self) -> &\[[\[T; N\]](https://doc.rust-lang.org/nightly/std/primitive.array.html)\ \] Splits the slice into a slice of `N`\-element arrays, assuming that there’s no remainder. This is the inverse operation to [`as_flattened`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.as_flattened "method slice::as_flattened") . As this is `unsafe`, consider whether you could use [`as_chunks`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.as_chunks "method slice::as_chunks") or [`as_rchunks`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.as_rchunks "method slice::as_rchunks") instead, perhaps via something like `if let (chunks, []) = slice.as_chunks()` or `let (chunks, []) = slice.as_chunks() else { unreachable!() };`. ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#safety-2) Safety This may only be called when * The slice splits exactly into `N`\-element chunks (aka `self.len() % N == 0`). * `N != 0`. ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#examples-17) Examples let slice: &[char] = &['l', 'o', 'r', 'e', 'm', '!']; let chunks: &[[char; 1]] = // SAFETY: 1-element chunks never have remainder unsafe { slice.as_chunks_unchecked() }; assert_eq!(chunks, &[['l'], ['o'], ['r'], ['e'], ['m'], ['!']]); let chunks: &[[char; 3]] = // SAFETY: The slice length (6) is a multiple of 3 unsafe { slice.as_chunks_unchecked() }; assert_eq!(chunks, &[['l', 'o', 'r'], ['e', 'm', '!']]); // These would be unsound: // let chunks: &[[_; 5]] = slice.as_chunks_unchecked() // The slice length is not a multiple of 5 // let chunks: &[[_; 0]] = slice.as_chunks_unchecked() // Zero-length chunks are never allowed 1.88.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#1396) #### pub fn [as\_chunks](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#method.as_chunks) (&self) -> (&\[[\[T; N\]](https://doc.rust-lang.org/nightly/std/primitive.array.html)\ \], &[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html) ) Splits the slice into a slice of `N`\-element arrays, starting at the beginning of the slice, and a remainder slice with length strictly less than `N`. The remainder is meaningful in the division sense. Given `let (chunks, remainder) = slice.as_chunks()`, then: * `chunks.len()` equals `slice.len() / N`, * `remainder.len()` equals `slice.len() % N`, and * `slice.len()` equals `chunks.len() * N + remainder.len()`. You can flatten the chunks back into a slice-of-`T` with [`as_flattened`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.as_flattened "method slice::as_flattened") . ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#panics-6) Panics Panics if `N` is zero. Note that this check is against a const generic parameter, not a runtime value, and thus a particular monomorphization will either always panic or it will never panic. ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#examples-18) Examples let slice = ['l', 'o', 'r', 'e', 'm']; let (chunks, remainder) = slice.as_chunks(); assert_eq!(chunks, &[['l', 'o'], ['r', 'e']]); assert_eq!(remainder, &['m']); If you expect the slice to be an exact multiple, you can combine `let`\-`else` with an empty slice pattern: let slice = ['R', 'u', 's', 't']; let (chunks, []) = slice.as_chunks::<2>() else { panic!("slice didn't have even length") }; assert_eq!(chunks, &[['R', 'u'], ['s', 't']]); 1.88.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#1443) #### pub fn [as\_rchunks](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#method.as_rchunks) (&self) -> (&[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html) , &\[[\[T; N\]](https://doc.rust-lang.org/nightly/std/primitive.array.html)\ \]) Splits the slice into a slice of `N`\-element arrays, starting at the end of the slice, and a remainder slice with length strictly less than `N`. The remainder is meaningful in the division sense. Given `let (remainder, chunks) = slice.as_rchunks()`, then: * `remainder.len()` equals `slice.len() % N`, * `chunks.len()` equals `slice.len() / N`, and * `slice.len()` equals `chunks.len() * N + remainder.len()`. You can flatten the chunks back into a slice-of-`T` with [`as_flattened`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.as_flattened "method slice::as_flattened") . ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#panics-7) Panics Panics if `N` is zero. Note that this check is against a const generic parameter, not a runtime value, and thus a particular monomorphization will either always panic or it will never panic. ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#examples-19) Examples let slice = ['l', 'o', 'r', 'e', 'm']; let (remainder, chunks) = slice.as_rchunks(); assert_eq!(remainder, &['l']); assert_eq!(chunks, &[['o', 'r'], ['e', 'm']]); 1.94.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#1646) #### pub fn [array\_windows](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#method.array_windows) (&self) -> [ArrayWindows](https://doc.rust-lang.org/nightly/core/slice/iter/struct.ArrayWindows.html "struct core::slice::iter::ArrayWindows") <'\_, T, N> Returns an iterator over overlapping windows of `N` elements of a slice, starting at the beginning of the slice. This is the const generic equivalent of [`windows`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.windows "method slice::windows") . If `N` is greater than the size of the slice, it will return no windows. ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#panics-8) Panics Panics if `N` is zero. Note that this check is against a const generic parameter, not a runtime value, and thus a particular monomorphization will either always panic or it will never panic. ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#examples-20) Examples let slice = [0, 1, 2, 3]; let mut iter = slice.array_windows(); assert_eq!(iter.next().unwrap(), &[0, 1]); assert_eq!(iter.next().unwrap(), &[1, 2]); assert_eq!(iter.next().unwrap(), &[2, 3]); assert!(iter.next().is_none()); 1.31.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#1686) #### pub fn [rchunks](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#method.rchunks) (&self, chunk\_size: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) ) -> [RChunks](https://doc.rust-lang.org/nightly/core/slice/iter/struct.RChunks.html "struct core::slice::iter::RChunks") <'\_, T> Returns an iterator over `chunk_size` elements of the slice at a time, starting at the end of the slice. The chunks are slices and do not overlap. If `chunk_size` does not divide the length of the slice, then the last chunk will not have length `chunk_size`. See [`rchunks_exact`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.rchunks_exact "method slice::rchunks_exact") for a variant of this iterator that returns chunks of always exactly `chunk_size` elements, and [`chunks`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.chunks "method slice::chunks") for the same iterator but starting at the beginning of the slice. If your `chunk_size` is a constant, consider using [`as_rchunks`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.as_rchunks "method slice::as_rchunks") instead, which will give references to arrays of exactly that length, rather than slices. ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#panics-9) Panics Panics if `chunk_size` is zero. ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#examples-21) Examples let slice = ['l', 'o', 'r', 'e', 'm']; let mut iter = slice.rchunks(2); assert_eq!(iter.next().unwrap(), &['e', 'm']); assert_eq!(iter.next().unwrap(), &['o', 'r']); assert_eq!(iter.next().unwrap(), &['l']); assert!(iter.next().is_none()); 1.31.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#1775) #### pub fn [rchunks\_exact](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#method.rchunks_exact) (&self, chunk\_size: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) ) -> [RChunksExact](https://doc.rust-lang.org/nightly/core/slice/iter/struct.RChunksExact.html "struct core::slice::iter::RChunksExact") <'\_, T> Returns an iterator over `chunk_size` elements of the slice at a time, starting at the end of the slice. The chunks are slices and do not overlap. If `chunk_size` does not divide the length of the slice, then the last up to `chunk_size-1` elements will be omitted and can be retrieved from the `remainder` function of the iterator. Due to each chunk having exactly `chunk_size` elements, the compiler can often optimize the resulting code better than in the case of [`rchunks`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.rchunks "method slice::rchunks") . See [`rchunks`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.rchunks "method slice::rchunks") for a variant of this iterator that also returns the remainder as a smaller chunk, and [`chunks_exact`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.chunks_exact "method slice::chunks_exact") for the same iterator but starting at the beginning of the slice. If your `chunk_size` is a constant, consider using [`as_rchunks`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.as_rchunks "method slice::as_rchunks") instead, which will give references to arrays of exactly that length, rather than slices. ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#panics-10) Panics Panics if `chunk_size` is zero. ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#examples-22) Examples let slice = ['l', 'o', 'r', 'e', 'm']; let mut iter = slice.rchunks_exact(2); assert_eq!(iter.next().unwrap(), &['e', 'm']); assert_eq!(iter.next().unwrap(), &['o', 'r']); assert!(iter.next().is_none()); assert_eq!(iter.remainder(), &['l']); 1.77.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#1864-1866) #### pub fn [chunk\_by](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#method.chunk_by) (&self, pred: F) -> [ChunkBy](https://doc.rust-lang.org/nightly/core/slice/iter/struct.ChunkBy.html "struct core::slice::iter::ChunkBy") <'\_, T, F> where F: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut") ([&T](https://doc.rust-lang.org/nightly/std/primitive.reference.html) , [&T](https://doc.rust-lang.org/nightly/std/primitive.reference.html) ) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html) , Returns an iterator over the slice producing non-overlapping runs of elements using the predicate to separate them. The predicate is called for every pair of consecutive elements, meaning that it is called on `slice[0]` and `slice[1]`, followed by `slice[1]` and `slice[2]`, and so on. ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#examples-23) Examples let slice = &[1, 1, 1, 3, 3, 2, 2, 2]; let mut iter = slice.chunk_by(|a, b| a == b); assert_eq!(iter.next(), Some(&[1, 1, 1][..])); assert_eq!(iter.next(), Some(&[3, 3][..])); assert_eq!(iter.next(), Some(&[2, 2, 2][..])); assert_eq!(iter.next(), None); This method can be used to extract the sorted subslices: let slice = &[1, 1, 2, 3, 2, 3, 2, 3, 4]; let mut iter = slice.chunk_by(|a, b| a <= b); assert_eq!(iter.next(), Some(&[1, 1, 2, 3][..])); assert_eq!(iter.next(), Some(&[2, 3][..])); assert_eq!(iter.next(), Some(&[2, 3, 4][..])); assert_eq!(iter.next(), None); 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#1952) #### pub fn [split\_at](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#method.split_at) (&self, mid: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html) ) -> (&[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html) , &[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html) ) Divides one slice into two at an index. The first will contain all indices from `[0, mid)` (excluding the index `mid` itself) and the second will contain all indices from `[mid, len)` (excluding the index `len` itself).\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#panics-11)\ Panics\ \ Panics if `mid > len`. For a non-panicking alternative see [`split_at_checked`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.split_at_checked "method slice::split_at_checked")\ .\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#examples-24)\ Examples\ \ let v = ['a', 'b', 'c'];\ \ {\ let (left, right) = v.split_at(0);\ assert_eq!(left, []);\ assert_eq!(right, ['a', 'b', 'c']);\ }\ \ {\ let (left, right) = v.split_at(2);\ assert_eq!(left, ['a', 'b']);\ assert_eq!(right, ['c']);\ }\ \ {\ let (left, right) = v.split_at(3);\ assert_eq!(left, ['a', 'b', 'c']);\ assert_eq!(right, []);\ }\ \ 1.79.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#2038)\ \ #### pub unsafe fn [split\_at\_unchecked](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#method.split_at_unchecked)\ (&self, mid: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html)\ ) -> (&[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ , &[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ )\ \ Divides one slice into two at an index, without doing bounds checking.\ \ The first will contain all indices from `[0, mid)` (excluding the index `mid` itself) and the second will contain all indices from `[mid, len)` (excluding the index `len` itself).\ \ For a safe alternative see [`split_at`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.split_at "method slice::split_at")\ .\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#safety-3)\ Safety\ \ Calling this method with an out-of-bounds index is _[undefined behavior](https://doc.rust-lang.org/reference/behavior-considered-undefined.html)\ _ even if the resulting reference is not used. The caller has to ensure that `0 <= mid <= self.len()`.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#examples-25)\ Examples\ \ let v = ['a', 'b', 'c'];\ \ unsafe {\ let (left, right) = v.split_at_unchecked(0);\ assert_eq!(left, []);\ assert_eq!(right, ['a', 'b', 'c']);\ }\ \ unsafe {\ let (left, right) = v.split_at_unchecked(2);\ assert_eq!(left, ['a', 'b']);\ assert_eq!(right, ['c']);\ }\ \ unsafe {\ let (left, right) = v.split_at_unchecked(3);\ assert_eq!(left, ['a', 'b', 'c']);\ assert_eq!(right, []);\ }\ \ 1.80.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#2153)\ \ #### pub fn [split\_at\_checked](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#method.split_at_checked)\ (&self, mid: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html)\ ) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option")\ <(&[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ , &[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ )>\ \ Divides one slice into two at an index, returning `None` if the slice is too short.\ \ If `mid ≤ len` returns a pair of slices where the first will contain all indices from `[0, mid)` (excluding the index `mid` itself) and the second will contain all indices from `[mid, len)` (excluding the index `len` itself).\ \ Otherwise, if `mid > len`, returns `None`.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#examples-26)\ Examples\ \ let v = [1, -2, 3, -4, 5, -6];\ \ {\ let (left, right) = v.split_at_checked(0).unwrap();\ assert_eq!(left, []);\ assert_eq!(right, [1, -2, 3, -4, 5, -6]);\ }\ \ {\ let (left, right) = v.split_at_checked(2).unwrap();\ assert_eq!(left, [1, -2]);\ assert_eq!(right, [3, -4, 5, -6]);\ }\ \ {\ let (left, right) = v.split_at_checked(6).unwrap();\ assert_eq!(left, [1, -2, 3, -4, 5, -6]);\ assert_eq!(right, []);\ }\ \ assert_eq!(None, v.split_at_checked(7));\ \ 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#2244-2246)\ \ #### pub fn [split](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#method.split)\ (&self, pred: F) -> [Split](https://doc.rust-lang.org/nightly/core/slice/iter/struct.Split.html "struct core::slice::iter::Split")\ <'\_, T, F>\ \ where F: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut")\ ([&T](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ ) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html)\ ,\ \ Returns an iterator over subslices separated by elements that match `pred`. The matched element is not contained in the subslices.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#examples-27)\ Examples\ \ let slice = [10, 40, 33, 20];\ let mut iter = slice.split(|num| num % 3 == 0);\ \ assert_eq!(iter.next().unwrap(), &[10, 40]);\ assert_eq!(iter.next().unwrap(), &[20]);\ assert!(iter.next().is_none());\ \ If the first element is matched, an empty slice will be the first item returned by the iterator. Similarly, if the last element in the slice is matched, an empty slice will be the last item returned by the iterator:\ \ let slice = [10, 40, 33];\ let mut iter = slice.split(|num| num % 3 == 0);\ \ assert_eq!(iter.next().unwrap(), &[10, 40]);\ assert_eq!(iter.next().unwrap(), &[]);\ assert!(iter.next().is_none());\ \ If two matched elements are directly adjacent, an empty slice will be present between them:\ \ let slice = [10, 6, 33, 20];\ let mut iter = slice.split(|num| num % 3 == 0);\ \ assert_eq!(iter.next().unwrap(), &[10]);\ assert_eq!(iter.next().unwrap(), &[]);\ assert_eq!(iter.next().unwrap(), &[20]);\ assert!(iter.next().is_none());\ \ 1.51.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#2302-2304)\ \ #### pub fn [split\_inclusive](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#method.split_inclusive)\ (&self, pred: F) -> [SplitInclusive](https://doc.rust-lang.org/nightly/core/slice/iter/struct.SplitInclusive.html "struct core::slice::iter::SplitInclusive")\ <'\_, T, F>\ \ where F: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut")\ ([&T](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ ) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html)\ ,\ \ Returns an iterator over subslices separated by elements that match `pred`. The matched element is contained in the end of the previous subslice as a terminator.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#examples-28)\ Examples\ \ let slice = [10, 40, 33, 20];\ let mut iter = slice.split_inclusive(|num| num % 3 == 0);\ \ assert_eq!(iter.next().unwrap(), &[10, 40, 33]);\ assert_eq!(iter.next().unwrap(), &[20]);\ assert!(iter.next().is_none());\ \ If the last element of the slice is matched, that element will be considered the terminator of the preceding slice. That slice will be the last item returned by the iterator.\ \ let slice = [3, 10, 40, 33];\ let mut iter = slice.split_inclusive(|num| num % 3 == 0);\ \ assert_eq!(iter.next().unwrap(), &[3]);\ assert_eq!(iter.next().unwrap(), &[10, 40, 33]);\ assert!(iter.next().is_none());\ \ 1.27.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#2362-2364)\ \ #### pub fn [rsplit](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#method.rsplit)\ (&self, pred: F) -> [RSplit](https://doc.rust-lang.org/nightly/core/slice/iter/struct.RSplit.html "struct core::slice::iter::RSplit")\ <'\_, T, F>\ \ where F: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut")\ ([&T](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ ) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html)\ ,\ \ Returns an iterator over subslices separated by elements that match `pred`, starting at the end of the slice and working backwards. The matched element is not contained in the subslices.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#examples-29)\ Examples\ \ let slice = [11, 22, 33, 0, 44, 55];\ let mut iter = slice.rsplit(|num| *num == 0);\ \ assert_eq!(iter.next().unwrap(), &[44, 55]);\ assert_eq!(iter.next().unwrap(), &[11, 22, 33]);\ assert_eq!(iter.next(), None);\ \ As with `split()`, if the first or last element is matched, an empty slice will be the first (or last) item returned by the iterator.\ \ let v = &[0, 1, 1, 2, 3, 5, 8];\ let mut it = v.rsplit(|n| *n % 2 == 0);\ assert_eq!(it.next().unwrap(), &[]);\ assert_eq!(it.next().unwrap(), &[3, 5]);\ assert_eq!(it.next().unwrap(), &[1, 1]);\ assert_eq!(it.next().unwrap(), &[]);\ assert_eq!(it.next(), None);\ \ 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#2416-2418)\ \ #### pub fn [splitn](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#method.splitn)\ (&self, n: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html)\ , pred: F) -> [SplitN](https://doc.rust-lang.org/nightly/core/slice/iter/struct.SplitN.html "struct core::slice::iter::SplitN")\ <'\_, T, F>\ \ where F: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut")\ ([&T](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ ) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html)\ ,\ \ Returns an iterator over subslices separated by elements that match `pred`, limited to returning at most `n` items. The matched element is not contained in the subslices.\ \ The last element returned, if any, will contain the remainder of the slice.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#examples-30)\ Examples\ \ Print the slice split once by numbers divisible by 3 (i.e., `[10, 40]`, `[20, 60, 50]`):\ \ let v = [10, 40, 30, 20, 60, 50];\ \ for group in v.splitn(2, |num| *num % 3 == 0) {\ println!("{group:?}");\ }\ \ 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#2471-2473)\ \ #### pub fn [rsplitn](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#method.rsplitn)\ (&self, n: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html)\ , pred: F) -> [RSplitN](https://doc.rust-lang.org/nightly/core/slice/iter/struct.RSplitN.html "struct core::slice::iter::RSplitN")\ <'\_, T, F>\ \ where F: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut")\ ([&T](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ ) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html)\ ,\ \ Returns an iterator over subslices separated by elements that match `pred` limited to returning at most `n` items. This starts at the end of the slice and works backwards. The matched element is not contained in the subslices.\ \ The last element returned, if any, will contain the remainder of the slice.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#examples-31)\ Examples\ \ Print the slice split once, starting from the end, by numbers divisible by 3 (i.e., `[50]`, `[10, 40, 30, 20]`):\ \ let v = [10, 40, 30, 20, 60, 50];\ \ for group in v.rsplitn(2, |num| *num % 3 == 0) {\ println!("{group:?}");\ }\ \ [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#2525-2527)\ \ #### pub fn [split\_once](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#method.split_once)\ (&self, pred: F) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option")\ <(&[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ , &[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ )>\ \ where F: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut")\ ([&T](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ ) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html)\ ,\ \ 🔬This is a nightly-only experimental API. (`slice_split_once`)\ \ Splits the slice on the first element that matches the specified predicate.\ \ If any matching elements are present in the slice, returns the prefix before the match and suffix after. The matching element itself is not included. If no elements match, returns `None`.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#examples-32)\ Examples\ \ #![feature(slice_split_once)]\ let s = [1, 2, 3, 2, 4];\ assert_eq!(s.split_once(|&x| x == 2), Some((\ &[1][..],\ &[3, 2, 4][..]\ )));\ assert_eq!(s.split_once(|&x| x == 0), None);\ \ [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#2553-2555)\ \ #### pub fn [rsplit\_once](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#method.rsplit_once)\ (&self, pred: F) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option")\ <(&[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ , &[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ )>\ \ where F: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut")\ ([&T](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ ) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html)\ ,\ \ 🔬This is a nightly-only experimental API. (`slice_split_once`)\ \ Splits the slice on the last element that matches the specified predicate.\ \ If any matching elements are present in the slice, returns the prefix before the match and suffix after. The matching element itself is not included. If no elements match, returns `None`.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#examples-33)\ Examples\ \ #![feature(slice_split_once)]\ let s = [1, 2, 3, 2, 4];\ assert_eq!(s.rsplit_once(|&x| x == 2), Some((\ &[1, 2, 3][..],\ &[4][..]\ )));\ assert_eq!(s.rsplit_once(|&x| x == 0), None);\ \ 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#2589-2591)\ \ #### pub fn [contains](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#method.contains)\ (&self, x: [&T](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ ) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html)\ \ where T: [PartialEq](https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html "trait core::cmp::PartialEq")\ ,\ \ Returns `true` if the slice contains an element with the given value.\ \ This operation is _O_(_n_).\ \ Note that if you have a sorted slice, [`binary_search`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.binary_search "method slice::binary_search")\ may be faster.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#examples-34)\ Examples\ \ let v = [10, 40, 30];\ assert!(v.contains(&30));\ assert!(!v.contains(&50));\ \ If you do not have a `&T`, but some other value that you can compare with one (for example, `String` implements `PartialEq`), you can use `iter().any`:\ \ let v = [String::from("hello"), String::from("world")]; // slice of `String`\ assert!(v.iter().any(|e| e == "hello")); // search with `&str`\ assert!(!v.iter().any(|e| e == "hi"));\ \ 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#2619-2621)\ \ #### pub fn [starts\_with](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#method.starts_with)\ (&self, needle: &[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ ) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html)\ \ where T: [PartialEq](https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html "trait core::cmp::PartialEq")\ ,\ \ Returns `true` if `needle` is a prefix of the slice or equal to the slice.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#examples-35)\ Examples\ \ let v = [10, 40, 30];\ assert!(v.starts_with(&[10]));\ assert!(v.starts_with(&[10, 40]));\ assert!(v.starts_with(&v));\ assert!(!v.starts_with(&[50]));\ assert!(!v.starts_with(&[10, 50]));\ \ Always returns `true` if `needle` is an empty slice:\ \ let v = &[10, 40, 30];\ assert!(v.starts_with(&[]));\ let v: &[u8] = &[];\ assert!(v.starts_with(&[]));\ \ 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#2650-2652)\ \ #### pub fn [ends\_with](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#method.ends_with)\ (&self, needle: &[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ ) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html)\ \ where T: [PartialEq](https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html "trait core::cmp::PartialEq")\ ,\ \ Returns `true` if `needle` is a suffix of the slice or equal to the slice.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#examples-36)\ Examples\ \ let v = [10, 40, 30];\ assert!(v.ends_with(&[30]));\ assert!(v.ends_with(&[40, 30]));\ assert!(v.ends_with(&v));\ assert!(!v.ends_with(&[50]));\ assert!(!v.ends_with(&[50, 30]));\ \ Always returns `true` if `needle` is an empty slice:\ \ let v = &[10, 40, 30];\ assert!(v.ends_with(&[]));\ let v: &[u8] = &[];\ assert!(v.ends_with(&[]));\ \ 1.51.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#2682-2684)\ \ #### pub fn [strip\_prefix](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#method.strip_prefix)\

(&self, prefix: [&P](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ ) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option")\ <&[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ \>\ \ where P: [SlicePattern](https://doc.rust-lang.org/nightly/core/slice/trait.SlicePattern.html "trait core::slice::SlicePattern")\ + ?[Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized")\ , T: [PartialEq](https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html "trait core::cmp::PartialEq")\ ,\ \ Returns a subslice with the prefix removed.\ \ If the slice starts with `prefix`, returns the subslice after the prefix, wrapped in `Some`. If `prefix` is empty, simply returns the original slice. If `prefix` is equal to the original slice, returns an empty slice.\ \ If the slice does not start with `prefix`, returns `None`.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#examples-37)\ Examples\ \ let v = &[10, 40, 30];\ assert_eq!(v.strip_prefix(&[10]), Some(&[40, 30][..]));\ assert_eq!(v.strip_prefix(&[10, 40]), Some(&[30][..]));\ assert_eq!(v.strip_prefix(&[10, 40, 30]), Some(&[][..]));\ assert_eq!(v.strip_prefix(&[50]), None);\ assert_eq!(v.strip_prefix(&[10, 50]), None);\ \ let prefix : &str = "he";\ assert_eq!(b"hello".strip_prefix(prefix.as_bytes()),\ Some(b"llo".as_ref()));\ \ 1.51.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#2718-2720)\ \ #### pub fn [strip\_suffix](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#method.strip_suffix)\

(&self, suffix: [&P](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ ) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option")\ <&[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ \>\ \ where P: [SlicePattern](https://doc.rust-lang.org/nightly/core/slice/trait.SlicePattern.html "trait core::slice::SlicePattern")\ + ?[Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized")\ , T: [PartialEq](https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html "trait core::cmp::PartialEq")\ ,\ \ Returns a subslice with the suffix removed.\ \ If the slice ends with `suffix`, returns the subslice before the suffix, wrapped in `Some`. If `suffix` is empty, simply returns the original slice. If `suffix` is equal to the original slice, returns an empty slice.\ \ If the slice does not end with `suffix`, returns `None`.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#examples-38)\ Examples\ \ let v = &[10, 40, 30];\ assert_eq!(v.strip_suffix(&[30]), Some(&[10, 40][..]));\ assert_eq!(v.strip_suffix(&[40, 30]), Some(&[10][..]));\ assert_eq!(v.strip_suffix(&[10, 40, 30]), Some(&[][..]));\ assert_eq!(v.strip_suffix(&[50]), None);\ assert_eq!(v.strip_suffix(&[50, 30]), None);\ \ [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#2757-2761)\ \ #### pub fn [strip\_circumfix](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#method.strip_circumfix)\ (&self, prefix: [&P](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ , suffix: [&S](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ ) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option")\ <&[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ \>\ \ where T: [PartialEq](https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html "trait core::cmp::PartialEq")\ , S: [SlicePattern](https://doc.rust-lang.org/nightly/core/slice/trait.SlicePattern.html "trait core::slice::SlicePattern")\ + ?[Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized")\ , P: [SlicePattern](https://doc.rust-lang.org/nightly/core/slice/trait.SlicePattern.html "trait core::slice::SlicePattern")\ + ?[Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized")\ ,\ \ 🔬This is a nightly-only experimental API. (`strip_circumfix`)\ \ Returns a subslice with the prefix and suffix removed.\ \ If the slice starts with `prefix` and ends with `suffix`, returns the subslice after the prefix and before the suffix, wrapped in `Some`.\ \ If the slice does not start with `prefix` or does not end with `suffix`, returns `None`.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#examples-39)\ Examples\ \ #![feature(strip_circumfix)]\ \ let v = &[10, 50, 40, 30];\ assert_eq!(v.strip_circumfix(&[10], &[30]), Some(&[50, 40][..]));\ assert_eq!(v.strip_circumfix(&[10], &[40, 30]), Some(&[50][..]));\ assert_eq!(v.strip_circumfix(&[10, 50], &[40, 30]), Some(&[][..]));\ assert_eq!(v.strip_circumfix(&[50], &[30]), None);\ assert_eq!(v.strip_circumfix(&[10], &[40]), None);\ assert_eq!(v.strip_circumfix(&[], &[40, 30]), Some(&[10, 50][..]));\ assert_eq!(v.strip_circumfix(&[10, 50], &[]), Some(&[40, 30][..]));\ \ [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#2793-2795)\ \ #### pub fn [trim\_prefix](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#method.trim_prefix)\

(&self, prefix: [&P](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ ) -> &[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ \ where P: [SlicePattern](https://doc.rust-lang.org/nightly/core/slice/trait.SlicePattern.html "trait core::slice::SlicePattern")\ + ?[Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized")\ , T: [PartialEq](https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html "trait core::cmp::PartialEq")\ ,\ \ 🔬This is a nightly-only experimental API. (`trim_prefix_suffix`)\ \ Returns a subslice with the optional prefix removed.\ \ If the slice starts with `prefix`, returns the subslice after the prefix. If `prefix` is empty or the slice does not start with `prefix`, simply returns the original slice. If `prefix` is equal to the original slice, returns an empty slice.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#examples-40)\ Examples\ \ #![feature(trim_prefix_suffix)]\ \ let v = &[10, 40, 30];\ \ // Prefix present - removes it\ assert_eq!(v.trim_prefix(&[10]), &[40, 30][..]);\ assert_eq!(v.trim_prefix(&[10, 40]), &[30][..]);\ assert_eq!(v.trim_prefix(&[10, 40, 30]), &[][..]);\ \ // Prefix absent - returns original slice\ assert_eq!(v.trim_prefix(&[50]), &[10, 40, 30][..]);\ assert_eq!(v.trim_prefix(&[10, 50]), &[10, 40, 30][..]);\ \ let prefix : &str = "he";\ assert_eq!(b"hello".trim_prefix(prefix.as_bytes()), b"llo".as_ref());\ \ [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#2833-2835)\ \ #### pub fn [trim\_suffix](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#method.trim_suffix)\

(&self, suffix: [&P](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ ) -> &[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ \ where P: [SlicePattern](https://doc.rust-lang.org/nightly/core/slice/trait.SlicePattern.html "trait core::slice::SlicePattern")\ + ?[Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized")\ , T: [PartialEq](https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html "trait core::cmp::PartialEq")\ ,\ \ 🔬This is a nightly-only experimental API. (`trim_prefix_suffix`)\ \ Returns a subslice with the optional suffix removed.\ \ If the slice ends with `suffix`, returns the subslice before the suffix. If `suffix` is empty or the slice does not end with `suffix`, simply returns the original slice. If `suffix` is equal to the original slice, returns an empty slice.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#examples-41)\ Examples\ \ #![feature(trim_prefix_suffix)]\ \ let v = &[10, 40, 30];\ \ // Suffix present - removes it\ assert_eq!(v.trim_suffix(&[30]), &[10, 40][..]);\ assert_eq!(v.trim_suffix(&[40, 30]), &[10][..]);\ assert_eq!(v.trim_suffix(&[10, 40, 30]), &[][..]);\ \ // Suffix absent - returns original slice\ assert_eq!(v.trim_suffix(&[50]), &[10, 40, 30][..]);\ assert_eq!(v.trim_suffix(&[50, 30]), &[10, 40, 30][..]);\ \ 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#2919-2921)\ \ #### pub fn [binary\_search](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#method.binary_search)\ (&self, x: [&T](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ ) -> [Result](https://doc.rust-lang.org/nightly/core/result/enum.Result.html "enum core::result::Result")\ <[usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html)\ , [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html)\ \>\ \ where T: [Ord](https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html "trait core::cmp::Ord")\ ,\ \ Binary searches this slice for a given element. If the slice is not sorted, the returned result is unspecified and meaningless.\ \ If the value is found then [`Result::Ok`](https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Ok "variant core::result::Result::Ok")\ is returned, containing the index of the matching element. If there are multiple matches, then any one of the matches could be returned. The index is chosen deterministically, but is subject to change in future versions of Rust. If the value is not found then [`Result::Err`](https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Err "variant core::result::Result::Err")\ is returned, containing the index where a matching element could be inserted while maintaining sorted order.\ \ See also [`binary_search_by`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.binary_search_by "method slice::binary_search_by")\ , [`binary_search_by_key`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.binary_search_by_key "method slice::binary_search_by_key")\ , and [`partition_point`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.partition_point "method slice::partition_point")\ .\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#examples-42)\ Examples\ \ Looks up a series of four elements. The first is found, with a uniquely determined position; the second and third are not found; the fourth could match any position in `[1, 4]`.\ \ let s = [0, 1, 1, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55];\ \ assert_eq!(s.binary_search(&13), Ok(9));\ assert_eq!(s.binary_search(&4), Err(7));\ assert_eq!(s.binary_search(&100), Err(13));\ let r = s.binary_search(&1);\ assert!(match r { Ok(1..=4) => true, _ => false, });\ \ If you want to find that whole _range_ of matching items, rather than an arbitrary matching one, that can be done using [`partition_point`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.partition_point "method slice::partition_point")\ :\ \ let s = [0, 1, 1, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55];\ \ let low = s.partition_point(|x| x < &1);\ assert_eq!(low, 1);\ let high = s.partition_point(|x| x <= &1);\ assert_eq!(high, 5);\ let r = s.binary_search(&1);\ assert!((low..high).contains(&r.unwrap()));\ \ assert!(s[..low].iter().all(|&x| x < 1));\ assert!(s[low..high].iter().all(|&x| x == 1));\ assert!(s[high..].iter().all(|&x| x > 1));\ \ // For something not found, the "range" of equal items is empty\ assert_eq!(s.partition_point(|x| x < &11), 9);\ assert_eq!(s.partition_point(|x| x <= &11), 9);\ assert_eq!(s.binary_search(&11), Err(9));\ \ If you want to insert an item to a sorted vector, while maintaining sort order, consider using [`partition_point`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.partition_point "method slice::partition_point")\ :\ \ let mut s = vec![0, 1, 1, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55];\ let num = 42;\ let idx = s.partition_point(|&x| x <= num);\ // If `num` is unique, `s.partition_point(|&x| x < num)` (with `<`) is equivalent to\ // `s.binary_search(&num).unwrap_or_else(|x| x)`, but using `<=` will allow `insert`\ // to shift less elements.\ s.insert(idx, num);\ assert_eq!(s, [0, 1, 1, 1, 1, 2, 3, 5, 8, 13, 21, 34, 42, 55]);\ \ 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#2970-2972)\ \ #### pub fn [binary\_search\_by](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#method.binary_search_by)\ <'a, F>(&'a self, f: F) -> [Result](https://doc.rust-lang.org/nightly/core/result/enum.Result.html "enum core::result::Result")\ <[usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html)\ , [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html)\ \>\ \ where F: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut")\ ([&'a T](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ ) -> [Ordering](https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html "enum core::cmp::Ordering")\ ,\ \ Binary searches this slice with a comparator function.\ \ The comparator function should return an order code that indicates whether its argument is `Less`, `Equal` or `Greater` the desired target. If the slice is not sorted or if the comparator function does not implement an order consistent with the sort order of the underlying slice, the returned result is unspecified and meaningless.\ \ If the value is found then [`Result::Ok`](https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Ok "variant core::result::Result::Ok")\ is returned, containing the index of the matching element. If there are multiple matches, then any one of the matches could be returned. The index is chosen deterministically, but is subject to change in future versions of Rust. If the value is not found then [`Result::Err`](https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Err "variant core::result::Result::Err")\ is returned, containing the index where a matching element could be inserted while maintaining sorted order.\ \ See also [`binary_search`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.binary_search "method slice::binary_search")\ , [`binary_search_by_key`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.binary_search_by_key "method slice::binary_search_by_key")\ , and [`partition_point`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.partition_point "method slice::partition_point")\ .\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#examples-43)\ Examples\ \ Looks up a series of four elements. The first is found, with a uniquely determined position; the second and third are not found; the fourth could match any position in `[1, 4]`.\ \ let s = [0, 1, 1, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55];\ \ let seek = 13;\ assert_eq!(s.binary_search_by(|probe| probe.cmp(&seek)), Ok(9));\ let seek = 4;\ assert_eq!(s.binary_search_by(|probe| probe.cmp(&seek)), Err(7));\ let seek = 100;\ assert_eq!(s.binary_search_by(|probe| probe.cmp(&seek)), Err(13));\ let seek = 1;\ let r = s.binary_search_by(|probe| probe.cmp(&seek));\ assert!(match r { Ok(1..=4) => true, _ => false, });\ \ 1.10.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#3071-3074)\ \ #### pub fn [binary\_search\_by\_key](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#method.binary_search_by_key)\ <'a, B, F>( &'a self, b: [&B](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ , f: F, ) -> [Result](https://doc.rust-lang.org/nightly/core/result/enum.Result.html "enum core::result::Result")\ <[usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html)\ , [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html)\ \>\ \ where F: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut")\ ([&'a T](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ ) -> B, B: [Ord](https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html "trait core::cmp::Ord")\ ,\ \ Binary searches this slice with a key extraction function.\ \ Assumes that the slice is sorted by the key, for instance with [`sort_by_key`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.sort_by_key "method slice::sort_by_key")\ using the same key extraction function. If the slice is not sorted by the key, the returned result is unspecified and meaningless.\ \ If the value is found then [`Result::Ok`](https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Ok "variant core::result::Result::Ok")\ is returned, containing the index of the matching element. If there are multiple matches, then any one of the matches could be returned. The index is chosen deterministically, but is subject to change in future versions of Rust. If the value is not found then [`Result::Err`](https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Err "variant core::result::Result::Err")\ is returned, containing the index where a matching element could be inserted while maintaining sorted order.\ \ See also [`binary_search`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.binary_search "method slice::binary_search")\ , [`binary_search_by`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.binary_search_by "method slice::binary_search_by")\ , and [`partition_point`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.partition_point "method slice::partition_point")\ .\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#examples-44)\ Examples\ \ Looks up a series of four elements in a slice of pairs sorted by their second elements. The first is found, with a uniquely determined position; the second and third are not found; the fourth could match any position in `[1, 4]`.\ \ let s = [(0, 0), (2, 1), (4, 1), (5, 1), (3, 1),\ (1, 2), (2, 3), (4, 5), (5, 8), (3, 13),\ (1, 21), (2, 34), (4, 55)];\ \ assert_eq!(s.binary_search_by_key(&13, |&(a, b)| b), Ok(9));\ assert_eq!(s.binary_search_by_key(&4, |&(a, b)| b), Err(7));\ assert_eq!(s.binary_search_by_key(&100, |&(a, b)| b), Err(13));\ let r = s.binary_search_by_key(&1, |&(a, b)| b);\ assert!(match r { Ok(1..=4) => true, _ => false, });\ \ 1.30.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#4499)\ \ #### pub unsafe fn [align\_to](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#method.align_to)\ (&self) -> (&[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ , &[\[U\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ , &[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ )\ \ Transmutes the slice to a slice of another type, ensuring alignment of the types is maintained.\ \ This method splits the slice into three distinct slices: prefix, correctly aligned middle slice of a new type, and the suffix slice. The middle part will be as big as possible under the given alignment constraint and element size.\ \ This method has no purpose when either input element `T` or output element `U` are zero-sized and will return the original slice without splitting anything.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#safety-4)\ Safety\ \ This method is essentially a `transmute` with respect to the elements in the returned middle slice, so all the usual caveats pertaining to `transmute::` also apply here.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#examples-45)\ Examples\ \ Basic usage:\ \ unsafe {\ let bytes: [u8; 7] = [1, 2, 3, 4, 5, 6, 7];\ let (prefix, shorts, suffix) = bytes.align_to::();\ // less_efficient_algorithm_for_bytes(prefix);\ // more_efficient_algorithm_for_aligned_shorts(shorts);\ // less_efficient_algorithm_for_bytes(suffix);\ }\ \ [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#4655-4658)\ \ #### pub fn [as\_simd](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#method.as_simd)\ (&self) -> (&[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ , &\[[Simd](https://doc.rust-lang.org/nightly/core/core_simd/vector/struct.Simd.html "struct core::core_simd::vector::Simd")\ \], &[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ )\ \ where [Simd](https://doc.rust-lang.org/nightly/core/core_simd/vector/struct.Simd.html "struct core::core_simd::vector::Simd")\ : [AsRef](https://doc.rust-lang.org/nightly/core/convert/trait.AsRef.html "trait core::convert::AsRef")\ <[\[T; LANES\]](https://doc.rust-lang.org/nightly/std/primitive.array.html)\ \>, T: [SimdElement](https://doc.rust-lang.org/nightly/core/core_simd/vector/trait.SimdElement.html "trait core::core_simd::vector::SimdElement")\ ,\ \ 🔬This is a nightly-only experimental API. (`portable_simd`)\ \ Splits a slice into a prefix, a middle of aligned SIMD types, and a suffix.\ \ This is a safe wrapper around [`slice::align_to`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.align_to "method slice::align_to")\ , so inherits the same guarantees as that method.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#panics-12)\ Panics\ \ This will panic if the size of the SIMD type is different from `LANES` times that of the scalar.\ \ At the time of writing, the trait restrictions on `Simd` keeps that from ever happening, as only power-of-two numbers of lanes are supported. It’s possible that, in the future, those restrictions might be lifted in a way that would make it possible to see panics from this method for something like `LANES == 3`.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#examples-46)\ Examples\ \ #![feature(portable_simd)]\ use core::simd::prelude::*;\ \ let short = &[1, 2, 3];\ let (prefix, middle, suffix) = short.as_simd::<4>();\ assert_eq!(middle, []); // Not enough elements for anything in the middle\ \ // They might be split in any possible way between prefix and suffix\ let it = prefix.iter().chain(suffix).copied();\ assert_eq!(it.collect::>(), vec![1, 2, 3]);\ \ fn basic_simd_sum(x: &[f32]) -> f32 {\ use std::ops::Add;\ let (prefix, middle, suffix) = x.as_simd();\ let sums = f32x4::from_array([\ prefix.iter().copied().sum(),\ 0.0,\ 0.0,\ suffix.iter().copied().sum(),\ ]);\ let sums = middle.iter().copied().fold(sums, f32x4::add);\ sums.reduce_sum()\ }\ \ let numbers: Vec = (1..101).map(|x| x as _).collect();\ assert_eq!(basic_simd_sum(&numbers[1..99]), 4949.0);\ \ 1.82.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#4728-4730)\ \ #### pub fn [is\_sorted](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#method.is_sorted)\ (&self) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html)\ \ where T: [PartialOrd](https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html "trait core::cmp::PartialOrd")\ ,\ \ Checks if the elements of this slice are sorted.\ \ That is, for each element `a` and its following element `b`, `a <= b` must hold. If the slice yields exactly zero or one element, `true` is returned.\ \ Note that if `Self::Item` is only `PartialOrd`, but not `Ord`, the above definition implies that this function returns `false` if any two consecutive items are not comparable.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#examples-47)\ Examples\ \ let empty: [i32; 0] = [];\ \ assert!([1, 2, 2, 9].is_sorted());\ assert!(![1, 3, 2, 4].is_sorted());\ assert!([0].is_sorted());\ assert!(empty.is_sorted());\ assert!(![0.0, 1.0, f32::NAN].is_sorted());\ \ 1.82.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#4771-4773)\ \ #### pub fn [is\_sorted\_by](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#method.is_sorted_by)\ <'a, F>(&'a self, compare: F) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html)\ \ where F: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut")\ ([&'a T](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ , [&'a T](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ ) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html)\ ,\ \ Checks if the elements of this slice are sorted using the given comparator function.\ \ Instead of using `PartialOrd::partial_cmp`, this function uses the given `compare` function to determine whether two elements are to be considered in sorted order.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#examples-48)\ Examples\ \ assert!([1, 2, 2, 9].is_sorted_by(|a, b| a <= b));\ assert!(![1, 2, 2, 9].is_sorted_by(|a, b| a < b));\ \ assert!([0].is_sorted_by(|a, b| true));\ assert!([0].is_sorted_by(|a, b| false));\ \ let empty: [i32; 0] = [];\ assert!(empty.is_sorted_by(|a, b| false));\ assert!(empty.is_sorted_by(|a, b| true));\ \ 1.82.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#4795-4798)\ \ #### pub fn [is\_sorted\_by\_key](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#method.is_sorted_by_key)\ <'a, F, K>(&'a self, f: F) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html)\ \ where F: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut")\ ([&'a T](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ ) -> K, K: [PartialOrd](https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html "trait core::cmp::PartialOrd")\ ,\ \ Checks if the elements of this slice are sorted using the given key extraction function.\ \ Instead of comparing the slice’s elements directly, this function compares the keys of the elements, as determined by `f`. Apart from that, it’s equivalent to [`is_sorted`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.is_sorted "method slice::is_sorted")\ ; see its documentation for more information.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#examples-49)\ Examples\ \ assert!(["c", "bb", "aaa"].is_sorted_by_key(|s| s.len()));\ assert!(![-2i32, -1, 0, 3].is_sorted_by_key(|n| n.abs()));\ \ 1.52.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#4854-4856)\ \ #### pub fn [partition\_point](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#method.partition_point)\

(&self, pred: P) -> [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html)\ \ where P: [FnMut](https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html "trait core::ops::function::FnMut")\ ([&T](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ ) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html)\ ,\ \ Returns the index of the partition point according to the given predicate (the index of the first element of the second partition).\ \ The slice is assumed to be partitioned according to the given predicate. This means that all elements for which the predicate returns true are at the start of the slice and all elements for which the predicate returns false are at the end. For example, `[7, 15, 3, 5, 4, 12, 6]` is partitioned under the predicate `x % 2 != 0` (all odd numbers are at the start, all even at the end).\ \ If this slice is not partitioned, the returned result is unspecified and meaningless, as this method performs a kind of binary search.\ \ See also [`binary_search`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.binary_search "method slice::binary_search")\ , [`binary_search_by`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.binary_search_by "method slice::binary_search_by")\ , and [`binary_search_by_key`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.binary_search_by_key "method slice::binary_search_by_key")\ .\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#examples-50)\ Examples\ \ let v = [1, 2, 3, 3, 5, 6, 7];\ let i = v.partition_point(|&x| x < 5);\ \ assert_eq!(i, 4);\ assert!(v[..i].iter().all(|&x| x < 5));\ assert!(v[i..].iter().all(|&x| !(x < 5)));\ \ If all elements of the slice match the predicate, including if the slice is empty, then the length of the slice will be returned:\ \ let a = [2, 4, 8];\ assert_eq!(a.partition_point(|x| x < &100), a.len());\ let a: [i32; 0] = [];\ assert_eq!(a.partition_point(|x| x < &100), 0);\ \ If you want to insert an item to a sorted vector, while maintaining sort order:\ \ let mut s = vec![0, 1, 1, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55];\ let num = 42;\ let idx = s.partition_point(|&x| x <= num);\ s.insert(idx, num);\ assert_eq!(s, [0, 1, 1, 1, 1, 2, 3, 5, 8, 13, 21, 34, 42, 55]);\ \ 1.94.0 · [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#5260)\ \ #### pub fn [element\_offset](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#method.element_offset)\ (&self, element: [&T](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ ) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option")\ <[usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html)\ \>\ \ Returns the index that an element reference points to.\ \ Returns `None` if `element` does not point to the start of an element within the slice.\ \ This method is useful for extending slice iterators like [`slice::split`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.split "method slice::split")\ .\ \ Note that this uses pointer arithmetic and **does not compare elements**. To find the index of an element via comparison, use [`.iter().position()`](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.position "method core::iter::traits::iterator::Iterator::position")\ instead.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#panics-13)\ Panics\ \ Panics if `T` is zero-sized.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#examples-51)\ Examples\ \ Basic usage:\ \ let nums: &[u32] = &[1, 7, 1, 1];\ let num = &nums[2];\ \ assert_eq!(num, &1);\ assert_eq!(nums.element_offset(num), Some(2));\ \ Returning `None` with an unaligned element:\ \ let arr: &[[u32; 2]] = &[[0, 1], [2, 3]];\ let flat_arr: &[u32] = arr.as_flattened();\ \ let ok_elm: &[u32; 2] = flat_arr[0..2].try_into().unwrap();\ let weird_elm: &[u32; 2] = flat_arr[1..3].try_into().unwrap();\ \ assert_eq!(ok_elm, &[0, 1]);\ assert_eq!(weird_elm, &[1, 2]);\ \ assert_eq!(arr.element_offset(ok_elm), Some(0)); // Points to element 0\ assert_eq!(arr.element_offset(weird_elm), None); // Points between element 0 and 1\ \ [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#5314)\ \ #### pub fn [subslice\_range](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#method.subslice_range)\ (&self, subslice: &[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ ) -> [Option](https://doc.rust-lang.org/nightly/core/option/enum.Option.html "enum core::option::Option")\ <[Range](https://doc.rust-lang.org/nightly/core/ops/range/struct.Range.html "struct core::ops::range::Range")\ <[usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html)\ \>>\ \ 🔬This is a nightly-only experimental API. (`substr_range`)\ \ Returns the range of indices that a subslice points to.\ \ Returns `None` if `subslice` does not point within the slice or if it is not aligned with the elements in the slice.\ \ This method **does not compare elements**. Instead, this method finds the location in the slice that `subslice` was obtained from. To find the index of a subslice via comparison, instead use [`.windows()`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.windows "method slice::windows")\ [`.position()`](https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.position "method core::iter::traits::iterator::Iterator::position")\ .\ \ This method is useful for extending slice iterators like [`slice::split`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.split "method slice::split")\ .\ \ Note that this may return a false positive (either `Some(0..0)` or `Some(self.len()..self.len())`) if `subslice` has a length of zero and points to the beginning or end of another, separate, slice.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#panics-14)\ Panics\ \ Panics if `T` is zero-sized.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#examples-52)\ Examples\ \ Basic usage:\ \ #![feature(substr_range)]\ \ let nums = &[0, 5, 10, 0, 0, 5];\ \ let mut iter = nums\ .split(|t| *t == 0)\ .map(|n| nums.subslice_range(n).unwrap());\ \ assert_eq!(iter.next(), Some(0..0));\ assert_eq!(iter.next(), Some(1..3));\ assert_eq!(iter.next(), Some(4..4));\ assert_eq!(iter.next(), Some(5..6));\ \ [Source](https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#5341)\ \ #### pub fn [as\_slice](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#method.as_slice)\ (&self) -> &[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ \ 🔬This is a nightly-only experimental API. (`str_as_str`)\ \ Returns the same slice `&[T]`.\ \ This method is redundant when used directly on `&[T]`, but it helps dereferencing other “container” types to slices, for example `Box<[T]>` or `Arc<[T]>`.\ \ 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/alloc/slice.rs.html#372-374)\ \ #### pub fn [to\_vec](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#method.to_vec)\ (&self) -> [Vec](https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html "struct alloc::vec::Vec")\ \ \ where T: [Clone](https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html "trait core::clone::Clone")\ ,\ \ Available on **non-`no_global_oom_handling`** only.\ \ Copies `self` into a new `Vec`.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#examples-53)\ Examples\ \ let s = [10, 40, 30];\ let x = s.to_vec();\ // Here, `s` and `x` can be modified independently.\ \ [Source](https://doc.rust-lang.org/nightly/src/alloc/slice.rs.html#396-398)\ \ #### pub fn [to\_vec\_in](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#method.to_vec_in)\ (&self, alloc: A) -> [Vec](https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html "struct alloc::vec::Vec")\ \ \ where A: [Allocator](https://doc.rust-lang.org/nightly/core/alloc/trait.Allocator.html "trait core::alloc::Allocator")\ , T: [Clone](https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html "trait core::clone::Clone")\ ,\ \ 🔬This is a nightly-only experimental API. (`allocator_api`)\ \ Available on **non-`no_global_oom_handling`** only.\ \ Copies `self` into a new `Vec` with an allocator.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#examples-54)\ Examples\ \ #![feature(allocator_api)]\ \ use std::alloc::System;\ \ let s = [10, 40, 30];\ let x = s.to_vec_in(System);\ // Here, `s` and `x` can be modified independently.\ \ 1.40.0 · [Source](https://doc.rust-lang.org/nightly/src/alloc/slice.rs.html#509-511)\ \ #### pub fn [repeat](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#method.repeat)\ (&self, n: [usize](https://doc.rust-lang.org/nightly/std/primitive.usize.html)\ ) -> [Vec](https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html "struct alloc::vec::Vec")\ \ \ where T: [Copy](https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html "trait core::marker::Copy")\ ,\ \ Available on **non-`no_global_oom_handling`** only.\ \ Creates a vector by copying a slice `n` times.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#panics-15)\ Panics\ \ This function will panic if the capacity would overflow.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#examples-55)\ Examples\ \ assert_eq!([1, 2].repeat(3), vec![1, 2, 1, 2, 1, 2]);\ \ A panic upon overflow:\ \ [ⓘ](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html# "This example panics")\ \ // this will panic at runtime\ b"0123456789abcdef".repeat(usize::MAX);\ \ 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/alloc/slice.rs.html#577-579)\ \ #### pub fn [concat](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#method.concat)\ (&self) -> <[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ as [Concat](https://doc.rust-lang.org/nightly/alloc/slice/trait.Concat.html "trait alloc::slice::Concat")\ >::[Output](https://doc.rust-lang.org/nightly/alloc/slice/trait.Concat.html#associatedtype.Output "type alloc::slice::Concat::Output")\ [ⓘ](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#)\ \ where [\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ : [Concat](https://doc.rust-lang.org/nightly/alloc/slice/trait.Concat.html "trait alloc::slice::Concat")\ , Item: ?[Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized")\ ,\ \ Flattens a slice of `T` into a single value `Self::Output`.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#examples-56)\ Examples\ \ assert_eq!(["hello", "world"].concat(), "helloworld");\ assert_eq!([[1, 2], [3, 4]].concat(), [1, 2, 3, 4]);\ \ 1.3.0 · [Source](https://doc.rust-lang.org/nightly/src/alloc/slice.rs.html#596-598)\ \ #### pub fn [join](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#method.join)\ ( &self, sep: Separator, ) -> <[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ as [Join](https://doc.rust-lang.org/nightly/alloc/slice/trait.Join.html "trait alloc::slice::Join")\ >::[Output](https://doc.rust-lang.org/nightly/alloc/slice/trait.Join.html#associatedtype.Output "type alloc::slice::Join::Output")\ [ⓘ](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#)\ \ where [\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ : [Join](https://doc.rust-lang.org/nightly/alloc/slice/trait.Join.html "trait alloc::slice::Join")\ ,\ \ Flattens a slice of `T` into a single value `Self::Output`, placing a given separator between each.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#examples-57)\ Examples\ \ assert_eq!(["hello", "world"].join(" "), "hello world");\ assert_eq!([[1, 2], [3, 4]].join(&0), [1, 2, 0, 3, 4]);\ assert_eq!([[1, 2], [3, 4]].join(&[0, 0][..]), [1, 2, 0, 0, 3, 4]);\ \ 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/alloc/slice.rs.html#616-618)\ \ #### pub fn [connect](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#method.connect)\ ( &self, sep: Separator, ) -> <[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ as [Join](https://doc.rust-lang.org/nightly/alloc/slice/trait.Join.html "trait alloc::slice::Join")\ >::[Output](https://doc.rust-lang.org/nightly/alloc/slice/trait.Join.html#associatedtype.Output "type alloc::slice::Join::Output")\ [ⓘ](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#)\ \ where [\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ : [Join](https://doc.rust-lang.org/nightly/alloc/slice/trait.Join.html "trait alloc::slice::Join")\ ,\ \ 👎Deprecated since 1.3.0:\ \ renamed to join\ \ Flattens a slice of `T` into a single value `Self::Output`, placing a given separator between each.\ \ ##### [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#examples-58)\ Examples\ \ assert_eq!(["hello", "world"].connect(" "), "hello world");\ assert_eq!([[1, 2], [3, 4]].connect(&0), [1, 2, 0, 3, 4]);\ \ Trait Implementations[§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#trait-implementations)\ \ ---------------------------------------------------------------------------------------------------------------------------------\ \ [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/offset.rs.html#252-257)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#impl-AsRef%3C%5BT%5D%3E-for-OffsetBuffer%3CT%3E)\ \ ### impl [AsRef](https://doc.rust-lang.org/nightly/core/convert/trait.AsRef.html "trait core::convert::AsRef")\ <[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ \> for [OffsetBuffer](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html "struct arrow_buffer::buffer::OffsetBuffer")\ \ \ [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/offset.rs.html#254-256)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#method.as_ref)\ \ #### fn [as\_ref](https://doc.rust-lang.org/nightly/core/convert/trait.AsRef.html#tymethod.as_ref)\ (&self) -> &[\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ \ Converts this type into a shared reference of the (usually inferred) input type.\ \ [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/offset.rs.html#58)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#impl-Clone-for-OffsetBuffer%3CO%3E)\ \ ### impl [Clone](https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html "trait core::clone::Clone")\ for [OffsetBuffer](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html "struct arrow_buffer::buffer::OffsetBuffer")\ \ \ [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/offset.rs.html#58)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#method.clone)\ \ #### fn [clone](https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone)\ (&self) -> [OffsetBuffer](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html "struct arrow_buffer::buffer::OffsetBuffer")\ \ \ Returns a duplicate of the value. [Read more](https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone)\ \ 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/clone.rs.html#245-247)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#method.clone_from)\ \ #### fn [clone\_from](https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from)\ (&mut self, source: &Self)\ \ Performs copy-assignment from `source`. [Read more](https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from)\ \ [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/offset.rs.html#58)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#impl-Debug-for-OffsetBuffer%3CO%3E)\ \ ### impl [Debug](https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html "trait core::fmt::Debug")\ for [OffsetBuffer](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html "struct arrow_buffer::buffer::OffsetBuffer")\ \ \ [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/offset.rs.html#58)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#method.fmt)\ \ #### fn [fmt](https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt)\ (&self, f: &mut [Formatter](https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html "struct core::fmt::Formatter")\ <'\_>) -> [Result](https://doc.rust-lang.org/nightly/core/fmt/type.Result.html "type core::fmt::Result")\ \ Formats the value using the given formatter. [Read more](https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt)\ \ [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/offset.rs.html#265-269)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#impl-Default-for-OffsetBuffer%3CO%3E)\ \ ### impl [Default](https://doc.rust-lang.org/nightly/core/default/trait.Default.html "trait core::default::Default")\ for [OffsetBuffer](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html "struct arrow_buffer::buffer::OffsetBuffer")\ \ \ [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/offset.rs.html#266-268)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#method.default)\ \ #### fn [default](https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default)\ () -> Self\ \ Returns the “default value” for a type. [Read more](https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default)\ \ [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/offset.rs.html#243-250)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#impl-Deref-for-OffsetBuffer%3CT%3E)\ \ ### impl [Deref](https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html "trait core::ops::deref::Deref")\ for [OffsetBuffer](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html "struct arrow_buffer::buffer::OffsetBuffer")\ \ \ [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/offset.rs.html#244)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#associatedtype.Target)\ \ #### type [Target](https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html#associatedtype.Target)\ = [\[T\]](https://doc.rust-lang.org/nightly/std/primitive.slice.html)\ \ The resulting type after dereferencing.\ \ [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/offset.rs.html#247-249)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#method.deref)\ \ #### fn [deref](https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html#tymethod.deref)\ (&self) -> &Self::[Target](https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html#associatedtype.Target "type core::ops::deref::Deref::Target")\ \ Dereferences the value.\ \ [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/scalar.rs.html#207-211)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#impl-From%3COffsetBuffer%3CT%3E%3E-for-ScalarBuffer%3CT%3E)\ \ ### impl [From](https://doc.rust-lang.org/nightly/core/convert/trait.From.html "trait core::convert::From")\ <[OffsetBuffer](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html "struct arrow_buffer::buffer::OffsetBuffer")\ > for [ScalarBuffer](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.ScalarBuffer.html "struct arrow_buffer::buffer::ScalarBuffer")\ \ \ [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/scalar.rs.html#208-210)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#method.from-1)\ \ #### fn [from](https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from)\ (value: [OffsetBuffer](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html "struct arrow_buffer::buffer::OffsetBuffer")\ ) -> Self\ \ Converts to this type from the input type.\ \ [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/offset.rs.html#259-263)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#impl-From%3COffsetBufferBuilder%3CO%3E%3E-for-OffsetBuffer%3CO%3E)\ \ ### impl [From](https://doc.rust-lang.org/nightly/core/convert/trait.From.html "trait core::convert::From")\ <[OffsetBufferBuilder](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/builder/struct.OffsetBufferBuilder.html "struct arrow_buffer::builder::OffsetBufferBuilder")\ > for [OffsetBuffer](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html "struct arrow_buffer::buffer::OffsetBuffer")\ \ \ [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/offset.rs.html#260-262)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#method.from)\ \ #### fn [from](https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from)\ (value: [OffsetBufferBuilder](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/builder/struct.OffsetBufferBuilder.html "struct arrow_buffer::builder::OffsetBufferBuilder")\ ) -> Self\ \ Converts to this type from the input type.\ \ [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/offset.rs.html#58)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#impl-PartialEq-for-OffsetBuffer%3CO%3E)\ \ ### impl [PartialEq](https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html "trait core::cmp::PartialEq")\ for [OffsetBuffer](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html "struct arrow_buffer::buffer::OffsetBuffer")\ \ \ [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/offset.rs.html#58)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#method.eq)\ \ #### fn [eq](https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq)\ (&self, other: &[OffsetBuffer](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html "struct arrow_buffer::buffer::OffsetBuffer")\ ) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html)\ \ Tests for `self` and `other` values to be equal, and is used by `==`.\ \ 1.0.0 · [Source](https://doc.rust-lang.org/nightly/src/core/cmp.rs.html#264)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#method.ne)\ \ #### fn [ne](https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne)\ (&self, other: [&Rhs](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ ) -> [bool](https://doc.rust-lang.org/nightly/std/primitive.bool.html)\ \ Tests for `!=`. The default implementation is almost always sufficient, and should not be overridden without very good reason.\ \ [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/offset.rs.html#58)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#impl-Eq-for-OffsetBuffer%3CO%3E)\ \ ### impl [Eq](https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html "trait core::cmp::Eq")\ for [OffsetBuffer](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html "struct arrow_buffer::buffer::OffsetBuffer")\ \ \ [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/buffer/offset.rs.html#58)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#impl-StructuralPartialEq-for-OffsetBuffer%3CO%3E)\ \ ### impl [StructuralPartialEq](https://doc.rust-lang.org/nightly/core/marker/trait.StructuralPartialEq.html "trait core::marker::StructuralPartialEq")\ for [OffsetBuffer](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html "struct arrow_buffer::buffer::OffsetBuffer")\ \ \ Auto Trait Implementations[§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#synthetic-implementations)\ \ ------------------------------------------------------------------------------------------------------------------------------------------\ \ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#impl-Freeze-for-OffsetBuffer%3CO%3E)\ \ ### impl [Freeze](https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html "trait core::marker::Freeze")\ for [OffsetBuffer](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html "struct arrow_buffer::buffer::OffsetBuffer")\ \ \ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#impl-RefUnwindSafe-for-OffsetBuffer%3CO%3E)\ \ ### impl [RefUnwindSafe](https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html "trait core::panic::unwind_safe::RefUnwindSafe")\ for [OffsetBuffer](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html "struct arrow_buffer::buffer::OffsetBuffer")\ \ \ where O: [RefUnwindSafe](https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html "trait core::panic::unwind_safe::RefUnwindSafe")\ ,\ \ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#impl-Send-for-OffsetBuffer%3CO%3E)\ \ ### impl [Send](https://doc.rust-lang.org/nightly/core/marker/trait.Send.html "trait core::marker::Send")\ for [OffsetBuffer](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html "struct arrow_buffer::buffer::OffsetBuffer")\ \ \ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#impl-Sync-for-OffsetBuffer%3CO%3E)\ \ ### impl [Sync](https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html "trait core::marker::Sync")\ for [OffsetBuffer](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html "struct arrow_buffer::buffer::OffsetBuffer")\ \ \ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#impl-Unpin-for-OffsetBuffer%3CO%3E)\ \ ### impl [Unpin](https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html "trait core::marker::Unpin")\ for [OffsetBuffer](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html "struct arrow_buffer::buffer::OffsetBuffer")\ \ \ where O: [Unpin](https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html "trait core::marker::Unpin")\ ,\ \ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#impl-UnsafeUnpin-for-OffsetBuffer%3CO%3E)\ \ ### impl [UnsafeUnpin](https://doc.rust-lang.org/nightly/core/marker/trait.UnsafeUnpin.html "trait core::marker::UnsafeUnpin")\ for [OffsetBuffer](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html "struct arrow_buffer::buffer::OffsetBuffer")\ \ \ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#impl-UnwindSafe-for-OffsetBuffer%3CO%3E)\ \ ### impl [UnwindSafe](https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html "trait core::panic::unwind_safe::UnwindSafe")\ for [OffsetBuffer](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html "struct arrow_buffer::buffer::OffsetBuffer")\ \ \ where O: [UnwindSafe](https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html "trait core::panic::unwind_safe::UnwindSafe")\ ,\ \ Blanket Implementations[§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#blanket-implementations)\ \ -------------------------------------------------------------------------------------------------------------------------------------\ \ [Source](https://doc.rust-lang.org/nightly/src/core/any.rs.html#141)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#impl-Any-for-T)\ \ ### impl [Any](https://doc.rust-lang.org/nightly/core/any/trait.Any.html "trait core::any::Any")\ for T\ \ where T: 'static + ?[Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized")\ ,\ \ [Source](https://doc.rust-lang.org/nightly/src/core/any.rs.html#142)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#method.type_id)\ \ #### fn [type\_id](https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id)\ (&self) -> [TypeId](https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html "struct core::any::TypeId")\ \ Gets the `TypeId` of `self`. [Read more](https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id)\ \ [Source](https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#212)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#impl-Borrow%3CT%3E-for-T)\ \ ### impl [Borrow](https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html "trait core::borrow::Borrow")\ for T\ \ where T: ?[Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized")\ ,\ \ [Source](https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#214)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#method.borrow)\ \ #### fn [borrow](https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow)\ (&self) -> [&T](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ \ Immutably borrows from an owned value. [Read more](https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow)\ \ [Source](https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#221)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#impl-BorrowMut%3CT%3E-for-T)\ \ ### impl [BorrowMut](https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html "trait core::borrow::BorrowMut")\ for T\ \ where T: ?[Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized")\ ,\ \ [Source](https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#222)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#method.borrow_mut)\ \ #### fn [borrow\_mut](https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut)\ (&mut self) -> [&mut T](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ \ Mutably borrows from an owned value. [Read more](https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut)\ \ [Source](https://doc.rust-lang.org/nightly/src/core/clone.rs.html#547)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#impl-CloneToUninit-for-T)\ \ ### impl [CloneToUninit](https://doc.rust-lang.org/nightly/core/clone/trait.CloneToUninit.html "trait core::clone::CloneToUninit")\ for T\ \ where T: [Clone](https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html "trait core::clone::Clone")\ ,\ \ [Source](https://doc.rust-lang.org/nightly/src/core/clone.rs.html#549)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#method.clone_to_uninit)\ \ #### unsafe fn [clone\_to\_uninit](https://doc.rust-lang.org/nightly/core/clone/trait.CloneToUninit.html#tymethod.clone_to_uninit)\ (&self, dest: [\*mut](https://doc.rust-lang.org/nightly/std/primitive.pointer.html)\ [u8](https://doc.rust-lang.org/nightly/std/primitive.u8.html)\ )\ \ 🔬This is a nightly-only experimental API. (`clone_to_uninit`)\ \ Performs copy-assignment from `self` to `dest`. [Read more](https://doc.rust-lang.org/nightly/core/clone/trait.CloneToUninit.html#tymethod.clone_to_uninit)\ \ [Source](https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#785)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#impl-From%3CT%3E-for-T)\ \ ### impl [From](https://doc.rust-lang.org/nightly/core/convert/trait.From.html "trait core::convert::From")\ for T\ \ [Source](https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#788)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#method.from-2)\ \ #### fn [from](https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from)\ (t: T) -> T\ \ Returns the argument unchanged.\ \ [Source](https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#767-769)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#impl-Into%3CU%3E-for-T)\ \ ### impl [Into](https://doc.rust-lang.org/nightly/core/convert/trait.Into.html "trait core::convert::Into")\ for T\ \ where U: [From](https://doc.rust-lang.org/nightly/core/convert/trait.From.html "trait core::convert::From")\ ,\ \ [Source](https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#777)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#method.into)\ \ #### fn [into](https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into)\ (self) -> U\ \ Calls `U::from(self)`.\ \ That is, this conversion is whatever the implementation of `[From](https://doc.rust-lang.org/nightly/core/convert/trait.From.html "trait core::convert::From") for U` chooses to do.\ \ [Source](https://doc.rust-lang.org/nightly/src/core/ops/deref.rs.html#378-380)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#impl-Receiver-for-P)\ \ ### impl [Receiver](https://doc.rust-lang.org/nightly/core/ops/deref/trait.Receiver.html "trait core::ops::deref::Receiver")\ for P\ \ where P: [Deref](https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html "trait core::ops::deref::Deref")\ + ?[Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized")\ , T: ?[Sized](https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html "trait core::marker::Sized")\ ,\ \ [Source](https://doc.rust-lang.org/nightly/src/core/ops/deref.rs.html#382)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#associatedtype.Target-1)\ \ #### type [Target](https://doc.rust-lang.org/nightly/core/ops/deref/trait.Receiver.html#associatedtype.Target)\ = T\ \ 🔬This is a nightly-only experimental API. (`arbitrary_self_types`)\ \ The target type on which the method may be called.\ \ [Source](https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#72-74)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#impl-ToOwned-for-T)\ \ ### impl [ToOwned](https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html "trait alloc::borrow::ToOwned")\ for T\ \ where T: [Clone](https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html "trait core::clone::Clone")\ ,\ \ [Source](https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#76)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#associatedtype.Owned)\ \ #### type [Owned](https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned)\ = T\ \ The resulting type after obtaining ownership.\ \ [Source](https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#77)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#method.to_owned)\ \ #### fn [to\_owned](https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned)\ (&self) -> T\ \ Creates owned data from borrowed data, usually by cloning. [Read more](https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned)\ \ [Source](https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#81)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#method.clone_into)\ \ #### fn [clone\_into](https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into)\ (&self, target: [&mut T](https://doc.rust-lang.org/nightly/std/primitive.reference.html)\ )\ \ Uses borrowed data to replace owned data, usually by cloning. [Read more](https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into)\ \ [Source](https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#827-829)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#impl-TryFrom%3CU%3E-for-T)\ \ ### impl [TryFrom](https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html "trait core::convert::TryFrom")\ for T\ \ where U: [Into](https://doc.rust-lang.org/nightly/core/convert/trait.Into.html "trait core::convert::Into")\ ,\ \ [Source](https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#831)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#associatedtype.Error-1)\ \ #### type [Error](https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error)\ = [Infallible](https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html "enum core::convert::Infallible")\ \ The type returned in the event of a conversion error.\ \ [Source](https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#834)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#method.try_from)\ \ #### fn [try\_from](https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from)\ (value: U) -> [Result](https://doc.rust-lang.org/nightly/core/result/enum.Result.html "enum core::result::Result")\ >::[Error](https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error "type core::convert::TryFrom::Error")\ \>\ \ Performs the conversion.\ \ [Source](https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#811-813)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#impl-TryInto%3CU%3E-for-T)\ \ ### impl [TryInto](https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html "trait core::convert::TryInto")\ for T\ \ where U: [TryFrom](https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html "trait core::convert::TryFrom")\ ,\ \ [Source](https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#815)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#associatedtype.Error)\ \ #### type [Error](https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error)\ = >::[Error](https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error "type core::convert::TryFrom::Error")\ \ The type returned in the event of a conversion error.\ \ [Source](https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#818)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#method.try_into)\ \ #### fn [try\_into](https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into)\ (self) -> [Result](https://doc.rust-lang.org/nightly/core/result/enum.Result.html "enum core::result::Result")\ >::[Error](https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error "type core::convert::TryFrom::Error")\ \>\ \ Performs the conversion.\ \ [Source](https://docs.rs/arrow-buffer/58.1.0/src/arrow_buffer/alloc/mod.rs.html#33)\ [§](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/buffer/struct.OffsetBuffer.html#impl-Allocation-for-T)\ \ ### impl [Allocation](https://docs.rs/arrow-buffer/58.1.0/arrow_buffer/alloc/trait.Allocation.html "trait arrow_buffer::alloc::Allocation")\ for T\ \ where T: [RefUnwindSafe](https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html "trait core::panic::unwind_safe::RefUnwindSafe")\ + [Send](https://doc.rust-lang.org/nightly/core/marker/trait.Send.html "trait core::marker::Send")\ + [Sync](https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html "trait core::marker::Sync")\ , --- # a2a_protocol_client - Rust [Docs.rs](https://docs.rs/) * [a2a-protocol-client-0.4.0](https://docs.rs/a2a-protocol-client/0.4.0/a2a_protocol_client/# "A2A protocol v1.0 — HTTP client (hyper-backed)") * a2a-protocol-client 0.4.0 * [Docs.rs crate page](https://docs.rs/crate/a2a-protocol-client/0.4.0 "See a2a-protocol-client in docs.rs") * [Apache-2.0](https://spdx.org/licenses/Apache-2.0) * Links * [Homepage](https://github.com/tomtom215/a2a-rust) * [Repository](https://github.com/tomtom215/a2a-rust) * [crates.io](https://crates.io/crates/a2a-protocol-client "See a2a-protocol-client in crates.io") * [Source](https://docs.rs/crate/a2a-protocol-client/0.4.0/source/ "Browse source of a2a-protocol-client-0.4.0") * Owners * [tomtom215](https://crates.io/users/tomtom215) * Dependencies * * [a2a-protocol-types ^0.4.0 _normal_](https://docs.rs/a2a-protocol-types/^0.4.0/) * [futures-util >=0.3.30, <0.4 _normal_ _optional_](https://docs.rs/futures-util/%3E=0.3.30,%20%3C0.4/) * [http-body-util >=0.1, <0.2 _normal_](https://docs.rs/http-body-util/%3E=0.1,%20%3C0.2/) * [hyper >=1.4, <2 _normal_](https://docs.rs/hyper/%3E=1.4,%20%3C2/) * [hyper-rustls >=0.27, <0.28 _normal_ _optional_](https://docs.rs/hyper-rustls/%3E=0.27,%20%3C0.28/) * [hyper-util >=0.1.6, <0.2 _normal_](https://docs.rs/hyper-util/%3E=0.1.6,%20%3C0.2/) * [prost ^0.13 _normal_ _optional_](https://docs.rs/prost/^0.13/) * [rustls >=0.23, <0.24 _normal_ _optional_](https://docs.rs/rustls/%3E=0.23,%20%3C0.24/) * [rustls-pki-types >=1.7, <2 _normal_ _optional_](https://docs.rs/rustls-pki-types/%3E=1.7,%20%3C2/) * [serde\_json >=1.0.115, <2 _normal_](https://docs.rs/serde_json/%3E=1.0.115,%20%3C2/) * [tokio >=1.38, <2 _normal_](https://docs.rs/tokio/%3E=1.38,%20%3C2/) * [tokio-stream ^0.1 _normal_ _optional_](https://docs.rs/tokio-stream/^0.1/) * [tokio-tungstenite >=0.24, <0.25 _normal_ _optional_](https://docs.rs/tokio-tungstenite/%3E=0.24,%20%3C0.25/) * [tonic ^0.12 _normal_ _optional_](https://docs.rs/tonic/^0.12/) * [tracing >=0.1.40, <0.2 _normal_ _optional_](https://docs.rs/tracing/%3E=0.1.40,%20%3C0.2/) * [uuid >=1.8, <2 _normal_](https://docs.rs/uuid/%3E=1.8,%20%3C2/) * [webpki-roots >=1.0, <2 _normal_ _optional_](https://docs.rs/webpki-roots/%3E=1.0,%20%3C2/) * [a2a-protocol-server ^0.4.0 _dev_](https://docs.rs/a2a-protocol-server/^0.4.0/) * [a2a-protocol-types ^0.4.0 _dev_](https://docs.rs/a2a-protocol-types/^0.4.0/) * [bytes ^1 _dev_](https://docs.rs/bytes/^1/) * [criterion ^0.5 _dev_](https://docs.rs/criterion/^0.5/) * [futures-util >=0.3.30, <0.4 _dev_](https://docs.rs/futures-util/%3E=0.3.30,%20%3C0.4/) * [http-body-util >=0.1, <0.2 _dev_](https://docs.rs/http-body-util/%3E=0.1,%20%3C0.2/) * [hyper >=1.4, <2 _dev_](https://docs.rs/hyper/%3E=1.4,%20%3C2/) * [hyper-util >=0.1.6, <0.2 _dev_](https://docs.rs/hyper-util/%3E=0.1.6,%20%3C0.2/) * [rcgen ^0.13 _dev_](https://docs.rs/rcgen/^0.13/) * [rustls >=0.23, <0.24 _dev_](https://docs.rs/rustls/%3E=0.23,%20%3C0.24/) * [rustls-pki-types >=1.7, <2 _dev_](https://docs.rs/rustls-pki-types/%3E=1.7,%20%3C2/) * [tokio >=1.38, <2 _dev_](https://docs.rs/tokio/%3E=1.38,%20%3C2/) * [tokio-rustls >=0.26, <0.27 _dev_](https://docs.rs/tokio-rustls/%3E=0.26,%20%3C0.27/) * [tonic-build ^0.12 _build_ _optional_](https://docs.rs/tonic-build/^0.12/) * Versions * [**100%** of the crate is documented](https://docs.rs/crate/a2a-protocol-client/0.4.0) * [Platform](https://docs.rs/a2a-protocol-client/0.4.0/a2a_protocol_client/#) * [x86\_64-unknown-linux-gnu](https://docs.rs/crate/a2a-protocol-client/0.4.0/target-redirect/a2a_protocol_client/) * [Feature flags](https://docs.rs/crate/a2a-protocol-client/0.4.0/features "Browse available feature flags of a2a-protocol-client-0.4.0") * [docs.rs](https://docs.rs/a2a-protocol-client/0.4.0/a2a_protocol_client/#) * [About docs.rs](https://docs.rs/about) * [Badges](https://docs.rs/about/badges) * [Builds](https://docs.rs/about/builds) * [Metadata](https://docs.rs/about/metadata) * [Shorthand URLs](https://docs.rs/about/redirections) * [Download](https://docs.rs/about/download) * [Rustdoc JSON](https://docs.rs/about/rustdoc-json) * [Build queue](https://docs.rs/releases/queue) * [Privacy policy](https://foundation.rust-lang.org/policies/privacy-policy/#docs.rs) * [Rust](https://docs.rs/a2a-protocol-client/0.4.0/a2a_protocol_client/#) * [Rust website](https://www.rust-lang.org/) * [The Book](https://doc.rust-lang.org/book/) * [Standard Library API Reference](https://doc.rust-lang.org/std/) * [Rust by Example](https://doc.rust-lang.org/rust-by-example/) * [The Cargo Guide](https://doc.rust-lang.org/cargo/guide/) * [Clippy Documentation](https://doc.rust-lang.org/nightly/clippy) [Skip to main content](https://docs.rs/a2a-protocol-client/0.4.0/a2a_protocol_client/#main-content) [Crate a2a\_protocol\_client](https://docs.rs/a2a-protocol-client/0.4.0/a2a_protocol_client/#) ----------------------------------------------------------------------------------------------- Crate a2a\_protocol\_client Copy item path ========================================== [Source](https://docs.rs/a2a-protocol-client/0.4.0/src/a2a_protocol_client/lib.rs.html#6-140) Expand description A2A protocol v1.0 — HTTP client (hyper-backed). This crate provides [`A2aClient`](https://docs.rs/a2a-protocol-client/0.4.0/a2a_protocol_client/client/struct.A2aClient.html "struct a2a_protocol_client::client::A2aClient") , a full-featured client for communicating with any A2A-compliant agent over HTTP. [§](https://docs.rs/a2a-protocol-client/0.4.0/a2a_protocol_client/#quick-start) Quick start ------------------------------------------------------------------------------------------- use a2a_protocol_client::ClientBuilder; use a2a_protocol_types::{MessageSendParams, Message, MessageRole, Part, MessageId}; let client = ClientBuilder::new("http://localhost:8080").build()?; let params = MessageSendParams { tenant: None, message: Message { id: MessageId::new("msg-1"), role: MessageRole::User, parts: vec![Part::text("Hello, agent!")], task_id: None, context_id: None, reference_task_ids: None, extensions: None, metadata: None, }, configuration: None, metadata: None, }; let response = client.send_message(params).await?; println!("{response:?}"); [§](https://docs.rs/a2a-protocol-client/0.4.0/a2a_protocol_client/#streaming) Streaming --------------------------------------------------------------------------------------- let mut stream = client.stream_message(params).await?; while let Some(event) = stream.next().await { match event? { StreamResponse::StatusUpdate(ev) => { println!("State: {:?}", ev.status.state); } _ => {} } } [§](https://docs.rs/a2a-protocol-client/0.4.0/a2a_protocol_client/#authentication) Authentication ------------------------------------------------------------------------------------------------- use a2a_protocol_client::{ClientBuilder, CredentialsStore}; use a2a_protocol_client::auth::{AuthInterceptor, InMemoryCredentialsStore, SessionId}; use std::sync::Arc; let store = Arc::new(InMemoryCredentialsStore::new()); let session = SessionId::new("session-1"); store.set(session.clone(), "bearer", "my-token".into()); let client = ClientBuilder::new("http://localhost:8080") .with_interceptor(AuthInterceptor::new(store, session)) .build()?; [§](https://docs.rs/a2a-protocol-client/0.4.0/a2a_protocol_client/#agent-card-discovery) Agent card discovery ------------------------------------------------------------------------------------------------------------- use a2a_protocol_client::discovery::resolve_agent_card; use a2a_protocol_client::ClientBuilder; let card = resolve_agent_card("http://localhost:8080").await?; let client = ClientBuilder::from_card(&card)?.build()?; Re-exports[§](https://docs.rs/a2a-protocol-client/0.4.0/a2a_protocol_client/#reexports) ---------------------------------------------------------------------------------------- `pub use auth::[AuthInterceptor](https://docs.rs/a2a-protocol-client/0.4.0/a2a_protocol_client/auth/struct.AuthInterceptor.html "struct a2a_protocol_client::auth::AuthInterceptor") ;` `pub use auth::[CredentialsStore](https://docs.rs/a2a-protocol-client/0.4.0/a2a_protocol_client/auth/trait.CredentialsStore.html "trait a2a_protocol_client::auth::CredentialsStore") ;` `pub use auth::[InMemoryCredentialsStore](https://docs.rs/a2a-protocol-client/0.4.0/a2a_protocol_client/auth/struct.InMemoryCredentialsStore.html "struct a2a_protocol_client::auth::InMemoryCredentialsStore") ;` `pub use auth::[SessionId](https://docs.rs/a2a-protocol-client/0.4.0/a2a_protocol_client/auth/struct.SessionId.html "struct a2a_protocol_client::auth::SessionId") ;` `pub use builder::[ClientBuilder](https://docs.rs/a2a-protocol-client/0.4.0/a2a_protocol_client/builder/struct.ClientBuilder.html "struct a2a_protocol_client::builder::ClientBuilder") ;` `pub use client::[A2aClient](https://docs.rs/a2a-protocol-client/0.4.0/a2a_protocol_client/client/struct.A2aClient.html "struct a2a_protocol_client::client::A2aClient") ;` `pub use config::[ClientConfig](https://docs.rs/a2a-protocol-client/0.4.0/a2a_protocol_client/config/struct.ClientConfig.html "struct a2a_protocol_client::config::ClientConfig") ;` `pub use discovery::[resolve_agent_card](https://docs.rs/a2a-protocol-client/0.4.0/a2a_protocol_client/discovery/fn.resolve_agent_card.html "fn a2a_protocol_client::discovery::resolve_agent_card") ;` `pub use error::[ClientError](https://docs.rs/a2a-protocol-client/0.4.0/a2a_protocol_client/error/enum.ClientError.html "enum a2a_protocol_client::error::ClientError") ;` `pub use error::[ClientResult](https://docs.rs/a2a-protocol-client/0.4.0/a2a_protocol_client/error/type.ClientResult.html "type a2a_protocol_client::error::ClientResult") ;` `pub use interceptor::[CallInterceptor](https://docs.rs/a2a-protocol-client/0.4.0/a2a_protocol_client/interceptor/trait.CallInterceptor.html "trait a2a_protocol_client::interceptor::CallInterceptor") ;` `pub use interceptor::[ClientRequest](https://docs.rs/a2a-protocol-client/0.4.0/a2a_protocol_client/interceptor/struct.ClientRequest.html "struct a2a_protocol_client::interceptor::ClientRequest") ;` `pub use interceptor::[ClientResponse](https://docs.rs/a2a-protocol-client/0.4.0/a2a_protocol_client/interceptor/struct.ClientResponse.html "struct a2a_protocol_client::interceptor::ClientResponse") ;` `pub use interceptor::[InterceptorChain](https://docs.rs/a2a-protocol-client/0.4.0/a2a_protocol_client/interceptor/struct.InterceptorChain.html "struct a2a_protocol_client::interceptor::InterceptorChain") ;` `pub use retry::[RetryPolicy](https://docs.rs/a2a-protocol-client/0.4.0/a2a_protocol_client/retry/struct.RetryPolicy.html "struct a2a_protocol_client::retry::RetryPolicy") ;` `pub use streaming::[EventStream](https://docs.rs/a2a-protocol-client/0.4.0/a2a_protocol_client/streaming/event_stream/struct.EventStream.html "struct a2a_protocol_client::streaming::event_stream::EventStream") ;` `pub use transport::[GrpcTransport](https://docs.rs/a2a-protocol-client/0.4.0/a2a_protocol_client/transport/grpc/struct.GrpcTransport.html "struct a2a_protocol_client::transport::grpc::GrpcTransport") ;` `pub use transport::[WebSocketTransport](https://docs.rs/a2a-protocol-client/0.4.0/a2a_protocol_client/transport/websocket/struct.WebSocketTransport.html "struct a2a_protocol_client::transport::websocket::WebSocketTransport") ;` `pub use transport::[JsonRpcTransport](https://docs.rs/a2a-protocol-client/0.4.0/a2a_protocol_client/transport/jsonrpc/struct.JsonRpcTransport.html "struct a2a_protocol_client::transport::jsonrpc::JsonRpcTransport") ;` `pub use transport::[RestTransport](https://docs.rs/a2a-protocol-client/0.4.0/a2a_protocol_client/transport/rest/struct.RestTransport.html "struct a2a_protocol_client::transport::rest::RestTransport") ;` `pub use transport::[Transport](https://docs.rs/a2a-protocol-client/0.4.0/a2a_protocol_client/transport/trait.Transport.html "trait a2a_protocol_client::transport::Transport") ;` Modules[§](https://docs.rs/a2a-protocol-client/0.4.0/a2a_protocol_client/#modules) ----------------------------------------------------------------------------------- [auth](https://docs.rs/a2a-protocol-client/0.4.0/a2a_protocol_client/auth/index.html "mod a2a_protocol_client::auth") Authentication interceptor and credential storage. [builder](https://docs.rs/a2a-protocol-client/0.4.0/a2a_protocol_client/builder/index.html "mod a2a_protocol_client::builder") Fluent builder for [`A2aClient`](https://docs.rs/a2a-protocol-client/0.4.0/a2a_protocol_client/client/struct.A2aClient.html "struct a2a_protocol_client::client::A2aClient") . [client](https://docs.rs/a2a-protocol-client/0.4.0/a2a_protocol_client/client/index.html "mod a2a_protocol_client::client") Core [`A2aClient`](https://docs.rs/a2a-protocol-client/0.4.0/a2a_protocol_client/client/struct.A2aClient.html "struct a2a_protocol_client::client::A2aClient") struct and constructors. [config](https://docs.rs/a2a-protocol-client/0.4.0/a2a_protocol_client/config/index.html "mod a2a_protocol_client::config") Client configuration types. [discovery](https://docs.rs/a2a-protocol-client/0.4.0/a2a_protocol_client/discovery/index.html "mod a2a_protocol_client::discovery") Agent card discovery with HTTP caching. [error](https://docs.rs/a2a-protocol-client/0.4.0/a2a_protocol_client/error/index.html "mod a2a_protocol_client::error") Client error types. [interceptor](https://docs.rs/a2a-protocol-client/0.4.0/a2a_protocol_client/interceptor/index.html "mod a2a_protocol_client::interceptor") Request/response interceptor infrastructure. [methods](https://docs.rs/a2a-protocol-client/0.4.0/a2a_protocol_client/methods/index.html "mod a2a_protocol_client::methods") Per-method client helpers. [retry](https://docs.rs/a2a-protocol-client/0.4.0/a2a_protocol_client/retry/index.html "mod a2a_protocol_client::retry") Configurable retry policy for transient client errors. [streaming](https://docs.rs/a2a-protocol-client/0.4.0/a2a_protocol_client/streaming/index.html "mod a2a_protocol_client::streaming") SSE client-side streaming support. [tls](https://docs.rs/a2a-protocol-client/0.4.0/a2a_protocol_client/tls/index.html "mod a2a_protocol_client::tls") TLS connector via rustls. [transport](https://docs.rs/a2a-protocol-client/0.4.0/a2a_protocol_client/transport/index.html "mod a2a_protocol_client::transport") Transport abstraction for A2A client requests. ---