18 releases

0.1.18 Mar 3, 2024
0.1.17 Oct 31, 2023
0.1.15 Oct 25, 2022
0.1.13 Dec 5, 2020
0.1.3 Mar 3, 2019

#2 in #constants

Download history 410799/week @ 2024-06-14 443725/week @ 2024-06-21 436716/week @ 2024-06-28 470060/week @ 2024-07-05 497393/week @ 2024-07-12 512001/week @ 2024-07-19 499166/week @ 2024-07-26 514611/week @ 2024-08-02 567946/week @ 2024-08-09 564956/week @ 2024-08-16 547842/week @ 2024-08-23 511259/week @ 2024-08-30 541778/week @ 2024-09-06 503823/week @ 2024-09-13 568777/week @ 2024-09-20 468775/week @ 2024-09-27

2,190,501 downloads per month
Used in 1,237 crates (17 directly)

MIT/Apache

8KB

Random constants

This crate provides compile time random number generation. This allows you to insert random constants into your code that will be auto-generated at compile time.

A new value will be generated every time the file is rebuilt. This obviously makes the resulting binary or lib non-deterministic. (See below)

Example

use const_random::const_random  ;
const MY_RANDOM_NUMBER: u32 = const_random!(u32);

This works exactly as through you have called: OsRng.gen::<u32>() at compile time. So for details of the random number generation, see the rand crates documentation.

The following types are supported: u8, i8, u16, i16, u32, i32, u64, i64, u128, i128, usize, isize and [u8; N].

Deterministic builds

Sometimes it is an advantage for build systems to be deterministic. To support this const-random reads the environmental variable CONST_RANDOM_SEED. If this variable is set, it will be used as the seed for the random number generation. Setting the same seed on a build of the same code should result in identical output.

Dependencies

~1.5MB
~23K SLoC