Auto merge of #56142 - jnqnfe:osstr_lossy_example, r=alexcrichton
[std] Osstr lossy example
This commit is contained in:
commit
5900dae51d
1 changed files with 32 additions and 7 deletions
|
@ -536,17 +536,42 @@ impl OsStr {
|
|||
///
|
||||
/// # Examples
|
||||
///
|
||||
/// Calling `to_string_lossy` on an `OsStr` with valid unicode:
|
||||
/// Calling `to_string_lossy` on an `OsStr` with invalid unicode:
|
||||
///
|
||||
/// ```
|
||||
/// use std::ffi::OsStr;
|
||||
/// // 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.
|
||||
///
|
||||
/// let os_str = OsStr::new("foo");
|
||||
/// assert_eq!(os_str.to_string_lossy(), "foo");
|
||||
/// #[cfg(any(unix, target_os = "redox"))] {
|
||||
/// 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<66>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<66>o");
|
||||
/// }
|
||||
/// ```
|
||||
///
|
||||
/// Had `os_str` contained invalid unicode, the `to_string_lossy` call might
|
||||
/// have returned `"fo<66>"`.
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
pub fn to_string_lossy(&self) -> Cow<str> {
|
||||
self.inner.to_string_lossy()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue