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 18)
13fn main() {
14 // Standalone Map column
15 let mut b = <Map<String, i32> as ArrowBinding>::new_builder(0);
16 <Map<String, i32> as ArrowBinding>::append_value(
17 &mut b,
18 &Map::new(vec![("a".to_string(), 1), ("b".to_string(), 2)]),
19 );
20 <Map<String, i32> as ArrowBinding>::append_null(&mut b);
21 let a = <Map<String, i32> as ArrowBinding>::finish(b);
22 println!(
23 "standalone map rows={}, entries={}",
24 a.len(),
25 a.entries().len()
26 );
27
28 // Sorted keys example (keys_sorted = true)
29 let dt_sorted = <Map<String, i32, true> as ArrowBinding>::data_type();
30 println!("sorted map datatype = {dt_sorted:?}");
31
32 // OrderedMap using BTreeMap row layout
33 let mut ord = BTreeMap::new();
34 ord.insert("b".to_string(), 2);
35 ord.insert("a".to_string(), 1);
36 let mut ob = <OrderedMap<String, i32> as ArrowBinding>::new_builder(0);
37 <OrderedMap<String, i32> as ArrowBinding>::append_value(&mut ob, &OrderedMap::new(ord));
38 let oa = <OrderedMap<String, i32> as ArrowBinding>::finish(ob);
39 println!("ordered map entries={}", oa.entries().len());
40
41 // In a Record
42 let rows = vec![
43 Row {
44 id: 1,
45 tags: Map::new(vec![("x".to_string(), 10)]),
46 notes: Some(Map::new(vec![
47 ("hello".to_string(), Some("world".to_string())),
48 ("empty".to_string(), None),
49 ])),
50 },
51 Row {
52 id: 2,
53 tags: Map::new(vec![]),
54 notes: None,
55 },
56 ];
57 let mut rb = <Row as typed_arrow::schema::BuildRows>::new_builders(rows.len());
58 rb.append_rows(rows);
59 let arrays = rb.finish();
60 let batch = arrays.into_record_batch();
61 println!(
62 "record rows={}, fields={}",
63 batch.num_rows(),
64 batch.schema().fields().len()
65 );
66}
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