mourner / delaunator-rs

Fast 2D Delaunay triangulation in Rust. A port of Delaunator.
https://docs.rs/delaunator
ISC License
207 stars 28 forks source link

Allow From/Into conversions of `Point` and tuple/arrays of `f64` #32

Closed Chris--B closed 1 year ago

Chris--B commented 1 year ago

This is a common pattern that I like to use for various linear algebra work in Rust:

let points: &[Some2DPoint] = &[
   (0., 1.).into(),
   (1., 0.).into(),
   (1., 1.).into(),
];

Subjectively, it's cleaner. It also helps with interop across math frameworks, since many of them can round trip through tuples or arrays. In C, these types are often unions anyway.

This change adds impls for From (and by extension Into) to allow round tripping Point, (f64, 64), and [f64; 2]. It's a small change with a simple API expansion and simple implementation + tests. It does not add any traits for &[f64], those will still have to be copied into one of the above types explicitly.

I make use of this so maybe someone else will benefit here. :)

mourner commented 1 year ago

Looks good to me, thanks for the contribution!