use super::LegacyVec3D;
use arrow2_convert::{ArrowDeserialize, ArrowField, ArrowSerialize};
#[derive(Copy, Clone, Debug, ArrowField, ArrowSerialize, ArrowDeserialize, PartialEq)]
#[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))]
pub struct Arrow3D {
pub origin: LegacyVec3D,
pub vector: LegacyVec3D,
}
impl re_log_types::LegacyComponent for Arrow3D {
#[inline]
fn legacy_name() -> re_log_types::ComponentName {
"rerun.arrow3d".into()
}
}
re_log_types::component_legacy_shim!(Arrow3D);
#[test]
fn test_arrow3d_roundtrip() {
use arrow2::array::Array;
use arrow2_convert::{deserialize::TryIntoCollection, serialize::TryIntoArrow};
let arrows_in = vec![
Arrow3D {
origin: [1.0, 2.0, 3.0].into(),
vector: [4.0, 5.0, 6.0].into(),
},
Arrow3D {
origin: [11.0, 12.0, 13.0].into(),
vector: [14.0, 15.0, 16.0].into(),
},
];
let array: Box<dyn Array> = arrows_in.try_into_arrow().unwrap();
let arrows_out: Vec<Arrow3D> = TryIntoCollection::try_into_collection(array).unwrap();
assert_eq!(arrows_in, arrows_out);
}