[][src]Crate dia_range

Dia-range

Ranges for all integers

Project

Features

  • RangeType and Ops traits are implemented for all integer primitive types. So you can use Range on them.
  • Currently only Range is recommended for use. Both RangeType and Ops traits are intended for internal use only. However they have to be available publicly for Range to be valid. So their APIs look weird. It's not recommended to build things from them.

Examples

use dia_range::Range;

// First type i16 is for indexes; second type (u16) is for estimating range size.
// You can ignore second type, the compiler will figure it out.
let mut range: Range<i16, _> = Range::new(50, 100);
assert!(range.contains(&99));
assert!(range.expand(101));
assert!(range.expand(103) == false);
assert!(range.contains(&101));
assert_eq!(range.estimate_size(), 52);

// Merging
assert_eq!(range.merge(&Range::new(100, 150)), Some(Range::new(50, 150)));

Modules

version_info

0.9.0 (June 16th, 2019)

Structs

Range

Range

RangeIter

Iterator for Range

Constants

CODE_NAME

Crate code name

ID

ID of this crate

NAME

Crate name

RELEASE_DATE

Crate release date (year/month/day)

TAG

Tag, which can be used for logging...

VERSION

Crate version

Traits

OpsDeprecated

Math operations

RangeTypeDeprecated

Helper for Range

Functions

merge

Merges ranges