geo 0.12.1

Geospatial primitives and algorithms
Documentation
#![feature(test)]

extern crate test;
use test::Bencher;

extern crate geo;
use geo::contains::Contains;
use geo::{Point, Polygon};

#[bench]
fn point_in_polygon(b: &mut Bencher) {
    let v = vec![
        Point::new(0.0, 0.0),
        Point::new(1.0, 0.0),
        Point::new(1.0, 1.0),
        Point::new(0.0, 0.0),
    ];
    let polygon = Polygon::new(v.into(), vec![]);
    let in_candidate = Point::new(0.5, 0.1);
    b.iter(|| {
        test::black_box(polygon.contains(&in_candidate));
    });
}

#[bench]
fn point_outside_polygon(b: &mut Bencher) {
    let v = vec![
        Point::new(0.0, 0.0),
        Point::new(1.0, 0.0),
        Point::new(1.0, 1.0),
        Point::new(0.0, 0.0),
    ];
    let polygon = Polygon::new(v.into(), vec![]);
    let out_candidate = Point::new(2.0, 2.0);
    b.iter(|| {
        test::black_box(polygon.contains(&out_candidate));
    });
}