Open tarcieri opened 3 months ago
I think option 2 is probably the most straightforward. It's pretty much where we were before, and we have also added getrandom
-based fallible APIs.
I think we can have two sets of methods: one set based on CryptoRng
and another set of try_*
methods based on TryCryptoRng
. Note that fallible RNGs should implement the Try*
traits, while potentially fallible ones can be converted to "infallible" using the UnwrapErr
wrapper. Users then can decide what to use by themselves.
I tried bumping this repo to
rand_core
v0.9.0-alpha.2 and ran into the following problem:This release gets rid of
CryptoRngCore
and instead changesCryptoRng
to haveRngCore
as a supertrait.It also splits out
TryRngCore
into a separate trait, so we can't simply replaceCryptoRngCore
withCryptoRng
and still have access totry_fill_bytes
.What should we do?
CryptoRng
to have a supertrait bound onTryRngCore
CryptoRng
andfill_bytes
and get rid of fallible errors when usingrand_core
-based APIs (we still have fallibility forgetrandom
-based APIs)CryptoRngCore
to bounds ofCryptoRng + TryRngCore