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));

Required Methods§

Create data template that we get by subdivision of source data.

Arguments
  • subdivisions - number of subdivisions.

Merge multiple data instances into one.

Arguments
  • states - list of source data to merge.

Implementations on Foreign Types§

Implementors§