Trait rstar::Point[][src]

pub trait Point: Copy + Clone + PartialEq + Debug {
    type Scalar: RTreeNum;

    const DIMENSIONS: usize;

    fn generate(generator: impl Fn(usize) -> Self::Scalar) -> Self;
fn nth(&self, index: usize) -> Self::Scalar;
fn nth_mut(&mut self, index: usize) -> &mut Self::Scalar; }

Defines a point type that is compatible with rstar.

This trait should be used for interoperability with other point types, not to define custom objects that can be inserted into r-trees. Use RTreeObject or PointWithData instead. This trait defines points, not points with metadata.

Point is implemented out of the box for arrays like [f32; 2] or [f64; 7] (up to dimension 9).

Implementation example

Supporting a custom point type might look like this:

use rstar::Point;

#[derive(Copy, Clone, PartialEq, Debug)]
struct IntegerPoint
{
    x: i32,
    y: i32
}

impl Point for IntegerPoint
{
  type Scalar = i32;
  const DIMENSIONS: usize = 2;

  fn generate(generator: impl Fn(usize) -> Self::Scalar) -> Self
  {
    IntegerPoint {
      x: generator(0),
      y: generator(1)
    }
  }

  fn nth(&self, index: usize) -> Self::Scalar
  {
    match index {
      0 => self.x,
      1 => self.y,
      _ => unreachable!()
    }
  }

  fn nth_mut(&mut self, index: usize) -> &mut Self::Scalar
  {
    match index {
      0 => &mut self.x,
      1 => &mut self.y,
      _ => unreachable!()
    }
  }
}

Associated Types

type Scalar: RTreeNum[src]

The number type used by this point type.

Loading content...

Associated Constants

const DIMENSIONS: usize[src]

The number of dimensions of this point type.

Loading content...

Required methods

fn generate(generator: impl Fn(usize) -> Self::Scalar) -> Self[src]

Creates a new point value with given values for each dimension.

The value that each dimension should be initialized with is given by the parameter generator. Calling generator(n) returns the value of dimension n, n will be in the range 0 .. Self::DIMENSIONS.

fn nth(&self, index: usize) -> Self::Scalar[src]

Returns a single coordinate of this point.

Returns the coordinate indicated by index. index is always smaller than Self::DIMENSIONS.

fn nth_mut(&mut self, index: usize) -> &mut Self::Scalar[src]

Mutable variant of nth.

Loading content...

Implementations on Foreign Types

impl<S> Point for [S; 2] where
    S: RTreeNum
[src]

type Scalar = S

impl<S> Point for [S; 3] where
    S: RTreeNum
[src]

type Scalar = S

impl<S> Point for [S; 4] where
    S: RTreeNum
[src]

type Scalar = S

impl<S> Point for [S; 5] where
    S: RTreeNum
[src]

type Scalar = S

impl<S> Point for [S; 6] where
    S: RTreeNum
[src]

type Scalar = S

impl<S> Point for [S; 7] where
    S: RTreeNum
[src]

type Scalar = S

impl<S> Point for [S; 8] where
    S: RTreeNum
[src]

type Scalar = S

impl<S> Point for [S; 9] where
    S: RTreeNum
[src]

type Scalar = S

Loading content...

Implementors

Loading content...