any-range
=========
[](https://crates.io/crates/any-range)
[](https://gitlab.com/leonhard-llc/ops/-/raw/main/any-range/LICENSE)
[](https://github.com/rust-secure-code/safety-dance/)
[](https://gitlab.com/leonhard-llc/ops/-/pipelines)
`AnyRange<T>` enum can hold any `Range*<T>` type.
# Use Cases
- Store any kind of range in a struct without adding a type parameter
# Features
- `no_std`, depends only on `core`
- `forbid(unsafe_code)`
- 100% test coverage
# Limitations
- Uses more bytes than a plain `Range<T>`.
The alignment of `T` determines how many extra bytes the enum uses.
# Alternatives
- [`anyrange`](https://crates.io/crates/anyrange)
- Should be called `ToRange`
- Doesn't support `RangeInclusive` or `RangeToInclusive`
- Unmaintained
# Example
```rust
use any_range::AnyRange;
let r = AnyRange::from(3..5);
assert!(r.contains(&3));
assert_eq!("de", &"abcdefg"[r.bounds()]);
```
# Cargo Geiger Safety Report
```
Metric output format: x/y
x = unsafe code used by the build
y = total unsafe code found in the crate
Symbols:
🔒 = No `unsafe` usage found, declares #![forbid(unsafe_code)]
❓ = No `unsafe` usage found, missing #![forbid(unsafe_code)]
☢️ = `unsafe` usage found
Functions Expressions Impls Traits Methods Dependency
0/0 0/0 0/0 0/0 0/0 🔒 any-range 0.1.4
0/0 0/0 0/0 0/0 0/0
```
# Changelog
- v0.1.4 - Add `bounds` method for slicing
- v0.1.3 - Implement `Hash`, `PartialOrd`, `Ord`
- v0.1.2 - Increase test coverage
- v0.1.1 - Update docs
- v0.1.0 - Initial version
License: Apache-2.0