# uint-crate ## 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 [`tetsy-primitive-types`](https://github.com/tetcoin/tetsy-common/tree/master/tetsy-primitive-types) or [`vapory-types`](https://github.com/tetcoin/tetsy-common/tree/master/vapory-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.9.0" ``` Import the macro ``` use uint_crate::construct_uint; ``` If you're using pre-edition Rust in your main file ``` #[macro_use] extern crate uint_crate; ``` 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](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.