#![allow(trivial_numeric_casts)]
#![allow(unused_imports)]
#![allow(unused_parens)]
#![allow(clippy::clone_on_copy)]
#![allow(clippy::iter_on_single_items)]
#![allow(clippy::map_flatten)]
#![allow(clippy::match_wildcard_for_single_variants)]
#![allow(clippy::needless_question_mark)]
#![allow(clippy::new_without_default)]
#![allow(clippy::redundant_closure)]
#![allow(clippy::too_many_arguments)]
#![allow(clippy::too_many_lines)]
#![allow(clippy::unnecessary_cast)]
use crate::external::arrow2;
use crate::ComponentName;
use crate::SerializationResult;
use crate::{ComponentBatch, MaybeOwnedComponentBatch};
use crate::{DeserializationError, DeserializationResult};
#[derive(Clone, Debug, PartialEq, Eq)]
pub struct Clear {
pub is_recursive: crate::components::ClearIsRecursive,
}
static REQUIRED_COMPONENTS: once_cell::sync::Lazy<[ComponentName; 1usize]> =
once_cell::sync::Lazy::new(|| ["rerun.components.ClearIsRecursive".into()]);
static RECOMMENDED_COMPONENTS: once_cell::sync::Lazy<[ComponentName; 1usize]> =
once_cell::sync::Lazy::new(|| ["rerun.components.ClearIndicator".into()]);
static OPTIONAL_COMPONENTS: once_cell::sync::Lazy<[ComponentName; 1usize]> =
once_cell::sync::Lazy::new(|| ["rerun.components.InstanceKey".into()]);
static ALL_COMPONENTS: once_cell::sync::Lazy<[ComponentName; 3usize]> =
once_cell::sync::Lazy::new(|| {
[
"rerun.components.ClearIsRecursive".into(),
"rerun.components.ClearIndicator".into(),
"rerun.components.InstanceKey".into(),
]
});
impl Clear {
pub const NUM_COMPONENTS: usize = 3usize;
}
pub type ClearIndicator = crate::GenericIndicatorComponent<Clear>;
impl crate::Archetype for Clear {
type Indicator = ClearIndicator;
#[inline]
fn name() -> crate::ArchetypeName {
"rerun.archetypes.Clear".into()
}
#[inline]
fn indicator() -> MaybeOwnedComponentBatch<'static> {
static INDICATOR: ClearIndicator = ClearIndicator::DEFAULT;
MaybeOwnedComponentBatch::Ref(&INDICATOR)
}
#[inline]
fn required_components() -> ::std::borrow::Cow<'static, [ComponentName]> {
REQUIRED_COMPONENTS.as_slice().into()
}
#[inline]
fn recommended_components() -> ::std::borrow::Cow<'static, [ComponentName]> {
RECOMMENDED_COMPONENTS.as_slice().into()
}
#[inline]
fn optional_components() -> ::std::borrow::Cow<'static, [ComponentName]> {
OPTIONAL_COMPONENTS.as_slice().into()
}
#[inline]
fn all_components() -> ::std::borrow::Cow<'static, [ComponentName]> {
ALL_COMPONENTS.as_slice().into()
}
#[inline]
fn from_arrow_components(
arrow_data: impl IntoIterator<Item = (ComponentName, Box<dyn arrow2::array::Array>)>,
) -> DeserializationResult<Self> {
re_tracing::profile_function!();
use crate::{Loggable as _, ResultExt as _};
let arrays_by_name: ::std::collections::HashMap<_, _> = arrow_data
.into_iter()
.map(|(name, array)| (name.full_name(), array))
.collect();
let is_recursive = {
let array = arrays_by_name
.get("rerun.components.ClearIsRecursive")
.ok_or_else(DeserializationError::missing_data)
.with_context("rerun.archetypes.Clear#is_recursive")?;
<crate::components::ClearIsRecursive>::from_arrow_opt(&**array)
.with_context("rerun.archetypes.Clear#is_recursive")?
.into_iter()
.next()
.flatten()
.ok_or_else(DeserializationError::missing_data)
.with_context("rerun.archetypes.Clear#is_recursive")?
};
Ok(Self { is_recursive })
}
}
impl crate::AsComponents for Clear {
fn as_component_batches(&self) -> Vec<MaybeOwnedComponentBatch<'_>> {
re_tracing::profile_function!();
use crate::Archetype as _;
[
Some(Self::indicator()),
Some((&self.is_recursive as &dyn ComponentBatch).into()),
]
.into_iter()
.flatten()
.collect()
}
#[inline]
fn num_instances(&self) -> usize {
1
}
}
impl Clear {
pub fn new(is_recursive: impl Into<crate::components::ClearIsRecursive>) -> Self {
Self {
is_recursive: is_recursive.into(),
}
}
}