pub trait KdPoint {
type Scalar: NumAssign + Copy + PartialOrd;
type Dim: Unsigned;
// Required method
fn at(&self, i: usize) -> Self::Scalar;
// Provided method
fn dim() -> usize { ... }
}
Expand description
A trait to represent k-dimensional point.
§Example
struct MyItem {
point: [f64; 3],
id: usize,
}
impl kd_tree::KdPoint for MyItem {
type Scalar = f64;
type Dim = typenum::U3;
fn at(&self, k: usize) -> f64 { self.point[k] }
}
let kdtree: kd_tree::KdTree<MyItem> = kd_tree::KdTree::build_by_ordered_float(vec![
MyItem { point: [1.0, 2.0, 3.0], id: 111 },
MyItem { point: [3.0, 1.0, 2.0], id: 222 },
MyItem { point: [2.0, 3.0, 1.0], id: 333 },
]);
assert_eq!(kdtree.nearest(&[3.1, 0.1, 2.2]).unwrap().item.id, 222);
Required Associated Types§
Required Methods§
Provided Methods§
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.