18 releases
0.9.0-alpha.2 | Jul 29, 2024 |
---|---|
0.9.0-alpha.1 | Mar 18, 2024 |
0.9.0-alpha.0 | Feb 18, 2024 |
0.6.4 | Sep 15, 2022 |
0.0.1 |
|
#862 in Algorithms
17,126,312 downloads per month
Used in 44,128 crates
(1,081 directly)
62KB
769 lines
rand_core
Core traits and error types of the rand library, plus tools for implementing RNGs.
This crate is intended for use when implementing the core trait, RngCore
; it
defines the core traits to be implemented as well as several small functions to
aid in their implementation and types required for error handling.
The main rand crate re-exports most items defined in this crate, along with
tools to convert the integer samples generated by RngCore
to many different
applications (including sampling from restricted ranges, conversion to floating
point, list permutations and secure initialisation of RNGs). Most users should
prefer to use the main rand crate.
Links:
Functionality
The rand_core
crate provides:
- base random number generator traits
- error-reporting types
- functionality to aid implementation of RNGs
The traits and error types are also available via rand
.
Versions
The current version is:
rand_core = "0.6.4"
Rand libs have inter-dependencies and make use of the
semver trick in order to make traits
compatible across crate versions. (This is especially important for RngCore
and SeedableRng
.) A few crate releases are thus compatibility shims,
depending on the next lib version (e.g. rand_core
versions 0.2.2
and
0.3.1
). This means, for example, that rand_core_0_4_0::SeedableRng
and
rand_core_0_3_0::SeedableRng
are distinct, incompatible traits, which can
cause build errors. Usually, running cargo update
is enough to fix any issues.
Crate Features
rand_core
supports no_std
and alloc
-only configurations, as well as full
std
functionality. The differences between no_std
and full std
are small,
comprising RngCore
support for Box<R>
types where R: RngCore
,
std::io::Read
support for types supporting RngCore
, and
extensions to the Error
type's functionality.
The std
feature is not enabled by default. This is primarily to avoid build
problems where one crate implicitly requires rand_core
with std
support and
another crate requires rand
without std
support. However, the rand
crate
continues to enable std
support by default, both for itself and rand_core
.
The serde
feature can be used to derive Serialize
and Deserialize
for RNG
implementations that use the BlockRng
or BlockRng64
wrappers.
License
rand_core
is distributed under the terms of both the MIT license and the
Apache License (Version 2.0).
See LICENSE-APACHE and LICENSE-MIT, and COPYRIGHT for details.
Dependencies
~0.6–1MB
~13K SLoC