diff options
| author | Mara Bos <m-ou.se@m-ou.se> | 2021-04-26 21:06:48 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-04-26 21:06:48 +0200 |
| commit | 6d277c76945963133b7c18f8d649d8b66f615a6a (patch) | |
| tree | 510e842c267456c58f83459b91215b870fcd2e59 | |
| parent | 9758d532f029af1dddf567c0f87ed5947297b4c2 (diff) | |
| parent | 82b6983acabb61e9e720ec362440fc556fd069c2 (diff) | |
Rollup merge of #84551 - r00ster91:patch-4, r=yaahc
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.
| -rw-r--r-- | library/std/src/env.rs | 24 |
1 files changed, 16 insertions, 8 deletions
diff --git a/library/std/src/env.rs b/library/std/src/env.rs index 5fa092af1da..116a37249e3 100644 --- a/library/std/src/env.rs +++ b/library/std/src/env.rs @@ -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 @@ -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 /// |
