pub struct Map<K, V, const SORTED: bool = false>(/* private fields */);
Expand description
Wrapper denoting an Arrow MapArray
column with entries (K, V)
.
- Keys are non-nullable by Arrow spec.
- Values are non-nullable for
Map<K, V, SORTED>
and nullable forMap<K, Option<V>, SORTED>
. - Column-level nullability is expressed with
Option<Map<...>>
.
Implementations§
Source§impl<K, V, const SORTED: bool> Map<K, V, SORTED>
impl<K, V, const SORTED: bool> Map<K, V, SORTED>
Sourcepub fn new(entries: Vec<(K, V)>) -> Self
pub fn new(entries: Vec<(K, V)>) -> Self
Construct a new map from a vector of (key, value)
pairs.
Examples found in repository?
examples/11_map.rs (line 16)
11fn main() {
12 // Standalone Map column
13 let mut b = <Map<String, i32> as ArrowBinding>::new_builder(0);
14 <Map<String, i32> as ArrowBinding>::append_value(
15 &mut b,
16 &Map::new(vec![("a".to_string(), 1), ("b".to_string(), 2)]),
17 );
18 <Map<String, i32> as ArrowBinding>::append_null(&mut b);
19 let a = <Map<String, i32> as ArrowBinding>::finish(b);
20 println!(
21 "standalone map rows={}, entries={}",
22 a.len(),
23 a.entries().len()
24 );
25
26 // Sorted keys example (keys_sorted = true)
27 let dt_sorted = <Map<String, i32, true> as ArrowBinding>::data_type();
28 println!("sorted map datatype = {dt_sorted:?}");
29
30 // OrderedMap using BTreeMap row layout
31 use std::collections::BTreeMap;
32 let mut ord = BTreeMap::new();
33 ord.insert("b".to_string(), 2);
34 ord.insert("a".to_string(), 1);
35 let mut ob = <OrderedMap<String, i32> as ArrowBinding>::new_builder(0);
36 <OrderedMap<String, i32> as ArrowBinding>::append_value(&mut ob, &OrderedMap::new(ord));
37 let oa = <OrderedMap<String, i32> as ArrowBinding>::finish(ob);
38 println!("ordered map entries={}", oa.entries().len());
39
40 // In a Record
41 let rows = vec![
42 Row {
43 id: 1,
44 tags: Map::new(vec![("x".to_string(), 10)]),
45 notes: Some(Map::new(vec![
46 ("hello".to_string(), Some("world".to_string())),
47 ("empty".to_string(), None),
48 ])),
49 },
50 Row {
51 id: 2,
52 tags: Map::new(vec![]),
53 notes: None,
54 },
55 ];
56 let mut rb = <Row as typed_arrow::schema::BuildRows>::new_builders(rows.len());
57 rb.append_rows(rows);
58 let arrays = rb.finish();
59 let batch = arrays.into_record_batch();
60 println!(
61 "record rows={}, fields={}",
62 batch.num_rows(),
63 batch.schema().fields().len()
64 );
65}
Sourcepub fn into_inner(self) -> Vec<(K, V)>
pub fn into_inner(self) -> Vec<(K, V)>
Consume and return the underlying (key, value)
entries.
Trait Implementations§
Source§impl<K, V, const SORTED: bool> ArrowBinding for Map<K, Option<V>, SORTED>where
K: ArrowBinding,
V: ArrowBinding,
<K as ArrowBinding>::Builder: ArrayBuilder,
<V as ArrowBinding>::Builder: ArrayBuilder,
impl<K, V, const SORTED: bool> ArrowBinding for Map<K, Option<V>, SORTED>where
K: ArrowBinding,
V: ArrowBinding,
<K as ArrowBinding>::Builder: ArrayBuilder,
<V as ArrowBinding>::Builder: ArrayBuilder,
Source§type Builder = MapBuilder<<K as ArrowBinding>::Builder, <V as ArrowBinding>::Builder>
type Builder = MapBuilder<<K as ArrowBinding>::Builder, <V as ArrowBinding>::Builder>
Concrete Arrow builder type used for this Rust type.
Source§fn new_builder(_capacity: usize) -> Self::Builder
fn new_builder(_capacity: usize) -> Self::Builder
Create a new builder with an optional capacity hint.
Source§fn append_value(b: &mut Self::Builder, v: &Self)
fn append_value(b: &mut Self::Builder, v: &Self)
Append a non-null value to the builder.
Source§fn append_null(b: &mut Self::Builder)
fn append_null(b: &mut Self::Builder)
Append a null to the builder.
Source§impl<K, V, const SORTED: bool> ArrowBinding for Map<K, V, SORTED>where
K: ArrowBinding,
V: ArrowBinding,
<K as ArrowBinding>::Builder: ArrayBuilder,
<V as ArrowBinding>::Builder: ArrayBuilder,
impl<K, V, const SORTED: bool> ArrowBinding for Map<K, V, SORTED>where
K: ArrowBinding,
V: ArrowBinding,
<K as ArrowBinding>::Builder: ArrayBuilder,
<V as ArrowBinding>::Builder: ArrayBuilder,
Source§type Builder = MapBuilder<<K as ArrowBinding>::Builder, <V as ArrowBinding>::Builder>
type Builder = MapBuilder<<K as ArrowBinding>::Builder, <V as ArrowBinding>::Builder>
Concrete Arrow builder type used for this Rust type.
Source§fn new_builder(_capacity: usize) -> Self::Builder
fn new_builder(_capacity: usize) -> Self::Builder
Create a new builder with an optional capacity hint.
Source§fn append_value(b: &mut Self::Builder, v: &Self)
fn append_value(b: &mut Self::Builder, v: &Self)
Append a non-null value to the builder.
Source§fn append_null(b: &mut Self::Builder)
fn append_null(b: &mut Self::Builder)
Append a null to the builder.
Auto Trait Implementations§
impl<K, V, const SORTED: bool> Freeze for Map<K, V, SORTED>
impl<K, V, const SORTED: bool> RefUnwindSafe for Map<K, V, SORTED>where
K: RefUnwindSafe,
V: RefUnwindSafe,
impl<K, V, const SORTED: bool> Send for Map<K, V, SORTED>
impl<K, V, const SORTED: bool> Sync for Map<K, V, SORTED>
impl<K, V, const SORTED: bool> Unpin for Map<K, V, SORTED>
impl<K, V, const SORTED: bool> UnwindSafe for Map<K, V, SORTED>where
K: UnwindSafe,
V: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more