1use rand::Rng;
2use thedes_domain::{geometry::CoordPair, map::Map};
3
4pub mod region;
5pub mod pointwise;
6
7pub mod matter;
8
9pub trait Layer {
10 type Data;
11 type Error;
12
13 fn get(
14 &self,
15 map: &mut Map,
16 point: CoordPair,
17 ) -> Result<Self::Data, Self::Error>;
18
19 fn set(
20 &self,
21 map: &mut Map,
22 point: CoordPair,
23 value: Self::Data,
24 ) -> Result<(), Self::Error>;
25}
26
27pub trait LayerDistribution {
28 type Data;
29 type Error;
30
31 fn sample<R>(
32 &self,
33 map: &mut Map,
34 point: CoordPair,
35 rng: R,
36 ) -> Result<Self::Data, Self::Error>
37 where
38 R: Rng;
39}