A https://random.org client library. The randomness comes from atmospheric noise, which for many purposes is better than the pseudo-random number algorithms typically used in computer programs.
Everything is implemented. Note, that the random.org service
API is at beta stage of development, however the library will try to be up-to-date.
The documentation which may help you using this library.
- Immutable interface, no need to synchronize,
thread-safe (
SyncandSend). - No unsafe blocks.
reqwestcrate is used for performing requests.chronofor dates.serdefor serialization and deserialization.
randfeature which provides therand_core::RngCoretrait implementation for theRandomstruct and adds newFallibleRandom<T: rand_core::RngCore>structure for better random generation UX.
Start by creating Random instance and perform needed operations after.
externcrate randomorg;fnmain(){use randomorg::Random;let r = Random::new("API KEY HERE");// A method-call way:println!("Result: {:?}", r.generate_integers(-100,100,15,true));// A lazy request builder way:let random_data = r.request_integers().min(0).max(100).limit(5).collect::<Vec<i32>>();println!("Random integers: {:?}", random_data);}With the rand feature you can also use it that way:
externcrate randomorg;fnmain(){use rand_core::RngCore;use randomorg::Random;letmut random = Random::new("API KEY HERE");letmut key = [0u8;16];
random.fill_bytes(&mut key);let random_u64 = random.next_u64();}This project is licensed under the MIT license.