Rollup merge of #89693 - jkugelman:must-use-stdin-stdout-stderr-locks, r=joshtriplett

Add #[must_use] to stdin/stdout/stderr locks

Affected methods:

```rust
std::io           fn stdin_locked() -> StdinLock<'static>;
std::io::Stdin    fn lock(&self) -> StdinLock<'_>;
std::io           fn stdout_locked() -> StdoutLock<'static>;
std::io::Stdout   fn lock(&self) -> StdoutLock<'_>;
std::io           fn stderr_locked() -> StderrLock<'static>;
std::io::Stderr   fn lock(&self) -> StderrLock<'_>;
```

Parent issue: https://github.com/rust-lang/rust/issues/89692
This commit is contained in:
Matthias Krüger 2021-10-09 11:56:07 +02:00 committed by GitHub
commit ee804594c8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -256,6 +256,7 @@ pub struct Stdin {
/// Ok(()) /// Ok(())
/// } /// }
/// ``` /// ```
#[must_use = "if unused stdin will immediately unlock"]
#[stable(feature = "rust1", since = "1.0.0")] #[stable(feature = "rust1", since = "1.0.0")]
pub struct StdinLock<'a> { pub struct StdinLock<'a> {
inner: MutexGuard<'a, BufReader<StdinRaw>>, inner: MutexGuard<'a, BufReader<StdinRaw>>,
@ -624,6 +625,7 @@ pub struct Stdout {
/// When operating in a console, the Windows implementation of this stream does not support /// When operating in a console, the Windows implementation of this stream does not support
/// non-UTF-8 byte sequences. Attempting to write bytes that are not valid UTF-8 will return /// non-UTF-8 byte sequences. Attempting to write bytes that are not valid UTF-8 will return
/// an error. /// an error.
#[must_use = "if unused stdout will immediately unlock"]
#[stable(feature = "rust1", since = "1.0.0")] #[stable(feature = "rust1", since = "1.0.0")]
pub struct StdoutLock<'a> { pub struct StdoutLock<'a> {
inner: ReentrantMutexGuard<'a, RefCell<LineWriter<StdoutRaw>>>, inner: ReentrantMutexGuard<'a, RefCell<LineWriter<StdoutRaw>>>,
@ -907,6 +909,7 @@ pub struct Stderr {
/// When operating in a console, the Windows implementation of this stream does not support /// When operating in a console, the Windows implementation of this stream does not support
/// non-UTF-8 byte sequences. Attempting to write bytes that are not valid UTF-8 will return /// non-UTF-8 byte sequences. Attempting to write bytes that are not valid UTF-8 will return
/// an error. /// an error.
#[must_use = "if unused stderr will immediately unlock"]
#[stable(feature = "rust1", since = "1.0.0")] #[stable(feature = "rust1", since = "1.0.0")]
pub struct StderrLock<'a> { pub struct StderrLock<'a> {
inner: ReentrantMutexGuard<'a, RefCell<StderrRaw>>, inner: ReentrantMutexGuard<'a, RefCell<StderrRaw>>,