libstd/libcore: fix various typos
This commit is contained in:
parent
e1beee4992
commit
133e91da62
@ -674,7 +674,7 @@ fn as_ref(&self) -> &str {
|
|||||||
///
|
///
|
||||||
///
|
///
|
||||||
/// However there is one case where `!` syntax can be used
|
/// However there is one case where `!` syntax can be used
|
||||||
/// before `!` is stabilized as a full-fleged type: in the position of a function’s return type.
|
/// before `!` is stabilized as a full-fledged type: in the position of a function’s return type.
|
||||||
/// Specifically, it is possible implementations for two different function pointer types:
|
/// Specifically, it is possible implementations for two different function pointer types:
|
||||||
///
|
///
|
||||||
/// ```
|
/// ```
|
||||||
|
@ -43,7 +43,7 @@ struct SipHasher24 {
|
|||||||
///
|
///
|
||||||
/// SipHash is a general-purpose hashing function: it runs at a good
|
/// SipHash is a general-purpose hashing function: it runs at a good
|
||||||
/// speed (competitive with Spooky and City) and permits strong _keyed_
|
/// speed (competitive with Spooky and City) and permits strong _keyed_
|
||||||
/// hashing. This lets you key your hashtables from a strong RNG, such as
|
/// hashing. This lets you key your hash tables from a strong RNG, such as
|
||||||
/// [`rand::os::OsRng`](https://doc.rust-lang.org/rand/rand/os/struct.OsRng.html).
|
/// [`rand::os::OsRng`](https://doc.rust-lang.org/rand/rand/os/struct.OsRng.html).
|
||||||
///
|
///
|
||||||
/// Although the SipHash algorithm is considered to be generally strong,
|
/// Although the SipHash algorithm is considered to be generally strong,
|
||||||
|
@ -15,7 +15,7 @@
|
|||||||
//!
|
//!
|
||||||
//! If an intrinsic is supposed to be used from a `const fn` with a `rustc_const_stable` attribute,
|
//! If an intrinsic is supposed to be used from a `const fn` with a `rustc_const_stable` attribute,
|
||||||
//! the intrinsic's attribute must be `rustc_const_stable`, too. Such a change should not be done
|
//! the intrinsic's attribute must be `rustc_const_stable`, too. Such a change should not be done
|
||||||
//! without T-lang consulation, because it bakes a feature into the language that cannot be
|
//! without T-lang consultation, because it bakes a feature into the language that cannot be
|
||||||
//! replicated in user code without compiler support.
|
//! replicated in user code without compiler support.
|
||||||
//!
|
//!
|
||||||
//! # Volatiles
|
//! # Volatiles
|
||||||
@ -993,7 +993,7 @@
|
|||||||
/// [`std::mem::align_of`](../../std/mem/fn.align_of.html).
|
/// [`std::mem::align_of`](../../std/mem/fn.align_of.html).
|
||||||
#[rustc_const_stable(feature = "const_min_align_of", since = "1.40.0")]
|
#[rustc_const_stable(feature = "const_min_align_of", since = "1.40.0")]
|
||||||
pub fn min_align_of<T>() -> usize;
|
pub fn min_align_of<T>() -> usize;
|
||||||
/// The prefered alignment of a type.
|
/// The preferred alignment of a type.
|
||||||
///
|
///
|
||||||
/// This intrinsic does not have a stable counterpart.
|
/// This intrinsic does not have a stable counterpart.
|
||||||
#[rustc_const_unstable(feature = "const_pref_align_of", issue = "none")]
|
#[rustc_const_unstable(feature = "const_pref_align_of", issue = "none")]
|
||||||
@ -1245,14 +1245,14 @@
|
|||||||
/// assert!(mid <= len);
|
/// assert!(mid <= len);
|
||||||
/// unsafe {
|
/// unsafe {
|
||||||
/// let slice2 = mem::transmute::<&mut [T], &mut [T]>(slice);
|
/// let slice2 = mem::transmute::<&mut [T], &mut [T]>(slice);
|
||||||
/// // first: transmute is not typesafe; all it checks is that T and
|
/// // first: transmute is not type safe; all it checks is that T and
|
||||||
/// // U are of the same size. Second, right here, you have two
|
/// // U are of the same size. Second, right here, you have two
|
||||||
/// // mutable references pointing to the same memory.
|
/// // mutable references pointing to the same memory.
|
||||||
/// (&mut slice[0..mid], &mut slice2[mid..len])
|
/// (&mut slice[0..mid], &mut slice2[mid..len])
|
||||||
/// }
|
/// }
|
||||||
/// }
|
/// }
|
||||||
///
|
///
|
||||||
/// // This gets rid of the typesafety problems; `&mut *` will *only* give
|
/// // This gets rid of the type safety problems; `&mut *` will *only* give
|
||||||
/// // you an `&mut T` from an `&mut T` or `*mut T`.
|
/// // you an `&mut T` from an `&mut T` or `*mut T`.
|
||||||
/// fn split_at_mut_casts<T>(slice: &mut [T], mid: usize)
|
/// fn split_at_mut_casts<T>(slice: &mut [T], mid: usize)
|
||||||
/// -> (&mut [T], &mut [T]) {
|
/// -> (&mut [T], &mut [T]) {
|
||||||
|
@ -1082,7 +1082,7 @@ fn take_while<P>(self, predicate: P) -> TakeWhile<Self, P>
|
|||||||
/// let vec = iter.collect::<Vec<_>>();
|
/// let vec = iter.collect::<Vec<_>>();
|
||||||
///
|
///
|
||||||
/// // We have more elements which could fit in u32 (4, 5), but `map_while` returned `None` for `-3`
|
/// // We have more elements which could fit in u32 (4, 5), but `map_while` returned `None` for `-3`
|
||||||
/// // (as the `predicate` returned `None`) and `collect` stops at the first `None` entcountered.
|
/// // (as the `predicate` returned `None`) and `collect` stops at the first `None` encountered.
|
||||||
/// assert_eq!(vec, vec![0, 1, 2]);
|
/// assert_eq!(vec, vec![0, 1, 2]);
|
||||||
/// ```
|
/// ```
|
||||||
///
|
///
|
||||||
|
@ -1044,7 +1044,7 @@ macro_rules! stringify {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Includes a utf8-encoded file as a string.
|
/// Includes a UTF-8 encoded file as a string.
|
||||||
///
|
///
|
||||||
/// The file is located relative to the current file (similarly to how
|
/// The file is located relative to the current file (similarly to how
|
||||||
/// modules are found). The provided path is interpreted in a platform-specific
|
/// modules are found). The provided path is interpreted in a platform-specific
|
||||||
|
@ -348,11 +348,11 @@ pub fn size_of_val<T: ?Sized>(val: &T) -> usize {
|
|||||||
///
|
///
|
||||||
/// - If `T` is `Sized`, this function is always safe to call.
|
/// - If `T` is `Sized`, this function is always safe to call.
|
||||||
/// - If the unsized tail of `T` is:
|
/// - If the unsized tail of `T` is:
|
||||||
/// - a [slice], then the length of the slice tail must be an intialized
|
/// - a [slice], then the length of the slice tail must be an initialized
|
||||||
/// integer, and the size of the *entire value*
|
/// integer, and the size of the *entire value*
|
||||||
/// (dynamic tail length + statically sized prefix) must fit in `isize`.
|
/// (dynamic tail length + statically sized prefix) must fit in `isize`.
|
||||||
/// - a [trait object], then the vtable part of the pointer must point
|
/// - a [trait object], then the vtable part of the pointer must point
|
||||||
/// to a valid vtable acquired by an unsizing coersion, and the size
|
/// to a valid vtable acquired by an unsizing coercion, and the size
|
||||||
/// of the *entire value* (dynamic tail length + statically sized prefix)
|
/// of the *entire value* (dynamic tail length + statically sized prefix)
|
||||||
/// must fit in `isize`.
|
/// must fit in `isize`.
|
||||||
/// - an (unstable) [extern type], then this function is always safe to
|
/// - an (unstable) [extern type], then this function is always safe to
|
||||||
@ -483,11 +483,11 @@ pub fn align_of_val<T: ?Sized>(val: &T) -> usize {
|
|||||||
///
|
///
|
||||||
/// - If `T` is `Sized`, this function is always safe to call.
|
/// - If `T` is `Sized`, this function is always safe to call.
|
||||||
/// - If the unsized tail of `T` is:
|
/// - If the unsized tail of `T` is:
|
||||||
/// - a [slice], then the length of the slice tail must be an intialized
|
/// - a [slice], then the length of the slice tail must be an initialized
|
||||||
/// integer, and the size of the *entire value*
|
/// integer, and the size of the *entire value*
|
||||||
/// (dynamic tail length + statically sized prefix) must fit in `isize`.
|
/// (dynamic tail length + statically sized prefix) must fit in `isize`.
|
||||||
/// - a [trait object], then the vtable part of the pointer must point
|
/// - a [trait object], then the vtable part of the pointer must point
|
||||||
/// to a valid vtable acquired by an unsizing coersion, and the size
|
/// to a valid vtable acquired by an unsizing coercion, and the size
|
||||||
/// of the *entire value* (dynamic tail length + statically sized prefix)
|
/// of the *entire value* (dynamic tail length + statically sized prefix)
|
||||||
/// must fit in `isize`.
|
/// must fit in `isize`.
|
||||||
/// - an (unstable) [extern type], then this function is always safe to
|
/// - an (unstable) [extern type], then this function is always safe to
|
||||||
|
@ -687,7 +687,7 @@ pub fn to_bits(self) -> u64 {
|
|||||||
/// signaling NaNs on MIPS are quiet NaNs on x86, and vice-versa.
|
/// signaling NaNs on MIPS are quiet NaNs on x86, and vice-versa.
|
||||||
///
|
///
|
||||||
/// Rather than trying to preserve signaling-ness cross-platform, this
|
/// Rather than trying to preserve signaling-ness cross-platform, this
|
||||||
/// implementation favours preserving the exact bits. This means that
|
/// implementation favors preserving the exact bits. This means that
|
||||||
/// any payloads encoded in NaNs will be preserved even if the result of
|
/// any payloads encoded in NaNs will be preserved even if the result of
|
||||||
/// this method is sent over the network from an x86 machine to a MIPS one.
|
/// this method is sent over the network from an x86 machine to a MIPS one.
|
||||||
///
|
///
|
||||||
@ -696,7 +696,7 @@ pub fn to_bits(self) -> u64 {
|
|||||||
///
|
///
|
||||||
/// If the input isn't NaN, then there is no portability concern.
|
/// If the input isn't NaN, then there is no portability concern.
|
||||||
///
|
///
|
||||||
/// If you don't care about signalingness (very likely), then there is no
|
/// If you don't care about signaling-ness (very likely), then there is no
|
||||||
/// portability concern.
|
/// portability concern.
|
||||||
///
|
///
|
||||||
/// Note that this function is distinct from `as` casting, which attempts to
|
/// Note that this function is distinct from `as` casting, which attempts to
|
||||||
|
@ -128,7 +128,7 @@
|
|||||||
//!
|
//!
|
||||||
//! Crucially, we have to be able to rely on [`drop`] being called. If an element
|
//! Crucially, we have to be able to rely on [`drop`] being called. If an element
|
||||||
//! could be deallocated or otherwise invalidated without calling [`drop`], the pointers into it
|
//! could be deallocated or otherwise invalidated without calling [`drop`], the pointers into it
|
||||||
//! from its neighbouring elements would become invalid, which would break the data structure.
|
//! from its neighboring elements would become invalid, which would break the data structure.
|
||||||
//!
|
//!
|
||||||
//! Therefore, pinning also comes with a [`drop`]-related guarantee.
|
//! Therefore, pinning also comes with a [`drop`]-related guarantee.
|
||||||
//!
|
//!
|
||||||
|
@ -331,13 +331,13 @@ pub const fn guaranteed_eq(self, other: *const T) -> bool
|
|||||||
intrinsics::ptr_guaranteed_eq(self, other)
|
intrinsics::ptr_guaranteed_eq(self, other)
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Returns whether two pointers are guaranteed to be inequal.
|
/// Returns whether two pointers are guaranteed to be unequal.
|
||||||
///
|
///
|
||||||
/// At runtime this function behaves like `self != other`.
|
/// At runtime this function behaves like `self != other`.
|
||||||
/// However, in some contexts (e.g., compile-time evaluation),
|
/// However, in some contexts (e.g., compile-time evaluation),
|
||||||
/// it is not always possible to determine the inequality of two pointers, so this function may
|
/// it is not always possible to determine the inequality of two pointers, so this function may
|
||||||
/// spuriously return `false` for pointers that later actually turn out to be inequal.
|
/// spuriously return `false` for pointers that later actually turn out to be unequal.
|
||||||
/// But when it returns `true`, the pointers are guaranteed to be inequal.
|
/// But when it returns `true`, the pointers are guaranteed to be unequal.
|
||||||
///
|
///
|
||||||
/// This function is the mirror of [`guaranteed_eq`], but not its inverse. There are pointer
|
/// This function is the mirror of [`guaranteed_eq`], but not its inverse. There are pointer
|
||||||
/// comparisons for which both functions return `false`.
|
/// comparisons for which both functions return `false`.
|
||||||
|
@ -312,13 +312,13 @@ pub const fn guaranteed_eq(self, other: *mut T) -> bool
|
|||||||
intrinsics::ptr_guaranteed_eq(self as *const _, other as *const _)
|
intrinsics::ptr_guaranteed_eq(self as *const _, other as *const _)
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Returns whether two pointers are guaranteed to be inequal.
|
/// Returns whether two pointers are guaranteed to be unequal.
|
||||||
///
|
///
|
||||||
/// At runtime this function behaves like `self != other`.
|
/// At runtime this function behaves like `self != other`.
|
||||||
/// However, in some contexts (e.g., compile-time evaluation),
|
/// However, in some contexts (e.g., compile-time evaluation),
|
||||||
/// it is not always possible to determine the inequality of two pointers, so this function may
|
/// it is not always possible to determine the inequality of two pointers, so this function may
|
||||||
/// spuriously return `false` for pointers that later actually turn out to be inequal.
|
/// spuriously return `false` for pointers that later actually turn out to be unequal.
|
||||||
/// But when it returns `true`, the pointers are guaranteed to be inequal.
|
/// But when it returns `true`, the pointers are guaranteed to be unequal.
|
||||||
///
|
///
|
||||||
/// This function is the mirror of [`guaranteed_eq`], but not its inverse. There are pointer
|
/// This function is the mirror of [`guaranteed_eq`], but not its inverse. There are pointer
|
||||||
/// comparisons for which both functions return `false`.
|
/// comparisons for which both functions return `false`.
|
||||||
|
@ -171,7 +171,7 @@ impl<T> NonNull<[T]> {
|
|||||||
/// assert_eq!(unsafe { slice.as_ref()[2] }, 7);
|
/// assert_eq!(unsafe { slice.as_ref()[2] }, 7);
|
||||||
/// ```
|
/// ```
|
||||||
///
|
///
|
||||||
/// (Note that this example artifically demonstrates a use of this method,
|
/// (Note that this example artificially demonstrates a use of this method,
|
||||||
/// but `let slice = NonNull::from(&x[..]);` would be a better way to write code like this.)
|
/// but `let slice = NonNull::from(&x[..]);` would be a better way to write code like this.)
|
||||||
#[unstable(feature = "nonnull_slice_from_raw_parts", issue = "71941")]
|
#[unstable(feature = "nonnull_slice_from_raw_parts", issue = "71941")]
|
||||||
#[rustc_const_unstable(feature = "const_nonnull_slice_from_raw_parts", issue = "71941")]
|
#[rustc_const_unstable(feature = "const_nonnull_slice_from_raw_parts", issue = "71941")]
|
||||||
|
@ -1500,7 +1500,7 @@ fn test_float_bits_conv() {
|
|||||||
assert_approx_eq!(f32::from_bits(0x44a72000), 1337.0);
|
assert_approx_eq!(f32::from_bits(0x44a72000), 1337.0);
|
||||||
assert_approx_eq!(f32::from_bits(0xc1640000), -14.25);
|
assert_approx_eq!(f32::from_bits(0xc1640000), -14.25);
|
||||||
|
|
||||||
// Check that NaNs roundtrip their bits regardless of signalingness
|
// Check that NaNs roundtrip their bits regardless of signaling-ness
|
||||||
// 0xA is 0b1010; 0x5 is 0b0101 -- so these two together clobbers all the mantissa bits
|
// 0xA is 0b1010; 0x5 is 0b0101 -- so these two together clobbers all the mantissa bits
|
||||||
let masked_nan1 = f32::NAN.to_bits() ^ 0x002A_AAAA;
|
let masked_nan1 = f32::NAN.to_bits() ^ 0x002A_AAAA;
|
||||||
let masked_nan2 = f32::NAN.to_bits() ^ 0x0055_5555;
|
let masked_nan2 = f32::NAN.to_bits() ^ 0x0055_5555;
|
||||||
|
@ -1523,7 +1523,7 @@ fn test_float_bits_conv() {
|
|||||||
assert_approx_eq!(f64::from_bits(0x4094e40000000000), 1337.0);
|
assert_approx_eq!(f64::from_bits(0x4094e40000000000), 1337.0);
|
||||||
assert_approx_eq!(f64::from_bits(0xc02c800000000000), -14.25);
|
assert_approx_eq!(f64::from_bits(0xc02c800000000000), -14.25);
|
||||||
|
|
||||||
// Check that NaNs roundtrip their bits regardless of signalingness
|
// Check that NaNs roundtrip their bits regardless of signaling-ness
|
||||||
// 0xA is 0b1010; 0x5 is 0b0101 -- so these two together clobbers all the mantissa bits
|
// 0xA is 0b1010; 0x5 is 0b0101 -- so these two together clobbers all the mantissa bits
|
||||||
let masked_nan1 = f64::NAN.to_bits() ^ 0x000A_AAAA_AAAA_AAAA;
|
let masked_nan1 = f64::NAN.to_bits() ^ 0x000A_AAAA_AAAA_AAAA;
|
||||||
let masked_nan2 = f64::NAN.to_bits() ^ 0x0005_5555_5555_5555;
|
let masked_nan2 = f64::NAN.to_bits() ^ 0x0005_5555_5555_5555;
|
||||||
|
@ -285,7 +285,7 @@ pub trait MetadataExt {
|
|||||||
/// ```
|
/// ```
|
||||||
#[stable(feature = "metadata_ext2", since = "1.8.0")]
|
#[stable(feature = "metadata_ext2", since = "1.8.0")]
|
||||||
fn st_ctime_nsec(&self) -> i64;
|
fn st_ctime_nsec(&self) -> i64;
|
||||||
/// Returns the "preferred" blocksize for efficient filesystem I/O.
|
/// Returns the "preferred" block size for efficient filesystem I/O.
|
||||||
///
|
///
|
||||||
/// # Examples
|
/// # Examples
|
||||||
///
|
///
|
||||||
|
@ -289,7 +289,7 @@ pub trait MetadataExt {
|
|||||||
/// ```
|
/// ```
|
||||||
#[stable(feature = "metadata_ext2", since = "1.8.0")]
|
#[stable(feature = "metadata_ext2", since = "1.8.0")]
|
||||||
fn st_ctime_nsec(&self) -> i64;
|
fn st_ctime_nsec(&self) -> i64;
|
||||||
/// Returns the "preferred" blocksize for efficient filesystem I/O.
|
/// Returns the "preferred" block size for efficient filesystem I/O.
|
||||||
///
|
///
|
||||||
/// # Examples
|
/// # Examples
|
||||||
///
|
///
|
||||||
|
@ -19,7 +19,7 @@ pub fn raw(&self) -> Fd {
|
|||||||
self.fd
|
self.fd
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Extracts the actual filedescriptor without closing it.
|
/// Extracts the actual file descriptor without closing it.
|
||||||
pub fn into_raw(self) -> Fd {
|
pub fn into_raw(self) -> Fd {
|
||||||
let fd = self.fd;
|
let fd = self.fd;
|
||||||
mem::forget(self);
|
mem::forget(self);
|
||||||
|
@ -624,7 +624,7 @@ pub trait MetadataExt {
|
|||||||
/// ```
|
/// ```
|
||||||
#[stable(feature = "metadata_ext", since = "1.1.0")]
|
#[stable(feature = "metadata_ext", since = "1.1.0")]
|
||||||
fn ctime_nsec(&self) -> i64;
|
fn ctime_nsec(&self) -> i64;
|
||||||
/// Returns the blocksize for filesystem I/O.
|
/// Returns the block size for filesystem I/O.
|
||||||
///
|
///
|
||||||
/// # Examples
|
/// # Examples
|
||||||
///
|
///
|
||||||
@ -635,7 +635,7 @@ pub trait MetadataExt {
|
|||||||
///
|
///
|
||||||
/// fn main() -> io::Result<()> {
|
/// fn main() -> io::Result<()> {
|
||||||
/// let meta = fs::metadata("some_file")?;
|
/// let meta = fs::metadata("some_file")?;
|
||||||
/// let blocksize = meta.blksize();
|
/// let block_size = meta.blksize();
|
||||||
/// Ok(())
|
/// Ok(())
|
||||||
/// }
|
/// }
|
||||||
/// ```
|
/// ```
|
||||||
|
@ -29,7 +29,7 @@ pub fn raw(&self) -> c_int {
|
|||||||
self.fd
|
self.fd
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Extracts the actual filedescriptor without closing it.
|
/// Extracts the actual file descriptor without closing it.
|
||||||
pub fn into_raw(self) -> c_int {
|
pub fn into_raw(self) -> c_int {
|
||||||
let fd = self.fd;
|
let fd = self.fd;
|
||||||
mem::forget(self);
|
mem::forget(self);
|
||||||
|
@ -597,14 +597,14 @@ fn open_at(fd: &WasiFd, path: &Path, opts: &OpenOptions) -> io::Result<File> {
|
|||||||
///
|
///
|
||||||
/// WASI has no fundamental capability to do this. All syscalls and operations
|
/// WASI has no fundamental capability to do this. All syscalls and operations
|
||||||
/// are relative to already-open file descriptors. The C library, however,
|
/// are relative to already-open file descriptors. The C library, however,
|
||||||
/// manages a map of preopened file descriptors to their path, and then the C
|
/// manages a map of pre-opened file descriptors to their path, and then the C
|
||||||
/// library provides an API to look at this. In other words, when you want to
|
/// library provides an API to look at this. In other words, when you want to
|
||||||
/// open a path `p`, you have to find a previously opened file descriptor in a
|
/// open a path `p`, you have to find a previously opened file descriptor in a
|
||||||
/// global table and then see if `p` is relative to that file descriptor.
|
/// global table and then see if `p` is relative to that file descriptor.
|
||||||
///
|
///
|
||||||
/// This function, if successful, will return two items:
|
/// This function, if successful, will return two items:
|
||||||
///
|
///
|
||||||
/// * The first is a `ManuallyDrop<WasiFd>`. This represents a preopened file
|
/// * The first is a `ManuallyDrop<WasiFd>`. This represents a pre-opened file
|
||||||
/// descriptor which we don't have ownership of, but we can use. You shouldn't
|
/// descriptor which we don't have ownership of, but we can use. You shouldn't
|
||||||
/// actually drop the `fd`.
|
/// actually drop the `fd`.
|
||||||
///
|
///
|
||||||
@ -619,7 +619,7 @@ fn open_at(fd: &WasiFd, path: &Path, opts: &OpenOptions) -> io::Result<File> {
|
|||||||
/// appropriate rights for performing `rights` actions.
|
/// appropriate rights for performing `rights` actions.
|
||||||
///
|
///
|
||||||
/// Note that this can fail if `p` doesn't look like it can be opened relative
|
/// Note that this can fail if `p` doesn't look like it can be opened relative
|
||||||
/// to any preopened file descriptor.
|
/// to any pre-opened file descriptor.
|
||||||
fn open_parent(p: &Path) -> io::Result<(ManuallyDrop<WasiFd>, PathBuf)> {
|
fn open_parent(p: &Path) -> io::Result<(ManuallyDrop<WasiFd>, PathBuf)> {
|
||||||
let p = CString::new(p.as_os_str().as_bytes())?;
|
let p = CString::new(p.as_os_str().as_bytes())?;
|
||||||
unsafe {
|
unsafe {
|
||||||
@ -627,7 +627,7 @@ fn open_parent(p: &Path) -> io::Result<(ManuallyDrop<WasiFd>, PathBuf)> {
|
|||||||
let fd = __wasilibc_find_relpath(p.as_ptr(), &mut ret);
|
let fd = __wasilibc_find_relpath(p.as_ptr(), &mut ret);
|
||||||
if fd == -1 {
|
if fd == -1 {
|
||||||
let msg = format!(
|
let msg = format!(
|
||||||
"failed to find a preopened file descriptor \
|
"failed to find a pre-opened file descriptor \
|
||||||
through which {:?} could be opened",
|
through which {:?} could be opened",
|
||||||
p
|
p
|
||||||
);
|
);
|
||||||
|
Loading…
Reference in New Issue
Block a user