Skip to content

AldaronLau/ranch

Ranch

tests GitHub commit activity GitHub contributors
Crates.io Crates.io Crates.io (recent)
Crates.io Docs.rs

Ranged integer types and math for Rust

Do you ever need to restrict a u8 from 0 to 100 or restrict any other integer type to any other range? Then this crate is for you! The ranges are encoded in the type system, so you only need to validate the range once (and it can even be at compile time!). This crate is sort of like a combination of similar crates deranged and ux.

This crate heavily leverages the type system to allow for powerful ranged integer mathematics, covering arbitrary i{N} / u{N} types, unit integers, non-zero divisions, and const operations. Enable the serde feature for range-validated deserialization / serialization (implements Serialize and Deserialize for Ranged* types).

Check out the documentation for examples.

Features

  • Compile-time and runtime checked constructors for ranged integers
  • Strict, checked, saturating, constant, and ranged operations
  • Conversions between for ranged integers
  • Aliases for arbitrary width integers, unit integers, and ASCII types
  • Optional crate support
    • Enable bytemuck for casting as "plain old data"
    • Enable serde for serialization and deserialization
    • Enable zeroize for secure secret clearing

MSRV

The current MSRV is Rust 1.85.

Any future MSRV updates will follow the Ardaku MSRV guidelines.

License

Copyright © 2025-2026 The Ranch Contributors.

Licensed under any of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be licensed as described above, without any additional terms or conditions.

Help

If you want help using or contributing to this library, feel free to send me an email at aldaronlau@gmail.com.

Packages

No packages published

Languages