macro_rules! downcast_dictionary_array {
    ($values:ident => $e:expr, $($p:pat => $fallback:expr $(,)*)*) => { ... };
    ($values:ident => $e:block $($p:pat => $fallback:expr $(,)*)*) => { ... };
}
Expand description

Downcast an Array to a DictionaryArray based on its 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::<StringArray>().unwrap() {
                    println!("{:?}", v);
                }
            }
            t => println!("Unsupported dictionary value type {}", t),
        },
        DataType::Utf8 => {
            for v in as_string_array(array) {
                println!("{:?}", v);
            }
        }
        t => println!("Unsupported datatype {}", t)
    )
}