-
Notifications
You must be signed in to change notification settings - Fork 192
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Use getrandom crate for uuid #447
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I have a few problems I see. See my relevant comments
97e9bcf
to
bcc2fb1
Compare
Reduces the number of dependencies.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If you accept the changes, I can merge. Later when I get the time, I will actually change the signature.
/// This uses the [`rand`] crate's default task RNG as the source of random | ||
/// numbers. If you'd like to use a custom generator, don't use this | ||
/// method: use the `rand::Rand trait`'s `rand()` method instead. | ||
/// This uses the [`getrandom`] crate to utilise the operating system's RNG |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@KodrAus should we expose the fact that we are using the getrandom
crate implementation in the docs?
Thanks @ammgws for working on this :) |
Co-Authored-By: Hunar Roop Kahlon <hunar.roop@gmail.com>
Co-Authored-By: Hunar Roop Kahlon <hunar.roop@gmail.com>
Co-Authored-By: Hunar Roop Kahlon <hunar.roop@gmail.com>
Shall I rebase this? |
bors r+ |
447: Use getrandom crate for uuid r=kinggoesgaming a=ammgws <!-- If this PR is a breaking change, ensure that you are opening it against the `breaking` branch. If the pull request is incomplete, prepend the Title with WIP: --> **I'm submitting a(n)** other # Description Use `getrandom` crate directly instead of `rand` for generating UUIDs using v4. # Motivation Reduce the number of dependencies used by the crate. Running the example in the README: - Before (10): c2-chacha, cfg-if, getrandom, libc, ppv-lite86, rand, rand_chacha, rand_core, rand_hc, wasi - After (4): cfg-if, getrandom, libc, wasi # Tests <!-- How are these changes tested? --> `cargo test` locally and test usage in a simple program. # Related Issue(s) # Other Wasn't sure whether I should bump the version here or not. Co-authored-by: Jason Nader <jason@kayoway.com> Co-authored-by: Jason <ammgws@users.noreply.github.com>
503: Un-breaking-change Uuid::new_v4 r=KodrAus a=CAD97 <!-- If this PR is a breaking change, ensure that you are opening it against the `breaking` branch. If the pull request is incomplete, prepend the Title with WIP: --> **I'm submitting a(n)** refactor # Description #447 changed from using `rand::thread_rng` to using `getrandom` in `Uuid::new_v4`. This also changed the return type from `Uuid` to `Result<Uuid, getrandom::Error>`. This PR reverts the signature to the simpler `new_v4() -> Uuid`. # Motivation This signature is much simpler to use, and avoids a breaking change. `getrandom` is _highly_ unlikely to fail, and previously we used `thread_rng` here, which also panics if it fails to initialize from the OS entropy source. If `getrandom` fails, it is highly unlikely that any program creating v4 UUIDs has any reasonable recovery other than to abort, as the system is in a broken state. If users absolutely need to recover in this situation, they can call `getrandom` first themselves to make sure that their system is working, or generate the bytes themselves and create the UUID from those bytes. Additionally, actually wrapping `getrandom::Error` in `uuid::Error` comes with its own fun set of problems, described in #502. # Tests N/A # Related Issue(s) #475: this undoes the breaking change to `Uuid::new_v4`, thus making the requested publish a patch update Closes #502: alternate approach to the same TODO Co-authored-by: CAD97 <cad97@cad97.com>
I'm submitting a(n) other
Description
Use
getrandom
crate directly instead ofrand
for generating UUIDs using v4.Motivation
Reduce the number of dependencies used by the crate.
Running the example in the README:
Tests
cargo test
locally and test usage in a simple program.Related Issue(s)
Other
Wasn't sure whether I should bump the version here or not.