pub struct OsString { /* private fields */ }Expand description
A type that can represent owned, mutable platform-native strings, but is cheaply inter-convertible with Rust strings.
The need for this type arises from the fact that:
-
On Unix systems, strings are often arbitrary sequences of non-zero bytes, in many cases interpreted as UTF-8.
-
On Windows, strings are often arbitrary sequences of non-zero 16-bit values, interpreted as UTF-16 when it is valid to do so.
-
In Rust, strings are always valid UTF-8, which may contain zeros.
OsString and OsStr bridge this gap by simultaneously representing Rust
and platform-native string values, and in particular allowing a Rust string
to be converted into an “OS” string with no cost if possible. A consequence
of this is that OsString instances are not NUL terminated; in order
to pass to e.g., Unix system call, you should create a CStr.
OsString is to &OsStr as String is to &str: the former
in each pair are owned strings; the latter are borrowed
references.
Note, OsString and OsStr internally do not necessarily hold strings in
the form native to the platform; While on Unix, strings are stored as a
sequence of 8-bit values, on Windows, where strings are 16-bit value based
as just discussed, strings are also actually stored as a sequence of 8-bit
values, encoded in a less-strict variant of UTF-8. This is useful to
understand when handling capacity and length values.
Capacity of OsString
Capacity uses units of UTF-8 bytes for OS strings which were created from valid unicode, and
uses units of bytes in an unspecified encoding for other contents. On a given target, all
OsString and OsStr values use the same units for capacity, so the following will work:
use std::ffi::{OsStr, OsString};
fn concat_os_strings(a: &OsStr, b: &OsStr) -> OsString {
let mut ret = OsString::with_capacity(a.len() + b.len()); // This will allocate
ret.push(a); // This will not allocate further
ret.push(b); // This will not allocate further
ret
}Creating an OsString
From a Rust string: OsString implements
From<String>, so you can use my_string.into() to
create an OsString from a normal Rust string.
From slices: Just like you can start with an empty Rust
String and then String::push_str some &str
sub-string slices into it, you can create an empty OsString with
the OsString::new method and then push string slices into it with the
OsString::push method.
Extracting a borrowed reference to the whole OS string
You can use the OsString::as_os_str method to get an &OsStr from
an OsString; this is effectively a borrowed reference to the
whole string.
Conversions
See the module’s toplevel documentation about conversions for a discussion on
the traits which OsString implements for conversions from/to native representations.
Implementations§
source§impl OsString
impl OsString
1.74.0 · sourcepub unsafe fn from_encoded_bytes_unchecked(bytes: Vec<u8>) -> OsString
pub unsafe fn from_encoded_bytes_unchecked(bytes: Vec<u8>) -> OsString
Converts bytes to an OsString without checking that the bytes contains
valid OsStr-encoded data.
The byte encoding is an unspecified, platform-specific, self-synchronizing superset of UTF-8. By being a self-synchronizing superset of UTF-8, this encoding is also a superset of 7-bit ASCII.
See the module’s toplevel documentation about conversions for safe, cross-platform conversions from/to native representations.
Safety
As the encoding is unspecified, callers must pass in bytes that originated as a mixture of
validated UTF-8 and bytes from OsStr::as_encoded_bytes from within the same rust version
built for the same target platform. For example, reconstructing an OsString from bytes sent
over the network or stored in a file will likely violate these safety rules.
Due to the encoding being self-synchronizing, the bytes from OsStr::as_encoded_bytes can be
split either immediately before or immediately after any valid non-empty UTF-8 substring.
Example
use std::ffi::OsStr;
let os_str = OsStr::new("Mary had a little lamb");
let bytes = os_str.as_encoded_bytes();
let words = bytes.split(|b| *b == b' ');
let words: Vec<&OsStr> = words.map(|word| {
// SAFETY:
// - Each `word` only contains content that originated from `OsStr::as_encoded_bytes`
// - Only split with ASCII whitespace which is a non-empty UTF-8 substring
unsafe { OsStr::from_encoded_bytes_unchecked(word) }
}).collect();1.74.0 · sourcepub fn into_encoded_bytes(self) -> Vec<u8> ⓘ
pub fn into_encoded_bytes(self) -> Vec<u8> ⓘ
Converts the OsString into a byte slice. To convert the byte slice back into an
OsString, use the OsStr::from_encoded_bytes_unchecked function.
The byte encoding is an unspecified, platform-specific, self-synchronizing superset of UTF-8. By being a self-synchronizing superset of UTF-8, this encoding is also a superset of 7-bit ASCII.
Note: As the encoding is unspecified, any sub-slice of bytes that is not valid UTF-8 should
be treated as opaque and only comparable within the same rust version built for the same
target platform. For example, sending the bytes over the network or storing it in a file
will likely result in incompatible data. See OsString for more encoding details
and std::ffi for platform-specific, specified conversions.
sourcepub fn into_string(self) -> Result<String, OsString>
pub fn into_string(self) -> Result<String, OsString>
1.9.0 · sourcepub fn with_capacity(capacity: usize) -> OsString
pub fn with_capacity(capacity: usize) -> OsString
Creates a new OsString with at least the given capacity.
The string will be able to hold at least capacity length units of other
OS strings without reallocating. This method is allowed to allocate for
more units than capacity. If capacity is 0, the string will not
allocate.
See the main OsString documentation information about encoding and capacity units.
Examples
use std::ffi::OsString;
let mut os_string = OsString::with_capacity(10);
let capacity = os_string.capacity();
// This push is done without reallocating
os_string.push("foo");
assert_eq!(capacity, os_string.capacity());1.9.0 · sourcepub fn clear(&mut self)
pub fn clear(&mut self)
Truncates the OsString to zero length.
Examples
use std::ffi::OsString;
let mut os_string = OsString::from("foo");
assert_eq!(&os_string, "foo");
os_string.clear();
assert_eq!(&os_string, "");1.9.0 · sourcepub fn capacity(&self) -> usize
pub fn capacity(&self) -> usize
Returns the capacity this OsString can hold without reallocating.
See the main OsString documentation information about encoding and capacity units.
Examples
use std::ffi::OsString;
let os_string = OsString::with_capacity(10);
assert!(os_string.capacity() >= 10);1.9.0 · sourcepub fn reserve(&mut self, additional: usize)
pub fn reserve(&mut self, additional: usize)
Reserves capacity for at least additional more capacity to be inserted
in the given OsString. Does nothing if the capacity is
already sufficient.
The collection may reserve more space to speculatively avoid frequent reallocations.
See the main OsString documentation information about encoding and capacity units.
Examples
use std::ffi::OsString;
let mut s = OsString::new();
s.reserve(10);
assert!(s.capacity() >= 10);1.63.0 · sourcepub fn try_reserve(&mut self, additional: usize) -> Result<(), TryReserveError>
pub fn try_reserve(&mut self, additional: usize) -> Result<(), TryReserveError>
Tries to reserve capacity for at least additional more length units
in the given OsString. The string may reserve more space to speculatively avoid
frequent reallocations. After calling try_reserve, capacity will be
greater than or equal to self.len() + additional if it returns Ok(()).
Does nothing if capacity is already sufficient. This method preserves
the contents even if an error occurs.
See the main OsString documentation information about encoding and capacity units.
Errors
If the capacity overflows, or the allocator reports a failure, then an error is returned.
Examples
use std::ffi::{OsStr, OsString};
use std::collections::TryReserveError;
fn process_data(data: &str) -> Result<OsString, TryReserveError> {
let mut s = OsString::new();
// Pre-reserve the memory, exiting if we can't
s.try_reserve(OsStr::new(data).len())?;
// Now we know this can't OOM in the middle of our complex work
s.push(data);
Ok(s)
}1.9.0 · sourcepub fn reserve_exact(&mut self, additional: usize)
pub fn reserve_exact(&mut self, additional: usize)
Reserves the minimum capacity for at least additional more capacity to
be inserted in the given OsString. Does nothing if the capacity is
already sufficient.
Note that the allocator may give the collection more space than it
requests. Therefore, capacity can not be relied upon to be precisely
minimal. Prefer reserve if future insertions are expected.
See the main OsString documentation information about encoding and capacity units.
Examples
use std::ffi::OsString;
let mut s = OsString::new();
s.reserve_exact(10);
assert!(s.capacity() >= 10);1.63.0 · sourcepub fn try_reserve_exact(
&mut self,
additional: usize
) -> Result<(), TryReserveError>
pub fn try_reserve_exact( &mut self, additional: usize ) -> Result<(), TryReserveError>
Tries to reserve the minimum capacity for at least additional
more length units in the given OsString. After calling
try_reserve_exact, capacity will be greater than or equal to
self.len() + additional if it returns Ok(()).
Does nothing if the capacity is already sufficient.
Note that the allocator may give the OsString more space than it
requests. Therefore, capacity can not be relied upon to be precisely
minimal. Prefer try_reserve if future insertions are expected.
See the main OsString documentation information about encoding and capacity units.
Errors
If the capacity overflows, or the allocator reports a failure, then an error is returned.
Examples
use std::ffi::{OsStr, OsString};
use std::collections::TryReserveError;
fn process_data(data: &str) -> Result<OsString, TryReserveError> {
let mut s = OsString::new();
// Pre-reserve the memory, exiting if we can't
s.try_reserve_exact(OsStr::new(data).len())?;
// Now we know this can't OOM in the middle of our complex work
s.push(data);
Ok(s)
}1.19.0 · sourcepub fn shrink_to_fit(&mut self)
pub fn shrink_to_fit(&mut self)
Shrinks the capacity of the OsString to match its length.
See the main OsString documentation information about encoding and capacity units.
Examples
use std::ffi::OsString;
let mut s = OsString::from("foo");
s.reserve(100);
assert!(s.capacity() >= 100);
s.shrink_to_fit();
assert_eq!(3, s.capacity());1.56.0 · sourcepub fn shrink_to(&mut self, min_capacity: usize)
pub fn shrink_to(&mut self, min_capacity: usize)
Shrinks the capacity of the OsString with a lower bound.
The capacity will remain at least as large as both the length and the supplied value.
If the current capacity is less than the lower limit, this is a no-op.
See the main OsString documentation information about encoding and capacity units.
Examples
use std::ffi::OsString;
let mut s = OsString::from("foo");
s.reserve(100);
assert!(s.capacity() >= 100);
s.shrink_to(10);
assert!(s.capacity() >= 10);
s.shrink_to(0);
assert!(s.capacity() >= 3);Methods from Deref<Target = OsStr>§
sourcepub fn to_string_lossy(&self) -> Cow<'_, str>
pub fn to_string_lossy(&self) -> Cow<'_, str>
Converts an OsStr to a Cow<str>.
Any non-Unicode sequences are replaced with
U+FFFD REPLACEMENT CHARACTER.
Examples
Calling to_string_lossy on an OsStr with invalid unicode:
// Note, due to differences in how Unix and Windows represent strings,
// we are forced to complicate this example, setting up example `OsStr`s
// with different source data and via different platform extensions.
// Understand that in reality you could end up with such example invalid
// sequences simply through collecting user command line arguments, for
// example.
#[cfg(unix)] {
use std::ffi::OsStr;
use std::os::unix::ffi::OsStrExt;
// Here, the values 0x66 and 0x6f correspond to 'f' and 'o'
// respectively. The value 0x80 is a lone continuation byte, invalid
// in a UTF-8 sequence.
let source = [0x66, 0x6f, 0x80, 0x6f];
let os_str = OsStr::from_bytes(&source[..]);
assert_eq!(os_str.to_string_lossy(), "fo�o");
}
#[cfg(windows)] {
use std::ffi::OsString;
use std::os::windows::prelude::*;
// Here the values 0x0066 and 0x006f correspond to 'f' and 'o'
// respectively. The value 0xD800 is a lone surrogate half, invalid
// in a UTF-16 sequence.
let source = [0x0066, 0x006f, 0xD800, 0x006f];
let os_string = OsString::from_wide(&source[..]);
let os_str = os_string.as_os_str();
assert_eq!(os_str.to_string_lossy(), "fo�o");
}sourcepub fn to_os_string(&self) -> OsString
pub fn to_os_string(&self) -> OsString
1.9.0 · sourcepub fn is_empty(&self) -> bool
pub fn is_empty(&self) -> bool
Checks whether the OsStr is empty.
Examples
use std::ffi::OsStr;
let os_str = OsStr::new("");
assert!(os_str.is_empty());
let os_str = OsStr::new("foo");
assert!(!os_str.is_empty());1.9.0 · sourcepub fn len(&self) -> usize
pub fn len(&self) -> usize
Returns the length of this OsStr.
Note that this does not return the number of bytes in the string in OS string form.
The length returned is that of the underlying storage used by OsStr.
As discussed in the OsString introduction, OsString and OsStr
store strings in a form best suited for cheap inter-conversion between
native-platform and Rust string forms, which may differ significantly
from both of them, including in storage size and encoding.
This number is simply useful for passing to other methods, like
OsString::with_capacity to avoid reallocations.
See the main OsString documentation information about encoding and capacity units.
Examples
use std::ffi::OsStr;
let os_str = OsStr::new("");
assert_eq!(os_str.len(), 0);
let os_str = OsStr::new("foo");
assert_eq!(os_str.len(), 3);1.74.0 · sourcepub fn as_encoded_bytes(&self) -> &[u8] ⓘ
pub fn as_encoded_bytes(&self) -> &[u8] ⓘ
Converts an OS string slice to a byte slice. To convert the byte slice back into an OS
string slice, use the OsStr::from_encoded_bytes_unchecked function.
The byte encoding is an unspecified, platform-specific, self-synchronizing superset of UTF-8. By being a self-synchronizing superset of UTF-8, this encoding is also a superset of 7-bit ASCII.
Note: As the encoding is unspecified, any sub-slice of bytes that is not valid UTF-8 should
be treated as opaque and only comparable within the same rust version built for the same
target platform. For example, sending the slice over the network or storing it in a file
will likely result in incompatible byte slices. See OsString for more encoding details
and std::ffi for platform-specific, specified conversions.
1.53.0 · sourcepub fn make_ascii_lowercase(&mut self)
pub fn make_ascii_lowercase(&mut self)
Converts this string to its ASCII lower case equivalent in-place.
ASCII letters ‘A’ to ‘Z’ are mapped to ‘a’ to ‘z’, but non-ASCII letters are unchanged.
To return a new lowercased value without modifying the existing one, use
OsStr::to_ascii_lowercase.
Examples
use std::ffi::OsString;
let mut s = OsString::from("GRÜßE, JÜRGEN ❤");
s.make_ascii_lowercase();
assert_eq!("grÜße, jÜrgen ❤", s);1.53.0 · sourcepub fn make_ascii_uppercase(&mut self)
pub fn make_ascii_uppercase(&mut self)
Converts this string to its ASCII upper case equivalent in-place.
ASCII letters ‘a’ to ‘z’ are mapped to ‘A’ to ‘Z’, but non-ASCII letters are unchanged.
To return a new uppercased value without modifying the existing one, use
OsStr::to_ascii_uppercase.
Examples
use std::ffi::OsString;
let mut s = OsString::from("Grüße, Jürgen ❤");
s.make_ascii_uppercase();
assert_eq!("GRüßE, JüRGEN ❤", s);1.53.0 · sourcepub fn to_ascii_lowercase(&self) -> OsString
pub fn to_ascii_lowercase(&self) -> OsString
Returns a copy of this string where each character is mapped to its ASCII lower case equivalent.
ASCII letters ‘A’ to ‘Z’ are mapped to ‘a’ to ‘z’, but non-ASCII letters are unchanged.
To lowercase the value in-place, use OsStr::make_ascii_lowercase.
Examples
use std::ffi::OsString;
let s = OsString::from("Grüße, Jürgen ❤");
assert_eq!("grüße, jürgen ❤", s.to_ascii_lowercase());1.53.0 · sourcepub fn to_ascii_uppercase(&self) -> OsString
pub fn to_ascii_uppercase(&self) -> OsString
Returns a copy of this string where each character is mapped to its ASCII upper case equivalent.
ASCII letters ‘a’ to ‘z’ are mapped to ‘A’ to ‘Z’, but non-ASCII letters are unchanged.
To uppercase the value in-place, use OsStr::make_ascii_uppercase.
Examples
use std::ffi::OsString;
let s = OsString::from("Grüße, Jürgen ❤");
assert_eq!("GRüßE, JüRGEN ❤", s.to_ascii_uppercase());1.53.0 · sourcepub fn is_ascii(&self) -> bool
pub fn is_ascii(&self) -> bool
Checks if all characters in this string are within the ASCII range.
Examples
use std::ffi::OsString;
let ascii = OsString::from("hello!\n");
let non_ascii = OsString::from("Grüße, Jürgen ❤");
assert!(ascii.is_ascii());
assert!(!non_ascii.is_ascii());1.53.0 · sourcepub fn eq_ignore_ascii_case<S>(&self, other: S) -> boolwhere
S: AsRef<OsStr>,
pub fn eq_ignore_ascii_case<S>(&self, other: S) -> boolwhere S: AsRef<OsStr>,
Checks that two strings are an ASCII case-insensitive match.
Same as to_ascii_lowercase(a) == to_ascii_lowercase(b),
but without allocating and copying temporaries.
Examples
use std::ffi::OsString;
assert!(OsString::from("Ferris").eq_ignore_ascii_case("FERRIS"));
assert!(OsString::from("Ferrös").eq_ignore_ascii_case("FERRöS"));
assert!(!OsString::from("Ferrös").eq_ignore_ascii_case("FERRÖS"));Trait Implementations§
1.52.0 · source§impl<'a> Extend<&'a OsStr> for OsString
impl<'a> Extend<&'a OsStr> for OsString
source§fn extend<T>(&mut self, iter: T)where
T: IntoIterator<Item = &'a OsStr>,
fn extend<T>(&mut self, iter: T)where T: IntoIterator<Item = &'a OsStr>,
source§fn extend_one(&mut self, item: A)
fn extend_one(&mut self, item: A)
extend_one)source§fn extend_reserve(&mut self, additional: usize)
fn extend_reserve(&mut self, additional: usize)
extend_one)1.52.0 · source§impl<'a> Extend<Cow<'a, OsStr>> for OsString
impl<'a> Extend<Cow<'a, OsStr>> for OsString
source§fn extend<T>(&mut self, iter: T)where
T: IntoIterator<Item = Cow<'a, OsStr>>,
fn extend<T>(&mut self, iter: T)where T: IntoIterator<Item = Cow<'a, OsStr>>,
source§fn extend_one(&mut self, item: A)
fn extend_one(&mut self, item: A)
extend_one)source§fn extend_reserve(&mut self, additional: usize)
fn extend_reserve(&mut self, additional: usize)
extend_one)1.52.0 · source§impl Extend<OsString> for OsString
impl Extend<OsString> for OsString
source§fn extend<T>(&mut self, iter: T)where
T: IntoIterator<Item = OsString>,
fn extend<T>(&mut self, iter: T)where T: IntoIterator<Item = OsString>,
source§fn extend_one(&mut self, item: A)
fn extend_one(&mut self, item: A)
extend_one)source§fn extend_reserve(&mut self, additional: usize)
fn extend_reserve(&mut self, additional: usize)
extend_one)1.52.0 · source§impl<'a> FromIterator<&'a OsStr> for OsString
impl<'a> FromIterator<&'a OsStr> for OsString
1.52.0 · source§impl FromIterator<OsString> for OsString
impl FromIterator<OsString> for OsString
source§impl Ord for OsString
impl Ord for OsString
source§impl OsStringExt for OsString
impl OsStringExt for OsString
1.8.0 · source§impl<'a, 'b> PartialEq<Cow<'a, OsStr>> for OsString
impl<'a, 'b> PartialEq<Cow<'a, OsStr>> for OsString
1.8.0 · source§impl<'a> PartialEq<Cow<'a, Path>> for OsString
impl<'a> PartialEq<Cow<'a, Path>> for OsString
1.8.0 · source§impl<'a, 'b> PartialOrd<&'a OsStr> for OsString
impl<'a, 'b> PartialOrd<&'a OsStr> for OsString
1.8.0 · source§impl<'a> PartialOrd<&'a Path> for OsString
impl<'a> PartialOrd<&'a Path> for OsString
1.8.0 · source§impl<'a, 'b> PartialOrd<Cow<'a, OsStr>> for OsString
impl<'a, 'b> PartialOrd<Cow<'a, OsStr>> for OsString
1.8.0 · source§impl<'a> PartialOrd<Cow<'a, Path>> for OsString
impl<'a> PartialOrd<Cow<'a, Path>> for OsString
1.8.0 · source§impl<'a, 'b> PartialOrd<OsStr> for OsString
impl<'a, 'b> PartialOrd<OsStr> for OsString
1.8.0 · source§impl<'a, 'b> PartialOrd<OsString> for &'a OsStr
impl<'a, 'b> PartialOrd<OsString> for &'a OsStr
1.8.0 · source§impl<'a> PartialOrd<OsString> for &'a Path
impl<'a> PartialOrd<OsString> for &'a Path
1.8.0 · source§impl<'a, 'b> PartialOrd<OsString> for Cow<'a, OsStr>
impl<'a, 'b> PartialOrd<OsString> for Cow<'a, OsStr>
1.8.0 · source§impl<'a> PartialOrd<OsString> for Cow<'a, Path>
impl<'a> PartialOrd<OsString> for Cow<'a, Path>
1.8.0 · source§impl<'a, 'b> PartialOrd<OsString> for OsStr
impl<'a, 'b> PartialOrd<OsString> for OsStr
1.8.0 · source§impl PartialOrd<OsString> for Path
impl PartialOrd<OsString> for Path
1.8.0 · source§impl PartialOrd<OsString> for PathBuf
impl PartialOrd<OsString> for PathBuf
1.8.0 · source§impl PartialOrd<Path> for OsString
impl PartialOrd<Path> for OsString
1.8.0 · source§impl PartialOrd<PathBuf> for OsString
impl PartialOrd<PathBuf> for OsString
source§impl PartialOrd<str> for OsString
impl PartialOrd<str> for OsString
source§impl PartialOrd for OsString
impl PartialOrd for OsString
source§fn le(&self, other: &OsString) -> bool
fn le(&self, other: &OsString) -> bool
self and other) and is used by the <=
operator. Read more1.64.0 · source§impl Write for OsString
impl Write for OsString
impl Eq for OsString
Auto Trait Implementations§
impl RefUnwindSafe for OsString
impl Send for OsString
impl Sync for OsString
impl Unpin for OsString
impl UnwindSafe for OsString
Blanket Implementations§
source§impl<T> Also for T
impl<T> Also for T
source§impl<T> AnyExt for Twhere
T: Any,
impl<T> AnyExt for Twhere T: Any,
source§fn type_name(&self) -> &'static str
fn type_name(&self) -> &'static str
any only.self. Read moresource§fn as_any_ref(&self) -> &dyn Anywhere
Self: Sized,
fn as_any_ref(&self) -> &dyn Anywhere Self: Sized,
any only.source§fn as_any_mut(&mut self) -> &mut dyn Anywhere
Self: Sized,
fn as_any_mut(&mut self) -> &mut dyn Anywhere Self: Sized,
any only.source§impl<T, Res> Apply<Res> for Twhere
T: ?Sized,
impl<T, Res> Apply<Res> for Twhere T: ?Sized,
source§fn apply<F: FnOnce(Self) -> Res>(self, f: F) -> Reswhere
Self: Sized,
fn apply<F: FnOnce(Self) -> Res>(self, f: F) -> Reswhere Self: Sized,
result only.source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
source§impl<T> CheckedAs for T
impl<T> CheckedAs for T
source§fn checked_as<Dst>(self) -> Option<Dst>where
T: CheckedCast<Dst>,
fn checked_as<Dst>(self) -> Option<Dst>where T: CheckedCast<Dst>,
source§impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere
Src: CheckedCast<Dst>,
impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere Src: CheckedCast<Dst>,
source§fn checked_cast_from(src: Src) -> Option<Dst>
fn checked_cast_from(src: Src) -> Option<Dst>
§impl<Q, K> Equivalent<K> for Qwhere
Q: Eq + ?Sized,
K: Borrow<Q> + ?Sized,
impl<Q, K> Equivalent<K> for Qwhere Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
source§impl<T> Mem for Twhere
T: ?Sized,
impl<T> Mem for Twhere T: ?Sized,
source§const NEEDS_DROP: bool = _
const NEEDS_DROP: bool = _
mem only.source§fn mem_needs_drop(&self) -> bool
fn mem_needs_drop(&self) -> bool
mem only.true if dropping values of this type matters.source§fn mem_drop(self)where
Self: Sized,
fn mem_drop(self)where Self: Sized,
mem only.self by running its destructor.source§fn mem_forget(self)where
Self: Sized,
fn mem_forget(self)where Self: Sized,
mem only.self without running its destructor.source§fn mem_replace(&mut self, other: Self) -> Selfwhere
Self: Sized,
fn mem_replace(&mut self, other: Self) -> Selfwhere Self: Sized,
mem only.self with other, returning the previous value of self.source§fn mem_take(&mut self) -> Selfwhere
Self: Default,
fn mem_take(&mut self) -> Selfwhere Self: Default,
mem only.self with its default value, returning the previous value of self.source§fn mem_swap(&mut self, other: &mut Self)where
Self: Sized,
fn mem_swap(&mut self, other: &mut Self)where Self: Sized,
mem only.self and other without deinitializing either one.source§impl<T> OverflowingAs for T
impl<T> OverflowingAs for T
source§fn overflowing_as<Dst>(self) -> (Dst, bool)where
T: OverflowingCast<Dst>,
fn overflowing_as<Dst>(self) -> (Dst, bool)where T: OverflowingCast<Dst>,
source§impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere
Src: OverflowingCast<Dst>,
impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere Src: OverflowingCast<Dst>,
source§fn overflowing_cast_from(src: Src) -> (Dst, bool)
fn overflowing_cast_from(src: Src) -> (Dst, bool)
source§impl<T> SaturatingAs for T
impl<T> SaturatingAs for T
source§fn saturating_as<Dst>(self) -> Dstwhere
T: SaturatingCast<Dst>,
fn saturating_as<Dst>(self) -> Dstwhere T: SaturatingCast<Dst>,
source§impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere
Src: SaturatingCast<Dst>,
impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere Src: SaturatingCast<Dst>,
source§fn saturating_cast_from(src: Src) -> Dst
fn saturating_cast_from(src: Src) -> Dst
source§impl<T> Size for T
impl<T> Size for T
source§const BYTE_ALIGN: usize = _
const BYTE_ALIGN: usize = _
mem only.source§const BYTE_SIZE: usize = _
const BYTE_SIZE: usize = _
mem only.source§const PTR_SIZE: usize = 8usize
const PTR_SIZE: usize = 8usize
mem only.source§fn byte_align(&self) -> usize
fn byte_align(&self) -> usize
mem only.