Rollup merge of #42091 - maccoda:maccoda/env_docs, r=frewsxcv

Improving std::env docs

Addresses #29351.
Hopefully this addresses the following points:
> -  iterators should use the standard iterator boilerplate like https://doc.rust-lang.org/std/iter/struct.Map.html, this applies to all structs except for JoinPathsError
> -  JoinPathsError should properly link the function it comes from and use language similar to https://doc.rust-lang.org/std/io/struct.Error.html
> -  same wording issues with VarError
> - functions need to ensure linkage to things they refer to in their descriptions
> - Explain the difference between `os` and non-`os` structs and methods
This commit is contained in:
Mark Simulacrum 2017-05-20 17:48:13 -06:00 committed by GitHub
commit 9ce4616960

View File

@ -13,6 +13,13 @@
//! This module contains functions to inspect various aspects such as //! This module contains functions to inspect various aspects such as
//! environment variables, process arguments, the current directory, and various //! environment variables, process arguments, the current directory, and various
//! other important directories. //! other important directories.
//!
//! There are several functions and structs in this module that have a
//! counterpart ending in `os`. Those ending in `os` will return an [`OsString`]
//! and those without will be returning a [`String`].
//!
//! [`OsString`]: ../../std/ffi/struct.OsString.html
//! [`String`]: ../string/struct.String.html
#![stable(feature = "env", since = "1.0.0")] #![stable(feature = "env", since = "1.0.0")]
@ -74,7 +81,8 @@ pub fn set_current_dir<P: AsRef<Path>>(path: P) -> io::Result<()> {
/// An iterator over a snapshot of the environment variables of this process. /// An iterator over a snapshot of the environment variables of this process.
/// ///
/// This structure is created through the [`std::env::vars`] function. /// This structure is created by the [`std::env::vars`] function. See its
/// documentation for more.
/// ///
/// [`std::env::vars`]: fn.vars.html /// [`std::env::vars`]: fn.vars.html
#[stable(feature = "env", since = "1.0.0")] #[stable(feature = "env", since = "1.0.0")]
@ -82,7 +90,8 @@ pub struct Vars { inner: VarsOs }
/// An iterator over a snapshot of the environment variables of this process. /// An iterator over a snapshot of the environment variables of this process.
/// ///
/// This structure is created through the [`std::env::vars_os`] function. /// This structure is created by the [`std::env::vars_os`] function. See
/// its documentation for more.
/// ///
/// [`std::env::vars_os`]: fn.vars_os.html /// [`std::env::vars_os`]: fn.vars_os.html
#[stable(feature = "env", since = "1.0.0")] #[stable(feature = "env", since = "1.0.0")]
@ -176,12 +185,10 @@ impl fmt::Debug for VarsOs {
/// Fetches the environment variable `key` from the current process. /// Fetches the environment variable `key` from the current process.
/// ///
/// The returned result is [`Ok(s)`] if the environment variable is present and is /// # Errors
/// valid unicode. If the environment variable is not present, or it is not
/// valid unicode, then [`VarError`] will be returned.
/// ///
/// [`Ok(s)`]: ../result/enum.Result.html#variant.Ok /// * Environment variable is not present
/// [`VarError`]: enum.VarError.html /// * Environment variable is not valid unicode
/// ///
/// # Examples /// # Examples
/// ///
@ -233,7 +240,8 @@ fn _var_os(key: &OsStr) -> Option<OsString> {
}) })
} }
/// Possible errors from the [`env::var`] function. /// The error type for operations interacting with environment variables.
/// Possibly returned from the [`env::var`] function.
/// ///
/// [`env::var`]: fn.var.html /// [`env::var`]: fn.var.html
#[derive(Debug, PartialEq, Eq, Clone)] #[derive(Debug, PartialEq, Eq, Clone)]
@ -356,10 +364,13 @@ fn _remove_var(k: &OsStr) {
}) })
} }
/// An iterator over `PathBuf` instances for parsing an environment variable /// An iterator that splits an environment variable into paths according to
/// according to platform-specific conventions. /// platform-specific conventions.
/// ///
/// This structure is returned from `std::env::split_paths`. /// This structure is created by the [`std::env::split_paths`] function See its
/// documentation for more.
///
/// [`std::env::split_paths`]: fn.split_paths.html
#[stable(feature = "env", since = "1.0.0")] #[stable(feature = "env", since = "1.0.0")]
pub struct SplitPaths<'a> { inner: os_imp::SplitPaths<'a> } pub struct SplitPaths<'a> { inner: os_imp::SplitPaths<'a> }
@ -402,8 +413,10 @@ impl<'a> fmt::Debug for SplitPaths<'a> {
} }
} }
/// Error type returned from `std::env::join_paths` when paths fail to be /// The error type for operations on the `PATH` variable. Possibly returned from
/// joined. /// the [`env::join_paths`] function.
///
/// [`env::join_paths`]: fn.join_paths.html
#[derive(Debug)] #[derive(Debug)]
#[stable(feature = "env", since = "1.0.0")] #[stable(feature = "env", since = "1.0.0")]
pub struct JoinPathsError { pub struct JoinPathsError {
@ -413,7 +426,7 @@ pub struct JoinPathsError {
/// Joins a collection of [`Path`]s appropriately for the `PATH` /// Joins a collection of [`Path`]s appropriately for the `PATH`
/// environment variable. /// environment variable.
/// ///
/// Returns an [`OsString`] on success. /// # Errors
/// ///
/// Returns an [`Err`][err] (containing an error message) if one of the input /// Returns an [`Err`][err] (containing an error message) if one of the input
/// [`Path`]s contains an invalid character for constructing the `PATH` /// [`Path`]s contains an invalid character for constructing the `PATH`
@ -493,12 +506,16 @@ pub fn home_dir() -> Option<PathBuf> {
/// Returns the path of a temporary directory. /// Returns the path of a temporary directory.
/// ///
/// On Unix, returns the value of the `TMPDIR` environment variable if it is /// # Unix
///
/// Returns the value of the `TMPDIR` environment variable if it is
/// set, otherwise for non-Android it returns `/tmp`. If Android, since there /// set, otherwise for non-Android it returns `/tmp`. If Android, since there
/// is no global temporary folder (it is usually allocated per-app), it returns /// is no global temporary folder (it is usually allocated per-app), it returns
/// `/data/local/tmp`. /// `/data/local/tmp`.
/// ///
/// On Windows, returns the value of, in order, the `TMP`, `TEMP`, /// # Windows
///
/// Returns the value of, in order, the `TMP`, `TEMP`,
/// `USERPROFILE` environment variable if any are set and not the empty /// `USERPROFILE` environment variable if any are set and not the empty
/// string. Otherwise, `temp_dir` returns the path of the Windows directory. /// string. Otherwise, `temp_dir` returns the path of the Windows directory.
/// This behavior is identical to that of [`GetTempPath`][msdn], which this /// This behavior is identical to that of [`GetTempPath`][msdn], which this