2 releases
0.1.0-alpha.2 | Oct 19, 2024 |
---|
#191 in Math
362 downloads per month
155KB
3K
SLoC
intervalsets
This crate provides bounded and unbounded intervals implemented as sets with all the associated set operations.
See the documentation for details.
Features
- Generic intervals for all primitive types
- Custom types may be supported by implementing the
Domain
trait
- Custom types may be supported by implementing the
- Supports all boundary conditions (ie. empty, open, closed, unbound_open, etc...)
- Integer types are always normalized to closed form.
- Bounds trait provides simple accessors
- General set operations
- union
- merged is a special case of union; returns None if A and B are disjoint.
- intersection
- complement
- difference
- symmetric difference
- union
- Set construction
- factory functions for all boundary conditions
- convex hull
- from iterable of points
- from iterable of other sets
- Set predicates
- contains
- intersects
- Set mappings
- general user supplied functions
- IntervalSet (set of intervals)
- disjoint ordered subsets
- supports all set operations
- Simple conversion between types with From/Into traits.
- Convenient display
- Interval<_>: {}, (10, 15], (<-, 2), etc...
- IntervalSet<_>: {(10, 15], [20, ->)}
development
hooks
# the commit-msg git hook uses commitlint
cargo install commitlint-rs
# should install git hooks
cargo clean && cargo test
commit msgs
git commit -m "{type}{!}?: {[{issue|resolves}? #xx]? {description}"
# minor semver change, closes github issue #55
git commit -m "feat: [resolves #55] added new function struct::foo"
# major semver change, references github issue #67
# single quotes required because of the exclamation point.
git commit -m 'feat!: [issue #67] changed public api for Bar'
# patch semver change, closes github issue #33
git commit -m "fix: [resolves #33] fence post error in Baz"
# no semver change
git commit -m "chore: changed ci pipeline"
outstanding
- integration tests
- benchmarks
- fuzz
- docs
Dependencies
~0.5–1.4MB
~27K SLoC