1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
use arrow::{datatypes::Schema as ArrowSchema, error::ArrowError};

impl TryFrom<&crate::common::v0::Schema> for ArrowSchema {
    type Error = ArrowError;

    fn try_from(value: &crate::common::v0::Schema) -> Result<Self, Self::Error> {
        Ok(Self::clone(
            re_sorbet::schema_from_ipc(&value.arrow_schema)?.as_ref(),
        ))
    }
}

impl TryFrom<&ArrowSchema> for crate::common::v0::Schema {
    type Error = ArrowError;

    fn try_from(value: &ArrowSchema) -> Result<Self, Self::Error> {
        Ok(Self {
            arrow_schema: re_sorbet::ipc_from_schema(value)?,
        })
    }
}