use geometry_cs::Cartesian;
use geometry_tag::PointTag;
use geometry_trait::{check_point, Geometry, Point, PointMut};
struct WrongDim {
v: [f64; 2],
}
impl Geometry for WrongDim {
type Kind = PointTag;
type Point = Self;
}
impl Point for WrongDim {
type Scalar = f64;
type Cs = Cartesian;
const DIM: usize = 3;
fn get<const D: usize>(&self) -> f64 {
const {
assert!(
<WrongDim as Point>::DIM as usize <= 2,
"Point::DIM exceeds the backing array length"
);
}
self.v[D]
}
}
impl PointMut for WrongDim {
fn set<const D: usize>(&mut self, v: f64) {
const {
assert!(
<WrongDim as Point>::DIM as usize <= 2,
"Point::DIM exceeds the backing array length"
);
}
self.v[D] = v;
}
}
fn main() {
check_point::<WrongDim>();
let mut p = WrongDim { v: [0.0; 2] };
let _ = p.get::<0>();
p.set::<0>(1.0);
}