pub mod d2;
pub mod positioning;
pub use positioning::{Pos1D, Pos2D, Pos3D, Pos4D};
use crate::directions::ShapeDirectionType;
pub mod rotation;
pub const BOTTOM_HIGHER: bool = true;
pub const BOTTOM_LOWER: bool = false;
pub const trait Shape<T> {}
#[cfg_attr(feature = "bitcode", derive(bitcode::Encode, bitcode::Decode))]
#[cfg_attr(
feature = "wincode",
derive(wincode::SchemaWrite, wincode::SchemaRead)
)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Default, Hash)]
#[cfg_attr(feature = "c_compatible", repr(C))]
pub struct EmptyShape {}
impl<T> Shape<T> for EmptyShape {}
pub const trait GetShapeDirectionType<T, R: ShapeDirectionType> {
fn get_edge_or_corner_type(&self, point: (T, T), margin: T) -> R;
fn get_edge_type(&self, point: (T, T), margin: T) -> R;
fn get_corner_type(&self, point: (T, T), margin: T) -> R;
}