Trait quantized_density_fields::qdf::state::Subdividable
source · pub trait Subdividable: Sized {
fn subdivide(&self, subdivisions: usize) -> Self;
fn merge(states: &[Self]) -> Self;
}
Expand description
Trait that describes subdividable data.
Examples
use quantized_density_fields::Subdividable;
use std::iter::repeat;
#[derive(Debug, Eq, PartialEq, Clone)]
struct Integer(i32);
impl Subdividable for Integer {
fn subdivide(&self, subdivisions: usize) -> Self {
Integer(self.0 / subdivisions as i32)
}
fn merge(states: &[Self]) -> Self {
Integer(states.iter().map(|v| v.0).sum())
}
}
let substate = Integer(16).subdivide(4);
assert_eq!(substate, Integer(4));
let state = Subdividable::merge(&repeat(substate).take(4).collect::<Vec<Integer>>());
assert_eq!(state, Integer(16));