Rollup merge of #41531 - steveklabnik:gh40159, r=nagisa
Add more ways to create a PathBuf to docs The best way to do this wasn't in the documentation, and the ways that were there needed some extra text to elaborate. Fixes #40159 /cc @nagisa
This commit is contained in:
commit
2924532232
1 changed files with 35 additions and 1 deletions
|
|
@ -51,10 +51,17 @@
|
|||
//! ```
|
||||
//! use std::path::PathBuf;
|
||||
//!
|
||||
//! // This way works...
|
||||
//! let mut path = PathBuf::from("c:\\");
|
||||
//!
|
||||
//! path.push("windows");
|
||||
//! path.push("system32");
|
||||
//!
|
||||
//! path.set_extension("dll");
|
||||
//!
|
||||
//! // ... but push is best used if you don't know everything up
|
||||
//! // front. If you do, this way is better:
|
||||
//! let path: PathBuf = ["c:\\", "windows", "system32.dll"].iter().collect();
|
||||
//! ```
|
||||
//!
|
||||
//! [`Component`]: ../../std/path/enum.Component.html
|
||||
|
|
@ -63,6 +70,7 @@
|
|||
//! [`Path`]: ../../std/path/struct.Path.html
|
||||
//! [`push`]: ../../std/path/struct.PathBuf.html#method.push
|
||||
//! [`String`]: ../../std/string/struct.String.html
|
||||
//!
|
||||
//! [`str`]: ../../std/primitive.str.html
|
||||
//! [`OsString`]: ../../std/ffi/struct.OsString.html
|
||||
//! [`OsStr`]: ../../std/ffi/struct.OsStr.html
|
||||
|
|
@ -1036,14 +1044,40 @@ impl<'a> cmp::Ord for Components<'a> {
|
|||
///
|
||||
/// # Examples
|
||||
///
|
||||
/// You can use [`push`] to build up a `PathBuf` from
|
||||
/// components:
|
||||
///
|
||||
/// ```
|
||||
/// use std::path::PathBuf;
|
||||
///
|
||||
/// let mut path = PathBuf::from("c:\\");
|
||||
/// let mut path = PathBuf::new();
|
||||
///
|
||||
/// path.push(r"C:\");
|
||||
/// path.push("windows");
|
||||
/// path.push("system32");
|
||||
///
|
||||
/// path.set_extension("dll");
|
||||
/// ```
|
||||
///
|
||||
/// However, [`push`] is best used for dynamic situations. This is a better way
|
||||
/// to do this when you know all of the components ahead of time:
|
||||
///
|
||||
/// ```
|
||||
/// use std::path::PathBuf;
|
||||
///
|
||||
/// let path: PathBuf = [r"C:\", "windows", "system32.dll"].iter().collect();
|
||||
/// ```
|
||||
///
|
||||
/// We can still do better than this! Since these are all strings, we can use
|
||||
/// `From::from`:
|
||||
///
|
||||
/// ```
|
||||
/// use std::path::PathBuf;
|
||||
///
|
||||
/// let path = PathBuf::from(r"C:\windows\system32.dll");
|
||||
/// ```
|
||||
///
|
||||
/// Which method works best depends on what kind of situation you're in.
|
||||
#[derive(Clone)]
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
pub struct PathBuf {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue