Primitive integer marker traits

This crate provides marker traits for primitive integers:

Numeric types

Integer types

The unsigned integer types consist of:

Type | Minimum | Maximum -------|---------|------------------- u8 | 0 | 28-1 u16 | 0 | 216-1 u32 | 0 | 232-1 u64 | 0 | 264-1 u128 | 0 | 2128-1

The signed two's complement integer types consist of:

Type | Minimum | Maximum -------|--------------------|------------------- i8 | -(27) | 27-1 i16 | -(215) | 215-1 i32 | -(231) | 231-1 i64 | -(263) | 263-1 i128 | -(2127) | 2127-1

Machine-dependent integer types

The usize type is an unsigned integer type with the same number of bits as the platform's pointer type. It can represent every memory address in the process.

The isize type is a signed integer type with the same number of bits as the platform's pointer type. The theoretical upper bound on object and array size is the maximum isize value. This ensures that isize can be used to calculate differences between pointers into an object or array and can address every byte within an object along with one byte past the end.

usize and isize are at least 16-bits wide.

Example

Cargo.toml

```toml

...

[dependencies] justprimint = { version = "0.1.0" }

...

[features]

https://doc.rust-lang.org/beta/unstable-book/language-features/marker-trait-attr.html

markertraitattr = ["justprimint/markertraitattr"] ```

src/main.rs

```rust // Uncomment if you want to conditionally use the feature. Remove otherwise. // #![cfgattr(feature = "markertraitattr", feature(markertrait_attr))]

use justprimint::PrimInt;

trait MyExtensionTraitForPrimInts: PrimInt { // ... }

fn main() {} ```

Building, running, and testing

Features

With marker_trait_attr Nightly feature, each of the provided traits also has #[marker] attribute which allows more optimal implementation of PrimInt via two "overlapping" generic impl blocks, one for T: PrimSignedInt and the other for T: PrimUnsignedInt. Without #[marker] attribute, they would be conflicting.

Similar crates by the author:

Alternatives

License

Licensed under either of Apache License, Version 2.0 or MIT license at your option.


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