pub struct OrderedMap<K, V>(/* private fields */);
Expand description
Sorted-keys Map: entries sourced from BTreeMap<K, V>
, declaring keys_sorted = true
.
Keys are non-nullable; the value field is nullable per MapBuilder semantics, but this
wrapper does not write null values.
Implementations§
Source§impl<K, V> OrderedMap<K, V>
impl<K, V> OrderedMap<K, V>
Sourcepub fn new(map: BTreeMap<K, V>) -> Self
pub fn new(map: BTreeMap<K, V>) -> Self
Construct a new ordered-map from a BTreeMap
(keys sorted).
Examples found in repository?
examples/11_map.rs (line 36)
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) -> BTreeMap<K, V>
pub fn into_inner(self) -> BTreeMap<K, V>
Consume and return the underlying BTreeMap
.
Trait Implementations§
Source§impl<K, V> ArrowBinding for OrderedMap<K, Option<V>>where
K: ArrowBinding + Ord,
V: ArrowBinding,
<K as ArrowBinding>::Builder: ArrayBuilder,
<V as ArrowBinding>::Builder: ArrayBuilder,
impl<K, V> ArrowBinding for OrderedMap<K, Option<V>>where
K: ArrowBinding + Ord,
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> ArrowBinding for OrderedMap<K, V>where
K: ArrowBinding + Ord,
V: ArrowBinding,
<K as ArrowBinding>::Builder: ArrayBuilder,
<V as ArrowBinding>::Builder: ArrayBuilder,
impl<K, V> ArrowBinding for OrderedMap<K, V>where
K: ArrowBinding + Ord,
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> Freeze for OrderedMap<K, V>
impl<K, V> RefUnwindSafe for OrderedMap<K, V>where
K: RefUnwindSafe,
V: RefUnwindSafe,
impl<K, V> Send for OrderedMap<K, V>
impl<K, V> Sync for OrderedMap<K, V>
impl<K, V> Unpin for OrderedMap<K, V>
impl<K, V> UnwindSafe for OrderedMap<K, V>where
K: RefUnwindSafe,
V: RefUnwindSafe,
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