26 releases

0.10.0 Sep 11, 2024
0.9.5 Nov 29, 2022
0.9.4 Sep 20, 2022
0.9.3 Feb 4, 2022
0.1.0 Dec 29, 2017

#1 in #primitive-integer

Download history 242925/week @ 2024-12-02 254712/week @ 2024-12-09 213575/week @ 2024-12-16 105278/week @ 2024-12-23 132028/week @ 2024-12-30 227778/week @ 2025-01-06 276306/week @ 2025-01-13 254986/week @ 2025-01-20 264451/week @ 2025-01-27 300543/week @ 2025-02-03 309846/week @ 2025-02-10 291935/week @ 2025-02-17 289325/week @ 2025-02-24 297072/week @ 2025-03-03 336358/week @ 2025-03-10 309745/week @ 2025-03-17

1,249,303 downloads per month
Used in 3,164 crates (148 directly)

MIT/Apache

53KB
1.5K SLoC

Uint

Description

Provides facilities to construct big unsigned integer types which use no allocations (stack-based, fixed bit length). If you want to use a predefined U128, U256 or U512 type, take a look at the primitive-types or ethereum-types crate.

The focus on the provided big unsigned integer types is performance and cross-platform availability. Support a very similar API as the built-in primitive integer types.

Usage

In your Cargo.toml paste

uint = "0.8"

Import the macro

use uint::construct_uint;

If you're using pre-edition Rust in your main file

#[macro_use]
extern crate uint;

Construct your own big unsigned integer type as follows.

// U1024 with 1024 bits consisting of 16 x 64-bit words
construct_uint! {
	pub struct U1024(16);
}

Tests

Basic tests

cargo test --release

Basic tests + property tests

cargo test --release --features=quickcheck

Benchmark tests

cargo bench

Fuzz tests

see fuzz README.md

Crate Features

  • std: Use Rust's standard library.
    • Enables byteorder/std, rustc-hex/std
    • Enabled by default.
  • quickcheck: Enable quickcheck-style property testing
    • Use with cargo test --release --features=quickcheck.
  • arbitrary: Allow for creation of an uint object from random unstructured input for use with fuzzers that use the arbitrary crate.
    • Disabled by default.

Dependencies

~155–420KB