This is an automated email from the ASF dual-hosted git repository. kszucs pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/arrow.git
The following commit(s) were added to refs/heads/master by this push: new 1c8f8fc ARROW-3796: [Rust] Add Example for PrimitiveArrayBuilder 1c8f8fc is described below commit 1c8f8fc8e3e4f2267f1e88707d0fc370ea94cf72 Author: Paddy Horan <paddyho...@hotmail.com> AuthorDate: Thu Nov 15 12:46:52 2018 +0100 ARROW-3796: [Rust] Add Example for PrimitiveArrayBuilder I will follow up with examples of `ListArrayBuilder` and `BinaryBuilder` when merged. The info in the readme keeps going out of date so it's probably better to build up the examples (which are tested by CI) and re-direct new users there. Author: Paddy Horan <paddyho...@hotmail.com> Closes #2969 from paddyhoran/ARROW-3796 and squashes the following commits: 46699f97 <Paddy Horan> Fixed lint and comment 26cec305 <Paddy Horan> Updated CI to run new example 72d6b3ee <Paddy Horan> Updated readme. 2a0fe8ae <Paddy Horan> Added example --- ci/rust-build-main.bat | 1 + ci/travis_script_rust.sh | 1 + rust/README.md | 21 ++++++--------------- rust/examples/builders.rs | 43 +++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 51 insertions(+), 15 deletions(-) diff --git a/ci/rust-build-main.bat b/ci/rust-build-main.bat index 7b50d9f..ea040e0 100644 --- a/ci/rust-build-main.bat +++ b/ci/rust-build-main.bat @@ -53,6 +53,7 @@ cargo test --target %TARGET% --release @echo @echo Run example (release) @echo --------------------- +cargo run --example builders --target %TARGET% --release cargo run --example dynamic_types --target %TARGET% --release popd diff --git a/ci/travis_script_rust.sh b/ci/travis_script_rust.sh index 1cd179f..d0889e1 100755 --- a/ci/travis_script_rust.sh +++ b/ci/travis_script_rust.sh @@ -36,6 +36,7 @@ cargo rustc -- -D warnings cargo build cargo test cargo bench +cargo run --example builders cargo run --example dynamic_types popd diff --git a/rust/README.md b/rust/README.md index 5f545aa..131c7d9 100644 --- a/rust/README.md +++ b/rust/README.md @@ -37,25 +37,16 @@ let array = PrimitiveArray::from(vec![1, 2, 3, 4, 5]); println!("array contents: {:?}", array.iter().collect::<Vec<i32>>()); ``` -## Creating an Array from a Builder - -```rust -let mut builder: Builder<i32> = Builder::new(); -for i in 0..10 { - builder.push(i); -} -let buffer = builder.finish(); -let array = PrimitiveArray::from(buffer); - -println!("array contents: {:?}", array.iter().collect::<Vec<i32>>()); -``` - ## Run Examples +The examples folder shows how to construct some different types of Arrow +arrays, including dynamic arrays created at runtime. + Examples can be run using the `cargo run --example` command. For example: ```bash -cargo run --example array_from_builder +cargo run --example builders +cargo run --example dynamic_types ``` ## Run Tests @@ -74,7 +65,7 @@ instructions](https://doc.rust-lang.org/cargo/reference/publishing.html) to create an account and login to crates.io before asking to be added as an owner of the [arrow crate](https://crates.io/crates/arrow). -Checkout the tag for the version to be releases. For example: +Checkout the tag for the version to be released. For example: ```bash git checkout apache-arrow-0.11.0 diff --git a/rust/examples/builders.rs b/rust/examples/builders.rs new file mode 100644 index 0000000..d88370b --- /dev/null +++ b/rust/examples/builders.rs @@ -0,0 +1,43 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "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. + +///! Many builders are available to easily create different types of arrow arrays +extern crate arrow; + +use arrow::builder::*; + +fn main() { + // Primitive Arrays + // + // Primitive arrays are arrays of fixed-width primitive types (bool, u8, u16, u32, u64, i8, i16, + // i32, i64, f32, f64) + + // Create a new builder with a capacity of 100 + let mut primitive_array_builder = PrimitiveArrayBuilder::<i32>::new(100); + + // Push an individual primitive value + primitive_array_builder.push(55).unwrap(); + + // Push a null value + primitive_array_builder.push_null().unwrap(); + + // Push a slice of primitive values + primitive_array_builder.push_slice(&[39, 89, 12]).unwrap(); + + // Build the `PrimitiveArray` + let _primitive_array = primitive_array_builder.finish(); +}