mod own_chunk;
mod thick_thin;
pub use self::own_chunk::may_merge;
use re_types_core::reflection::ComponentTypeSet;
use crate::Chunk;
#[derive(Clone, Debug, Default)]
pub struct SplitColumnsOptions {
pub own_chunks: ComponentTypeSet,
pub split_size_ratio: Option<f64>,
}
impl Chunk {
pub fn split_columns(&self, options: &SplitColumnsOptions) -> Option<Vec<Self>> {
let pieces = own_chunk::split(self, options);
let Some(ratio) = options.split_size_ratio else {
return pieces;
};
match pieces {
Some(pieces) => Some(
pieces
.into_iter()
.flat_map(|piece| {
thick_thin::split(&piece, ratio).unwrap_or_else(|| vec![piece])
})
.collect(),
),
None => thick_thin::split(self, ratio),
}
}
}