# Struct rand::distributions::uniform::UniformInt

source · [−]`pub struct UniformInt<X> { /* private fields */ }`

## Expand description

The back-end implementing `UniformSampler`

for integer types.

Unless you are implementing `UniformSampler`

for your own type, this type
should not be used directly, use `Uniform`

instead.

## Implementation notes

For simplicity, we use the same generic struct `UniformInt<X>`

for all
integer types `X`

. This gives us only one field type, `X`

; to store unsigned
values of this size, we take use the fact that these conversions are no-ops.

For a closed range, the number of possible numbers we should generate is
`range = (high - low + 1)`

. To avoid bias, we must ensure that the size of
our sample space, `zone`

, is a multiple of `range`

; other values must be
rejected (by replacing with a new random sample).

As a special case, we use `range = 0`

to represent the full range of the
result type (i.e. for `new_inclusive($ty::MIN, $ty::MAX)`

).

The optimum `zone`

is the largest product of `range`

which fits in our
(unsigned) target type. We calculate this by calculating how many numbers we
must reject: `reject = (MAX + 1) % range = (MAX - range + 1) % range`

. Any (large)
product of `range`

will suffice, thus in `sample_single`

we multiply by a
power of 2 via bit-shifting (faster but may cause more rejections).

The smallest integer PRNGs generate is `u32`

. For 8- and 16-bit outputs we
use `u32`

for our `zone`

and samples (because it’s not slower and because
it reduces the chance of having to reject a sample). In this case we cannot
store `zone`

in the target type since it is too large, however we know
`ints_to_reject < range <= $unsigned::MAX`

.

An alternative to using a modulus is widening multiply: After a widening
multiply by `range`

, the result is in the high word. Then comparing the low
word against `zone`

makes sure our distribution is uniform.

## Trait Implementations

source### impl<X: Clone> Clone for UniformInt<X>

### impl<X: Clone> Clone for UniformInt<X>

source#### fn clone(&self) -> UniformInt<X>

#### fn clone(&self) -> UniformInt<X>

Returns a copy of the value. Read more

1.0.0 · source#### fn clone_from(&mut self, source: &Self)

#### fn clone_from(&mut self, source: &Self)

Performs copy-assignment from `source`

. Read more

source### impl<X: Debug> Debug for UniformInt<X>

### impl<X: Debug> Debug for UniformInt<X>

source### impl<'de, X> Deserialize<'de> for UniformInt<X> where

X: Deserialize<'de>,

### impl<'de, X> Deserialize<'de> for UniformInt<X> where

X: Deserialize<'de>,

source#### fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error> where

__D: Deserializer<'de>,

#### fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error> where

__D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more

source### impl<X: PartialEq> PartialEq<UniformInt<X>> for UniformInt<X>

### impl<X: PartialEq> PartialEq<UniformInt<X>> for UniformInt<X>

source#### fn eq(&self, other: &UniformInt<X>) -> bool

#### fn eq(&self, other: &UniformInt<X>) -> bool

This method tests for `self`

and `other`

values to be equal, and is used
by `==`

. Read more

source#### fn ne(&self, other: &UniformInt<X>) -> bool

#### fn ne(&self, other: &UniformInt<X>) -> bool

This method tests for `!=`

.

source### impl<X> Serialize for UniformInt<X> where

X: Serialize,

### impl<X> Serialize for UniformInt<X> where

X: Serialize,

source### impl UniformSampler for UniformInt<i8>

### impl UniformSampler for UniformInt<i8>

source#### fn new<B1, B2>(low_b: B1, high_b: B2) -> Self where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

#### fn new<B1, B2>(low_b: B1, high_b: B2) -> Self where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

Construct self, with inclusive lower bound and exclusive upper bound
`[low, high)`

. Read more

source#### fn new_inclusive<B1, B2>(low_b: B1, high_b: B2) -> Self where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

#### fn new_inclusive<B1, B2>(low_b: B1, high_b: B2) -> Self where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

Construct self, with inclusive bounds `[low, high]`

. Read more

source#### fn sample_single<R: Rng + ?Sized, B1, B2>(

low_b: B1,

high_b: B2,

rng: &mut R

) -> Self::X where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

#### fn sample_single<R: Rng + ?Sized, B1, B2>(

low_b: B1,

high_b: B2,

rng: &mut R

) -> Self::X where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

Sample a single value uniformly from a range with inclusive lower bound
and exclusive upper bound `[low, high)`

. Read more

source#### fn sample_single_inclusive<R: Rng + ?Sized, B1, B2>(

low_b: B1,

high_b: B2,

rng: &mut R

) -> Self::X where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

#### fn sample_single_inclusive<R: Rng + ?Sized, B1, B2>(

low_b: B1,

high_b: B2,

rng: &mut R

) -> Self::X where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

Sample a single value uniformly from a range with inclusive lower bound
and inclusive upper bound `[low, high]`

. Read more

source### impl UniformSampler for UniformInt<i16>

### impl UniformSampler for UniformInt<i16>

source#### fn new<B1, B2>(low_b: B1, high_b: B2) -> Self where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

#### fn new<B1, B2>(low_b: B1, high_b: B2) -> Self where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

Construct self, with inclusive lower bound and exclusive upper bound
`[low, high)`

. Read more

source#### fn new_inclusive<B1, B2>(low_b: B1, high_b: B2) -> Self where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

#### fn new_inclusive<B1, B2>(low_b: B1, high_b: B2) -> Self where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

Construct self, with inclusive bounds `[low, high]`

. Read more

source#### fn sample_single<R: Rng + ?Sized, B1, B2>(

low_b: B1,

high_b: B2,

rng: &mut R

) -> Self::X where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

#### fn sample_single<R: Rng + ?Sized, B1, B2>(

low_b: B1,

high_b: B2,

rng: &mut R

) -> Self::X where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

Sample a single value uniformly from a range with inclusive lower bound
and exclusive upper bound `[low, high)`

. Read more

source#### fn sample_single_inclusive<R: Rng + ?Sized, B1, B2>(

low_b: B1,

high_b: B2,

rng: &mut R

) -> Self::X where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

#### fn sample_single_inclusive<R: Rng + ?Sized, B1, B2>(

low_b: B1,

high_b: B2,

rng: &mut R

) -> Self::X where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

Sample a single value uniformly from a range with inclusive lower bound
and inclusive upper bound `[low, high]`

. Read more

source### impl UniformSampler for UniformInt<usize>

### impl UniformSampler for UniformInt<usize>

source#### fn new<B1, B2>(low_b: B1, high_b: B2) -> Self where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

#### fn new<B1, B2>(low_b: B1, high_b: B2) -> Self where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

Construct self, with inclusive lower bound and exclusive upper bound
`[low, high)`

. Read more

source#### fn new_inclusive<B1, B2>(low_b: B1, high_b: B2) -> Self where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

#### fn new_inclusive<B1, B2>(low_b: B1, high_b: B2) -> Self where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

Construct self, with inclusive bounds `[low, high]`

. Read more

source#### fn sample_single<R: Rng + ?Sized, B1, B2>(

low_b: B1,

high_b: B2,

rng: &mut R

) -> Self::X where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

#### fn sample_single<R: Rng + ?Sized, B1, B2>(

low_b: B1,

high_b: B2,

rng: &mut R

) -> Self::X where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

Sample a single value uniformly from a range with inclusive lower bound
and exclusive upper bound `[low, high)`

. Read more

source#### fn sample_single_inclusive<R: Rng + ?Sized, B1, B2>(

low_b: B1,

high_b: B2,

rng: &mut R

) -> Self::X where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

#### fn sample_single_inclusive<R: Rng + ?Sized, B1, B2>(

low_b: B1,

high_b: B2,

rng: &mut R

) -> Self::X where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

Sample a single value uniformly from a range with inclusive lower bound
and inclusive upper bound `[low, high]`

. Read more

source### impl UniformSampler for UniformInt<u128>

### impl UniformSampler for UniformInt<u128>

source#### fn new<B1, B2>(low_b: B1, high_b: B2) -> Self where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

#### fn new<B1, B2>(low_b: B1, high_b: B2) -> Self where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

Construct self, with inclusive lower bound and exclusive upper bound
`[low, high)`

. Read more

source#### fn new_inclusive<B1, B2>(low_b: B1, high_b: B2) -> Self where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

#### fn new_inclusive<B1, B2>(low_b: B1, high_b: B2) -> Self where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

Construct self, with inclusive bounds `[low, high]`

. Read more

source#### fn sample_single<R: Rng + ?Sized, B1, B2>(

low_b: B1,

high_b: B2,

rng: &mut R

) -> Self::X where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

#### fn sample_single<R: Rng + ?Sized, B1, B2>(

low_b: B1,

high_b: B2,

rng: &mut R

) -> Self::X where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

`[low, high)`

. Read more

source#### fn sample_single_inclusive<R: Rng + ?Sized, B1, B2>(

low_b: B1,

high_b: B2,

rng: &mut R

) -> Self::X where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

#### fn sample_single_inclusive<R: Rng + ?Sized, B1, B2>(

low_b: B1,

high_b: B2,

rng: &mut R

) -> Self::X where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

`[low, high]`

. Read more

source### impl UniformSampler for UniformInt<i32>

### impl UniformSampler for UniformInt<i32>

source#### fn new<B1, B2>(low_b: B1, high_b: B2) -> Self where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

#### fn new<B1, B2>(low_b: B1, high_b: B2) -> Self where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

Construct self, with inclusive lower bound and exclusive upper bound
`[low, high)`

. Read more

source#### fn new_inclusive<B1, B2>(low_b: B1, high_b: B2) -> Self where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

#### fn new_inclusive<B1, B2>(low_b: B1, high_b: B2) -> Self where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

Construct self, with inclusive bounds `[low, high]`

. Read more

source#### fn sample_single<R: Rng + ?Sized, B1, B2>(

low_b: B1,

high_b: B2,

rng: &mut R

) -> Self::X where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

#### fn sample_single<R: Rng + ?Sized, B1, B2>(

low_b: B1,

high_b: B2,

rng: &mut R

) -> Self::X where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

`[low, high)`

. Read more

source#### fn sample_single_inclusive<R: Rng + ?Sized, B1, B2>(

low_b: B1,

high_b: B2,

rng: &mut R

) -> Self::X where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

#### fn sample_single_inclusive<R: Rng + ?Sized, B1, B2>(

low_b: B1,

high_b: B2,

rng: &mut R

) -> Self::X where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

`[low, high]`

. Read more

source### impl UniformSampler for UniformInt<i64>

### impl UniformSampler for UniformInt<i64>

source#### fn new<B1, B2>(low_b: B1, high_b: B2) -> Self where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

#### fn new<B1, B2>(low_b: B1, high_b: B2) -> Self where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

Construct self, with inclusive lower bound and exclusive upper bound
`[low, high)`

. Read more

source#### fn new_inclusive<B1, B2>(low_b: B1, high_b: B2) -> Self where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

#### fn new_inclusive<B1, B2>(low_b: B1, high_b: B2) -> Self where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

Construct self, with inclusive bounds `[low, high]`

. Read more

source#### fn sample_single<R: Rng + ?Sized, B1, B2>(

low_b: B1,

high_b: B2,

rng: &mut R

) -> Self::X where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

#### fn sample_single<R: Rng + ?Sized, B1, B2>(

low_b: B1,

high_b: B2,

rng: &mut R

) -> Self::X where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

`[low, high)`

. Read more

source#### fn sample_single_inclusive<R: Rng + ?Sized, B1, B2>(

low_b: B1,

high_b: B2,

rng: &mut R

) -> Self::X where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

#### fn sample_single_inclusive<R: Rng + ?Sized, B1, B2>(

low_b: B1,

high_b: B2,

rng: &mut R

) -> Self::X where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

`[low, high]`

. Read more

source### impl UniformSampler for UniformInt<i128>

### impl UniformSampler for UniformInt<i128>

source#### fn new<B1, B2>(low_b: B1, high_b: B2) -> Self where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

#### fn new<B1, B2>(low_b: B1, high_b: B2) -> Self where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

Construct self, with inclusive lower bound and exclusive upper bound
`[low, high)`

. Read more

source#### fn new_inclusive<B1, B2>(low_b: B1, high_b: B2) -> Self where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

#### fn new_inclusive<B1, B2>(low_b: B1, high_b: B2) -> Self where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

Construct self, with inclusive bounds `[low, high]`

. Read more

source#### fn sample_single<R: Rng + ?Sized, B1, B2>(

low_b: B1,

high_b: B2,

rng: &mut R

) -> Self::X where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

#### fn sample_single<R: Rng + ?Sized, B1, B2>(

low_b: B1,

high_b: B2,

rng: &mut R

) -> Self::X where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

`[low, high)`

. Read more

source#### fn sample_single_inclusive<R: Rng + ?Sized, B1, B2>(

low_b: B1,

high_b: B2,

rng: &mut R

) -> Self::X where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

#### fn sample_single_inclusive<R: Rng + ?Sized, B1, B2>(

low_b: B1,

high_b: B2,

rng: &mut R

) -> Self::X where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

`[low, high]`

. Read more

source### impl UniformSampler for UniformInt<isize>

### impl UniformSampler for UniformInt<isize>

source#### fn new<B1, B2>(low_b: B1, high_b: B2) -> Self where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

#### fn new<B1, B2>(low_b: B1, high_b: B2) -> Self where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

Construct self, with inclusive lower bound and exclusive upper bound
`[low, high)`

. Read more

source#### fn new_inclusive<B1, B2>(low_b: B1, high_b: B2) -> Self where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

#### fn new_inclusive<B1, B2>(low_b: B1, high_b: B2) -> Self where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

Construct self, with inclusive bounds `[low, high]`

. Read more

source#### fn sample_single<R: Rng + ?Sized, B1, B2>(

low_b: B1,

high_b: B2,

rng: &mut R

) -> Self::X where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

#### fn sample_single<R: Rng + ?Sized, B1, B2>(

low_b: B1,

high_b: B2,

rng: &mut R

) -> Self::X where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

`[low, high)`

. Read more

source#### fn sample_single_inclusive<R: Rng + ?Sized, B1, B2>(

low_b: B1,

high_b: B2,

rng: &mut R

) -> Self::X where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

#### fn sample_single_inclusive<R: Rng + ?Sized, B1, B2>(

low_b: B1,

high_b: B2,

rng: &mut R

) -> Self::X where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

`[low, high]`

. Read more

source### impl UniformSampler for UniformInt<u8>

### impl UniformSampler for UniformInt<u8>

source#### fn new<B1, B2>(low_b: B1, high_b: B2) -> Self where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

#### fn new<B1, B2>(low_b: B1, high_b: B2) -> Self where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

Construct self, with inclusive lower bound and exclusive upper bound
`[low, high)`

. Read more

source#### fn new_inclusive<B1, B2>(low_b: B1, high_b: B2) -> Self where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

#### fn new_inclusive<B1, B2>(low_b: B1, high_b: B2) -> Self where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

Construct self, with inclusive bounds `[low, high]`

. Read more

source#### fn sample_single<R: Rng + ?Sized, B1, B2>(

low_b: B1,

high_b: B2,

rng: &mut R

) -> Self::X where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

#### fn sample_single<R: Rng + ?Sized, B1, B2>(

low_b: B1,

high_b: B2,

rng: &mut R

) -> Self::X where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

`[low, high)`

. Read more

source#### fn sample_single_inclusive<R: Rng + ?Sized, B1, B2>(

low_b: B1,

high_b: B2,

rng: &mut R

) -> Self::X where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

#### fn sample_single_inclusive<R: Rng + ?Sized, B1, B2>(

low_b: B1,

high_b: B2,

rng: &mut R

) -> Self::X where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

`[low, high]`

. Read more

source### impl UniformSampler for UniformInt<u16>

### impl UniformSampler for UniformInt<u16>

source#### fn new<B1, B2>(low_b: B1, high_b: B2) -> Self where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

#### fn new<B1, B2>(low_b: B1, high_b: B2) -> Self where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

Construct self, with inclusive lower bound and exclusive upper bound
`[low, high)`

. Read more

source#### fn new_inclusive<B1, B2>(low_b: B1, high_b: B2) -> Self where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

#### fn new_inclusive<B1, B2>(low_b: B1, high_b: B2) -> Self where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

Construct self, with inclusive bounds `[low, high]`

. Read more

source#### fn sample_single<R: Rng + ?Sized, B1, B2>(

low_b: B1,

high_b: B2,

rng: &mut R

) -> Self::X where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

#### fn sample_single<R: Rng + ?Sized, B1, B2>(

low_b: B1,

high_b: B2,

rng: &mut R

) -> Self::X where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

`[low, high)`

. Read more

source#### fn sample_single_inclusive<R: Rng + ?Sized, B1, B2>(

low_b: B1,

high_b: B2,

rng: &mut R

) -> Self::X where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

#### fn sample_single_inclusive<R: Rng + ?Sized, B1, B2>(

low_b: B1,

high_b: B2,

rng: &mut R

) -> Self::X where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

`[low, high]`

. Read more

source### impl UniformSampler for UniformInt<u32>

### impl UniformSampler for UniformInt<u32>

source#### fn new<B1, B2>(low_b: B1, high_b: B2) -> Self where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

#### fn new<B1, B2>(low_b: B1, high_b: B2) -> Self where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

Construct self, with inclusive lower bound and exclusive upper bound
`[low, high)`

. Read more

source#### fn new_inclusive<B1, B2>(low_b: B1, high_b: B2) -> Self where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

#### fn new_inclusive<B1, B2>(low_b: B1, high_b: B2) -> Self where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

Construct self, with inclusive bounds `[low, high]`

. Read more

source#### fn sample_single<R: Rng + ?Sized, B1, B2>(

low_b: B1,

high_b: B2,

rng: &mut R

) -> Self::X where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

#### fn sample_single<R: Rng + ?Sized, B1, B2>(

low_b: B1,

high_b: B2,

rng: &mut R

) -> Self::X where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

`[low, high)`

. Read more

source#### fn sample_single_inclusive<R: Rng + ?Sized, B1, B2>(

low_b: B1,

high_b: B2,

rng: &mut R

) -> Self::X where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

#### fn sample_single_inclusive<R: Rng + ?Sized, B1, B2>(

low_b: B1,

high_b: B2,

rng: &mut R

) -> Self::X where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

`[low, high]`

. Read more

source### impl UniformSampler for UniformInt<u64>

### impl UniformSampler for UniformInt<u64>

source#### fn new<B1, B2>(low_b: B1, high_b: B2) -> Self where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

#### fn new<B1, B2>(low_b: B1, high_b: B2) -> Self where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

Construct self, with inclusive lower bound and exclusive upper bound
`[low, high)`

. Read more

source#### fn new_inclusive<B1, B2>(low_b: B1, high_b: B2) -> Self where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

#### fn new_inclusive<B1, B2>(low_b: B1, high_b: B2) -> Self where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

Construct self, with inclusive bounds `[low, high]`

. Read more

source#### fn sample_single<R: Rng + ?Sized, B1, B2>(

low_b: B1,

high_b: B2,

rng: &mut R

) -> Self::X where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

#### fn sample_single<R: Rng + ?Sized, B1, B2>(

low_b: B1,

high_b: B2,

rng: &mut R

) -> Self::X where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

`[low, high)`

. Read more

source#### fn sample_single_inclusive<R: Rng + ?Sized, B1, B2>(

low_b: B1,

high_b: B2,

rng: &mut R

) -> Self::X where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

#### fn sample_single_inclusive<R: Rng + ?Sized, B1, B2>(

low_b: B1,

high_b: B2,

rng: &mut R

) -> Self::X where

B1: SampleBorrow<Self::X> + Sized,

B2: SampleBorrow<Self::X> + Sized,

`[low, high]`

. Read more

### impl<X: Copy> Copy for UniformInt<X>

### impl<X> StructuralPartialEq for UniformInt<X>

## Auto Trait Implementations

### impl<X> RefUnwindSafe for UniformInt<X> where

X: RefUnwindSafe,

### impl<X> Send for UniformInt<X> where

X: Send,

### impl<X> Sync for UniformInt<X> where

X: Sync,

### impl<X> Unpin for UniformInt<X> where

X: Unpin,

### impl<X> UnwindSafe for UniformInt<X> where

X: UnwindSafe,

## Blanket Implementations

source### impl<T> BorrowMut<T> for T where

T: ?Sized,

### impl<T> BorrowMut<T> for T where

T: ?Sized,

const: unstable · source#### fn borrow_mut(&mut self) -> &mut T

#### fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more

source### impl<T> ToOwned for T where

T: Clone,

### impl<T> ToOwned for T where

T: Clone,

#### type Owned = T

#### type Owned = T

The resulting type after obtaining ownership.

source#### fn clone_into(&self, target: &mut T)

#### fn clone_into(&self, target: &mut T)

`toowned_clone_into`

)Uses borrowed data to replace owned data, usually by cloning. Read more