arrow-message 0.1.6

arrow-message implements a way to define messages according to the Arrow format in both Rust and Python
Documentation
use arrow::array::*;
use arrow_message::prelude::*;

#[derive(Debug, ArrowMessage)]
struct Header {
    timestamp: u64,
}

#[derive(Debug, ArrowMessage)]
struct Metadata {
    width: u32,
    height: u32,

    name: Option<String>,
    header: Option<Header>,
}

#[derive(Debug, ArrowMessage)]
struct Output {
    first_array: UInt8Array,
    second_array: Float32Array,
    third_array: Option<Int32Array>,

    metadata: Metadata,
}

fn main() -> arrow::error::Result<()> {
    let output = Output {
        first_array: UInt8Array::from(vec![1, 2, 3]),
        second_array: Float32Array::from(vec![4.0, 5.0, 6.0]),
        third_array: Some(Int32Array::from(vec![7, 8, 9])),
        metadata: Metadata {
            width: 10,
            height: 20,

            name: Some(String::from("Hello!")),
            header: Some(Header {
                timestamp: 1234567890,
            }),
        },
    };

    println!("{:?}", output);

    let arrow = ArrayData::try_from(output)?;
    println!("{:?}", arrow);

    let output = Output::try_from(arrow)?;
    println!("{:?}", output);

    Ok(())
}