pub trait NoiseND<T, I> {
fn noise_nd<const DIM: usize>(coord: [I; DIM]) -> T;
}
pub trait Noise2D<T, I> {
fn noise_2d(x: I, y: I) -> T;
}
pub trait Noise3D<T, I> {
fn noise_3d(x: I, y: I, z: I) -> T;
}
pub trait Noise4D<T, I> {
fn noise_4d(x: I, y: I, z: I) -> T;
}