Skip to content

Commit

Permalink
Rollup merge of rust-lang#84551 - r00ster91:patch-4, r=yaahc
Browse files Browse the repository at this point in the history
Unify the docs of std::env::{args_os, args} more

I noticed that `args_os` was missing some information and I thought it should mention `args` for when you want more safety just like how `args` mentions `args_os` if you don't want it to panic on invalid Unicode.
  • Loading branch information
m-ou-se authored Apr 26, 2021
2 parents 9758d53 + 82b6983 commit 6d277c7
Showing 1 changed file with 16 additions and 8 deletions.
24 changes: 16 additions & 8 deletions library/std/src/env.rs
Original file line number Diff line number Diff line change
Expand Up @@ -710,14 +710,14 @@ pub struct ArgsOs {
/// passed as-is.
///
/// On glibc Linux systems, arguments are retrieved by placing a function in `.init_array`.
/// Glibc passes `argc`, `argv`, and `envp` to functions in `.init_array`, as a non-standard
/// glibc passes `argc`, `argv`, and `envp` to functions in `.init_array`, as a non-standard
/// extension. This allows `std::env::args` to work even in a `cdylib` or `staticlib`, as it
/// does on macOS and Windows.
///
/// # Panics
///
/// The returned iterator will panic during iteration if any argument to the
/// process is not valid unicode. If this is not desired,
/// process is not valid Unicode. If this is not desired,
/// use the [`args_os`] function instead.
///
/// # Examples
Expand All @@ -735,17 +735,25 @@ pub fn args() -> Args {
Args { inner: args_os() }
}

/// Returns the arguments which this program was started with (normally passed
/// Returns the arguments that this program was started with (normally passed
/// via the command line).
///
/// The first element is traditionally the path of the executable, but it can be
/// set to arbitrary text, and it may not even exist, so this property should
/// set to arbitrary text, and may not even exist. This means this property should
/// not be relied upon for security purposes.
///
/// On glibc Linux systems, arguments are retrieved by placing a function in ".init_array".
/// Glibc passes argc, argv, and envp to functions in ".init_array", as a non-standard extension.
/// This allows `std::env::args` to work even in a `cdylib` or `staticlib`, as it does on macOS
/// and Windows.
/// On Unix systems the shell usually expands unquoted arguments with glob patterns
/// (such as `*` and `?`). On Windows this is not done, and such arguments are
/// passed as-is.
///
/// On glibc Linux systems, arguments are retrieved by placing a function in `.init_array`.
/// glibc passes `argc`, `argv`, and `envp` to functions in `.init_array`, as a non-standard
/// extension. This allows `std::env::args_os` to work even in a `cdylib` or `staticlib`, as it
/// does on macOS and Windows.
///
/// Note that the returned iterator will not check if the arguments to the
/// process are valid Unicode. To ensure UTF-8 validity,
/// use the [`args`] function instead.
///
/// # Examples
///
Expand Down

0 comments on commit 6d277c7

Please sign in to comment.