Trait quantized_density_fields::qdf::state::State
source · pub trait State: Sized + Clone + Default + Debug {
fn subdivide(&self, subdivisions: usize) -> Self;
fn merge(states: &[Self]) -> Self;
}Expand description
Trait that describes QDF space state.
Examples
use quantized_density_fields::State;
use std::iter::repeat;
#[derive(Debug, Default, Eq, PartialEq, Clone)]
struct Integer(i32);
impl State 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 = State::merge(&repeat(substate).take(4).collect::<Vec<Integer>>());
assert_eq!(state, Integer(16));