Vendor dependencies for 0.3.0 release

This commit is contained in:
2025-09-27 10:29:08 -05:00
parent 0c8d39d483
commit 82ab7f317b
26803 changed files with 16134934 additions and 0 deletions

33
vendor/rustix/src/rand/getrandom.rs vendored Normal file
View File

@@ -0,0 +1,33 @@
//! Wrappers for `getrandom`.
#![allow(unsafe_code)]
use crate::buffer::Buffer;
use crate::{backend, io};
pub use backend::rand::types::GetRandomFlags;
/// `getrandom(buf, flags)`—Reads a sequence of random bytes.
///
/// This is a very low-level API which may be difficult to use correctly. Most
/// users should prefer to use [`getrandom`] or [`rand`] APIs instead.
///
/// This function is implemented using a system call, and not the
/// [vDSO mechanism] introduced in Linux 6.11. See [#1185] for details.
///
/// [`getrandom`]: https://crates.io/crates/getrandom
/// [`rand`]: https://crates.io/crates/rand
/// [vDSO mechanism]: https://lwn.net/Articles/983186/
/// [#1185]: https://github.com/bytecodealliance/rustix/issues/1185
///
/// # References
/// - [Linux]
///
/// [Linux]: https://man7.org/linux/man-pages/man2/getrandom.2.html
#[inline]
pub fn getrandom<Buf: Buffer<u8>>(mut buf: Buf, flags: GetRandomFlags) -> io::Result<Buf::Output> {
// SAFETY: `getrandom` behaves.
let len = unsafe { backend::rand::syscalls::getrandom(buf.parts_mut(), flags)? };
// SAFETY: `getrandom` behaves.
unsafe { Ok(buf.assume_init(len)) }
}