Auto merge of #85746 - m-ou-se:io-error-other, r=joshtriplett
Redefine `ErrorKind::Other` and stop using it in std. This implements the idea I shared yesterday in the libs meeting when we were discussing how to handle adding new `ErrorKind`s to the standard library: This redefines `Other` to be for *user defined errors only*, and changes all uses of `Other` in the standard library to a `#[doc(hidden)]` and permanently `#[unstable]` `ErrorKind` that users can not match on. This ensures that adding `ErrorKind`s at a later point in time is not a breaking change, since the user couldn't match on these errors anyway. This way, we use the `#[non_exhaustive]` property of the enum in a more effective way. Open questions: - How do we check this change doesn't cause too much breakage? Will a crate run help and be enough? - How do we ensure we don't accidentally start using `Other` again in the standard library? We don't have a `pub(not crate)` or `#[deprecated(in this crate only)]`. cc https://github.com/rust-lang/rust/pull/79965 cc `@rust-lang/libs` `@ijackson` r? `@dtolnay`
This commit is contained in:
commit
f9fa13f705
24 changed files with 99 additions and 74 deletions
|
@ -1658,8 +1658,7 @@ impl Child {
|
|||
/// Forces the child process to exit. If the child has already exited, an [`InvalidInput`]
|
||||
/// error is returned.
|
||||
///
|
||||
/// The mapping to [`ErrorKind`]s is not part of the compatibility contract of the function,
|
||||
/// especially the [`Other`] kind might change to more specific kinds in the future.
|
||||
/// The mapping to [`ErrorKind`]s is not part of the compatibility contract of the function.
|
||||
///
|
||||
/// This is equivalent to sending a SIGKILL on Unix platforms.
|
||||
///
|
||||
|
@ -1680,7 +1679,6 @@ impl Child {
|
|||
///
|
||||
/// [`ErrorKind`]: io::ErrorKind
|
||||
/// [`InvalidInput`]: io::ErrorKind::InvalidInput
|
||||
/// [`Other`]: io::ErrorKind::Other
|
||||
#[stable(feature = "process", since = "1.0.0")]
|
||||
pub fn kill(&mut self) -> io::Result<()> {
|
||||
self.handle.kill()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue