Add io::ErrorKind::InputOutputError#159070
Merged
rust-bors[bot] merged 1 commit intoJul 11, 2026
Merged
Conversation
`EIO` decoded to `ErrorKind::Uncategorized`, so a low-level I/O failure could only be detected through `raw_os_error()`. Map it, and the equivalent codes on Windows (`ERROR_IO_DEVICE`) and VEXos (`FR_DISK_ERR`), to a new unstable `InputOutputError` variant.
4 tasks
JohnTitor
approved these changes
Jul 10, 2026
Contributor
JonathanBrouwer
added a commit
to JonathanBrouwer/rust
that referenced
this pull request
Jul 10, 2026
…error, r=JohnTitor Add `io::ErrorKind::InputOutputError` Adds an unstable `io::ErrorKind::InputOutputError` for low-level I/O failures. `EIO` currently decodes to `ErrorKind::Uncategorized`, so stable code cannot tell that an operation failed at the low-level I/O layer without inspecting `raw_os_error()` and a platform-specific `libc`/`windows-sys` constant. Implements the accepted ACP rust-lang/libs-team#824. The variant name is still open for bikeshedding before stabilization (see the ACP); this uses `InputOutputError` as accepted for now. The variant maps: - `EIO` on Unix, WASI, and teeos - `ERROR_IO_DEVICE` on Windows - `FR_DISK_ERR` on VEXos I didn't add a test, since the decode tables don't have one today (same as rust-lang#158326). Tracking issue: rust-lang#159066 r? libs
rust-bors Bot
pushed a commit
that referenced
this pull request
Jul 11, 2026
Rollup of 15 pull requests Successful merges: - #159106 (Update LLVM) - #157690 (codegen_ssa: pack small const aggregates into immediate stores) - #159005 (Use `as_lang_item` instead of repeatedly matching) - #156735 (Move NativeLib::filename to the rmeta-link archive member) - #157153 (allow `Allocator`s to be used as `#[global_allocator]`s) - #158269 (jq directives for jsondocck) - #158767 (merge DefKind::InlineConst into AnonConst) - #159099 (Stabilize String::from_utf8_lossy_owned) - #158930 (Reorganize `tests/ui/issues` [20/N]) - #158965 (Add codegen test for Result is_ok unwrap) - #158979 (Reorganize `tests/ui/issues` [21/N]) - #159050 (assert only opaques with sub unified hidden infer are non-rigid) - #159062 (Remove unused WEAK_ONLY_LANG_ITEMS static) - #159070 (Add `io::ErrorKind::InputOutputError`) - #159092 (make volatile operations const)
rust-bors Bot
pushed a commit
that referenced
this pull request
Jul 11, 2026
Rollup of 15 pull requests Successful merges: - #159106 (Update LLVM) - #157690 (codegen_ssa: pack small const aggregates into immediate stores) - #159005 (Use `as_lang_item` instead of repeatedly matching) - #156735 (Move NativeLib::filename to the rmeta-link archive member) - #157153 (allow `Allocator`s to be used as `#[global_allocator]`s) - #158269 (jq directives for jsondocck) - #158767 (merge DefKind::InlineConst into AnonConst) - #159099 (Stabilize String::from_utf8_lossy_owned) - #158930 (Reorganize `tests/ui/issues` [20/N]) - #158965 (Add codegen test for Result is_ok unwrap) - #158979 (Reorganize `tests/ui/issues` [21/N]) - #159050 (assert only opaques with sub unified hidden infer are non-rigid) - #159062 (Remove unused WEAK_ONLY_LANG_ITEMS static) - #159070 (Add `io::ErrorKind::InputOutputError`) - #159092 (make volatile operations const)
rust-timer
added a commit
that referenced
this pull request
Jul 11, 2026
Rollup merge of #159070 - valentynkit:io-error-input-output-error, r=JohnTitor Add `io::ErrorKind::InputOutputError` Adds an unstable `io::ErrorKind::InputOutputError` for low-level I/O failures. `EIO` currently decodes to `ErrorKind::Uncategorized`, so stable code cannot tell that an operation failed at the low-level I/O layer without inspecting `raw_os_error()` and a platform-specific `libc`/`windows-sys` constant. Implements the accepted ACP rust-lang/libs-team#824. The variant name is still open for bikeshedding before stabilization (see the ACP); this uses `InputOutputError` as accepted for now. The variant maps: - `EIO` on Unix, WASI, and teeos - `ERROR_IO_DEVICE` on Windows - `FR_DISK_ERR` on VEXos I didn't add a test, since the decode tables don't have one today (same as #158326). Tracking issue: #159066 r? libs
Contributor
|
@rust-timer build 881fc98 |
Collaborator
|
Queued 881fc98 with parent 48e8ec6, future comparison URL. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds an unstable
io::ErrorKind::InputOutputErrorfor low-level I/O failures.EIOcurrently decodes toErrorKind::Uncategorized, so stable code cannot tell that an operation failed at the low-level I/O layer without inspectingraw_os_error()and a platform-specificlibc/windows-sysconstant.Implements the accepted ACP rust-lang/libs-team#824. The variant name is still open for bikeshedding before stabilization (see the ACP); this uses
InputOutputErroras accepted for now.The variant maps:
EIOon Unix, WASI, and teeosERROR_IO_DEVICEon WindowsFR_DISK_ERRon VEXosI didn't add a test, since the decode tables don't have one today (same as #158326).
Tracking issue: #159066
r? libs