Overhaul the documentation for OsString / OsStr
This commit is contained in:
@@ -92,13 +92,40 @@
|
|||||||
//! your code can detect errors in case the environment variable did
|
//! your code can detect errors in case the environment variable did
|
||||||
//! not in fact contain valid Unicode data.
|
//! not in fact contain valid Unicode data.
|
||||||
//!
|
//!
|
||||||
//! * [`OsStr`] represents a borrowed string slice in a format that
|
//! * [`OsStr`] represents a borrowed reference to a string in a
|
||||||
//! can be passed to the operating system. It can be converted into
|
//! format that can be passed to the operating system. It can be
|
||||||
//! an UTF-8 Rust string slice in a similar way to `OsString`.
|
//! converted into an UTF-8 Rust string slice in a similar way to
|
||||||
|
//! `OsString`.
|
||||||
|
//!
|
||||||
|
//! # Conversions
|
||||||
|
//!
|
||||||
|
//! ## On Unix
|
||||||
|
//!
|
||||||
|
//! On Unix, [`OsStr`] implements the `std::os::unix:ffi::`[`OsStrExt`][unix.OsStrExt] trait, which
|
||||||
|
//! augments it with two methods, [`from_bytes`] and [`as_bytes`]. These do inexpensive conversions
|
||||||
|
//! from and to UTF-8 byte slices.
|
||||||
|
//!
|
||||||
|
//! Additionally, on Unix [`OsString`] implements the
|
||||||
|
//! `std::os::unix:ffi::`[`OsStringExt`][unix.OsStringExt] trait,
|
||||||
|
//! which provides [`from_vec`] and [`into_vec`] methods that consume
|
||||||
|
//! their arguments, and take or produce vectors of [`u8`].
|
||||||
|
//!
|
||||||
|
//! ## On Windows
|
||||||
|
//!
|
||||||
|
//! On Windows, [`OsStr`] implements the `std::os::windows::ffi::`[`OsStrExt`][windows.OsStrExt]
|
||||||
|
//! trait, which provides an [`encode_wide`] method. This provides an iterator that can be
|
||||||
|
//! [`collect`]ed into a vector of [`u16`].
|
||||||
|
//!
|
||||||
|
//! Additionally, on Windows [`OsString`] implements the
|
||||||
|
//! `std::os::windows:ffi::`[`OsStringExt`][windows.OsStringExt] trait, which provides a
|
||||||
|
//! [`from_wide`] method. The result of this method is an `OsString` which can be round-tripped to
|
||||||
|
//! a Windows string losslessly.
|
||||||
//!
|
//!
|
||||||
//! [`String`]: ../string/struct.String.html
|
//! [`String`]: ../string/struct.String.html
|
||||||
//! [`str`]: ../primitive.str.html
|
//! [`str`]: ../primitive.str.html
|
||||||
//! [`char`]: ../primitive.char.html
|
//! [`char`]: ../primitive.char.html
|
||||||
|
//! [`u8`]: ../primitive.u8.html
|
||||||
|
//! [`u16`]: ../primitive.u16.html
|
||||||
//! [Unicode scalar value]: http://www.unicode.org/glossary/#unicode_scalar_value
|
//! [Unicode scalar value]: http://www.unicode.org/glossary/#unicode_scalar_value
|
||||||
//! [Unicode code point]: http://www.unicode.org/glossary/#code_point
|
//! [Unicode code point]: http://www.unicode.org/glossary/#code_point
|
||||||
//! [`CString`]: struct.CString.html
|
//! [`CString`]: struct.CString.html
|
||||||
@@ -108,6 +135,18 @@
|
|||||||
//! [`env::set_var()`]: ../env/fn.set_var.html
|
//! [`env::set_var()`]: ../env/fn.set_var.html
|
||||||
//! [`env::var_os()`]: ../env/fn.var_os.html
|
//! [`env::var_os()`]: ../env/fn.var_os.html
|
||||||
//! [`Result<>`]: ../result/enum.Result.html
|
//! [`Result<>`]: ../result/enum.Result.html
|
||||||
|
//! [unix.OsStringExt]: ../os/unix/ffi/trait.OsStringExt.html
|
||||||
|
//! [`from_vec`]: ../os/unix/ffi/trait.OsStringExt.html#tymethod.from_vec
|
||||||
|
//! [`into_vec`]: ../os/unix/ffi/trait.OsStringExt.html#tymethod.into_vec
|
||||||
|
//! [unix.OsStrExt]: ../os/unix/ffi/trait.OsStrExt.html
|
||||||
|
//! [`from_bytes`]: ../os/unix/ffi/trait.OsStrExt.html#tymethod.from_bytes
|
||||||
|
//! [`as_bytes`]: ../os/unix/ffi/trait.OsStrExt.html#tymethod.as_bytes
|
||||||
|
//! [`OsStrExt`]: ../os/unix/ffi/trait.OsStrExt.html
|
||||||
|
//! [windows.OsStrExt]: ../os/windows/ffi/trait.OsStrExt.html
|
||||||
|
//! [`encode_wide`]: ../os/windows/ffi/trait.OsStrExt.html#tymethod.encode_wide
|
||||||
|
//! [`collect`]: ../iter/trait.Iterator.html#method.collect
|
||||||
|
//! [windows.OsStringExt]: ../os/windows/ffi/trait.OsStringExt.html
|
||||||
|
//! [`from_wide`]: ../os/windows/ffi/trait.OsStringExt.html#tymethod.from_wide
|
||||||
|
|
||||||
#![stable(feature = "rust1", since = "1.0.0")]
|
#![stable(feature = "rust1", since = "1.0.0")]
|
||||||
|
|
||||||
|
|||||||
@@ -33,18 +33,65 @@ use sys_common::{AsInner, IntoInner, FromInner};
|
|||||||
///
|
///
|
||||||
/// `OsString` and [`OsStr`] bridge this gap by simultaneously representing Rust
|
/// `OsString` and [`OsStr`] bridge this gap by simultaneously representing Rust
|
||||||
/// and platform-native string values, and in particular allowing a Rust string
|
/// and platform-native string values, and in particular allowing a Rust string
|
||||||
/// to be converted into an "OS" string with no cost.
|
/// to be converted into an "OS" string with no cost if possible.
|
||||||
|
///
|
||||||
|
/// `OsString` is to [`OsStr`] as [`String`] is to [`&str`]: the former
|
||||||
|
/// in each pair are owned strings; the latter are borrowed
|
||||||
|
/// references.
|
||||||
|
///
|
||||||
|
/// # Creating an `OsString`
|
||||||
|
///
|
||||||
|
/// **From a Rust string**: `OsString` implements
|
||||||
|
/// [`From`]`<`[`String`]`>`, so you can use `my_string.`[`from`] to
|
||||||
|
/// create an `OsString` from a normal Rust string.
|
||||||
|
///
|
||||||
|
/// **From slices:** Just like you can start with an empty Rust
|
||||||
|
/// [`String`] and then [`push_str`][String.push_str] `&str`
|
||||||
|
/// sub-string slices into it, you can create an empty `OsString` with
|
||||||
|
/// the [`new`] method and then push string slices into it with the
|
||||||
|
/// [`push`] method.
|
||||||
|
///
|
||||||
|
/// # Extracting a borrowed reference to the whole OS string
|
||||||
|
///
|
||||||
|
/// You can use the [`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][conversions] for a discussion on the traits which
|
||||||
|
/// `OsString` implements for conversions from/to native representations.
|
||||||
///
|
///
|
||||||
/// [`OsStr`]: struct.OsStr.html
|
/// [`OsStr`]: struct.OsStr.html
|
||||||
|
/// [`From`]: ../convert/trait.From.html
|
||||||
|
/// [`from`]: ../convert/trait.From.html#tymethod.from
|
||||||
|
/// [`String`]: ../string/struct.String.html
|
||||||
|
/// [`&str`]: ../primitive.str.html
|
||||||
|
/// [`u8`]: ../primitive.u8.html
|
||||||
|
/// [`u16`]: ../primitive.u16.html
|
||||||
|
/// [String.push_str]: ../string/struct.String.html#method.push_str
|
||||||
|
/// [`new`]: #struct.OsString.html#method.new
|
||||||
|
/// [`push`]: #struct.OsString.html#method.push
|
||||||
|
/// [`as_os_str`]: #struct.OsString.html#method.as_os_str
|
||||||
#[derive(Clone)]
|
#[derive(Clone)]
|
||||||
#[stable(feature = "rust1", since = "1.0.0")]
|
#[stable(feature = "rust1", since = "1.0.0")]
|
||||||
pub struct OsString {
|
pub struct OsString {
|
||||||
inner: Buf
|
inner: Buf
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Slices into OS strings (see [`OsString`]).
|
/// Borrowed reference to an OS string (see [`OsString`]).
|
||||||
|
///
|
||||||
|
/// This type represents a borrowed reference to a string in the operating system's preferred
|
||||||
|
/// representation.
|
||||||
|
///
|
||||||
|
/// `OsStr` is to [`OsString`] as [`String`] is to [`&str`]: the former in each pair are borrowed
|
||||||
|
/// references; the latter are owned strings.
|
||||||
|
///
|
||||||
|
/// See the [module's toplevel documentation about conversions][conversions] for a discussion on the traits which
|
||||||
|
/// `OsStr` implements for conversions from/to native representations.
|
||||||
///
|
///
|
||||||
/// [`OsString`]: struct.OsString.html
|
/// [`OsString`]: struct.OsString.html
|
||||||
|
/// [conversions]: index.html#conversions
|
||||||
#[stable(feature = "rust1", since = "1.0.0")]
|
#[stable(feature = "rust1", since = "1.0.0")]
|
||||||
pub struct OsStr {
|
pub struct OsStr {
|
||||||
inner: Slice
|
inner: Slice
|
||||||
|
|||||||
Reference in New Issue
Block a user