Crate generic_interval

Crate generic_interval 

Source
Expand description

§generic-interval

crates.io docs.io License Rust codecov

A generic closed interval library.

An interval is a pair of numbers which represents all the numbers between them.
Intervals are considered closed so the bounds are included.
Intervals are written [a, b] to represent all the numbers between a and b inclusive, a ≤ b.

The library is designed to be used with any types that implement the Copy and PartialOrd traits including the floating point types: f64 and f32 and arithmetic types in new types.

The library is declared no_std so it can be used in embedded applications.

§Examples

use generic_interval::{Interval, hull, intersection, overlap, overlaps};

// An example new-type based on f64
#[derive(Clone, Copy, Debug, PartialEq, PartialOrd)]
pub struct Metres(pub f64);

let a = Interval::try_from((Metres(1.0), Metres(4.0))).unwrap();
let b = Interval::try_from((Metres(6.0), Metres(9.0))).unwrap();

// Note: the hull includes 4.0-6.0
let result = hull(a, b);
assert_eq!(Metres(1.0), result.lower());
assert_eq!(Metres(9.0), result.upper());

// Note: overlap may return an empty interval
// while overlaps is the same as intersection
let result = intersection(a, b);
assert!(result.is_none());
let result = overlaps(a, b);
assert!(result.is_none());
let result = overlap(a, b);
assert!(result.is_empty());

let c = Interval::try_from((Metres(4.0), Metres(9.0))).unwrap();
let result = intersection(a, c).unwrap();
assert_eq!(Metres(4.0), result.lower());
assert_eq!(Metres(4.0), result.upper());

§License

generic-interval is provided under a MIT license, see LICENSE.

Structs§

Interval
A closed interval (endpoints included).

Functions§

hull
Calculate the union of the two Intervals. Note: it is called hull because it does not match the precise definition of a union of sets.
intersection
Calculate the intersection of the two Intervals.
max
Return the maximum of two values.
min
Return the minimum of two values.
overlap
Calculate the overlap of the two Intervals.
overlaps
Calculate the if and where two Intervals overlap..