Skip to content

Move std::io::ErrorKind to core::io#154654

Open
bushrat011899 wants to merge 3 commits intorust-lang:mainfrom
bushrat011899:core_io_error_kind
Open

Move std::io::ErrorKind to core::io#154654
bushrat011899 wants to merge 3 commits intorust-lang:mainfrom
bushrat011899:core_io_error_kind

Conversation

@bushrat011899
Copy link
Copy Markdown

@bushrat011899 bushrat011899 commented Apr 1, 2026

View all comments

ACP: rust-lang/libs-team#755
Tracking issue: #154046
Related: #152918

Description

I consider #154046 to be really important for no_std, but I'm concerned #152918 might be too controversial. As an alternative, I'd like to propose starting small with ErrorKind, since it can be moved somewhat trivially. It has no dependencies on functionality in std, no platform specific behaviour, and could provide an excellent bridging point for no_std IO libraries.

Since std::io::Error implements From<ErrorKind>, libraries could write functions which return Result<T, core::io::ErrorKind>, and therefore be usable in std-using libraries with the ? operator. For that reason, I'd consider this to be a worthwhile change even if the rest of std::io couldn't be moved to core/alloc, and entirely compatible with any efforts to make such a change in the future.

Notes

  • This is my first PR against Rust, please let me know if there's anything I should be doing that I have not done. I tried reading through the library contributors guide but I'm sure I've missed something.
  • No AI tooling of any kind was used in the creation of this PR.
  • I believe it's appropriate that this be a part of the linked tracking issue, but please let me know if that's not the case!

@rustbot rustbot added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-libs Relevant to the library team, which will review and decide on the PR/issue. labels Apr 1, 2026
@rustbot
Copy link
Copy Markdown
Collaborator

rustbot commented Apr 1, 2026

r? @Mark-Simulacrum

rustbot has assigned @Mark-Simulacrum.
They will have a look at your PR within the next two weeks and either review your PR or reassign to another reviewer.

Use r? to explicitly pick a reviewer

Why was this reviewer chosen?

The reviewer was selected based on:

  • Owners of files modified in this PR: @ChrisDenton, libs
  • @ChrisDenton, libs expanded to 8 candidates

@rustbot rustbot added T-rustdoc Relevant to the rustdoc team, which will review and decide on the PR/issue. T-rustdoc-frontend Relevant to the rustdoc-frontend team, which will review and decide on the web UI/UX output. labels Apr 1, 2026
@rustbot

This comment has been minimized.

@rust-log-analyzer

This comment has been minimized.

@rust-log-analyzer

This comment has been minimized.

@bushrat011899 bushrat011899 force-pushed the core_io_error_kind branch 2 times, most recently from 8faa574 to 0ef55d6 Compare April 1, 2026 02:22
@rust-log-analyzer

This comment has been minimized.

@rust-log-analyzer

This comment has been minimized.

@rust-log-analyzer

This comment has been minimized.

@rust-log-analyzer

This comment has been minimized.

@rust-log-analyzer

This comment has been minimized.

@bushrat011899 bushrat011899 force-pushed the core_io_error_kind branch 2 times, most recently from 94753ea to b0ce24e Compare April 1, 2026 04:53
@a1phyr
Copy link
Copy Markdown
Contributor

a1phyr commented Apr 1, 2026

I'm concerned #152918 might be too controversial.

It may be controversial, but it has been accepted in principle by libs-teams, so it should be fine.

@bushrat011899
Copy link
Copy Markdown
Author

I'm concerned #152918 might be too controversial.

It may be controversial, but it has been accepted in principle by libs-teams, so it should be fine.

I hope so! I really want your PR to land. Regardless of whether it does, this is a good follow-up to go further at basically no cost.

@lygstate
Copy link
Copy Markdown
Contributor

lygstate commented Apr 1, 2026

looks good to me

Comment thread library/core/src/io/error.rs
Comment thread library/core/src/io/error.rs
Comment thread library/std/src/io/error/repr_bitpacked.rs Outdated
@rustbot rustbot added S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Apr 4, 2026
rust-bors bot pushed a commit that referenced this pull request Apr 19, 2026
Rollup of 8 pull requests

Successful merges:

 - #155370 (Add regression test for dead code elimination with drop + panic)
 - #154823 (Replace the spdx-rs dependency with a minimal in-tree SPDX tag-value parser)
 - #155352 (triagebot.toml: Sync `assign.owners` with `autolabel."T-compiler"`)
 - #155431 (Add temporary scope to assert_matches)
 - #152995 (ACP Implementation of PermissionsExt for Windows )
 - #153873 (deprecate `std::char` constants and functions)
 - #154654 (Move `std::io::ErrorKind` to `core::io`)
 - #154865 (libtest: use binary search for --exact test filtering)
@jhpratt
Copy link
Copy Markdown
Member

jhpratt commented Apr 19, 2026

@bors r-

#155503 (comment)

@rust-bors rust-bors bot added S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. and removed S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. labels Apr 19, 2026
@rust-bors
Copy link
Copy Markdown
Contributor

rust-bors bot commented Apr 19, 2026

This pull request was unapproved.

This PR was contained in a rollup (#155503), which was unapproved.

Certain links will not be valid when moved into `core::io`
* Checking exhaustion will no longer be possible for `repr_bitpacked`. Moving `kind_from_prim` into an associated function, and setting it up to be moved into `core::io` as well.
* `ErrorKind::as_str` is private, but it's only usage is trivially replaced with `Display::fmt`
* The features io_error_inprogress, io_error_more, and io_error_uncategorized will all need to be enabled
Move `std::io::ErrorKind` to `core::io`
* Update `rustdoc-html` tests for the new path
* Add `core_io` feature to control stability. This replaces the use of `core_io_borrowed_buf` on the `core::io` module itself.
* Re-export `core::io::ErrorKind` in `std::io::error`
@rustbot
Copy link
Copy Markdown
Collaborator

rustbot commented Apr 19, 2026

This PR was rebased onto a different main commit. Here's a range-diff highlighting what actually changed.

Rebasing is a normal part of keeping PRs up to date, so no action is needed—this note is just to help reviewers.

@Mark-Simulacrum
Copy link
Copy Markdown
Member

@bors try jobs=dist-various-*

@rust-bors

This comment has been minimized.

rust-bors bot pushed a commit that referenced this pull request Apr 19, 2026
Move `std::io::ErrorKind` to `core::io`


try-job: dist-various-*
@bushrat011899
Copy link
Copy Markdown
Author

@rustbot ready
The issue was caused by one last usage of ErrorKind::as_str in std that I didn't notice (was only for the SGX platform). I've replaced that with a call to format!(...) since the original was immediately creating a String anyway. I could instead make ErrorKind::as_str pub/doc(hidden)/unstable/etc. but I think this is preferable.

@rustbot rustbot added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. and removed S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. labels Apr 19, 2026
@rust-bors
Copy link
Copy Markdown
Contributor

rust-bors bot commented Apr 20, 2026

☀️ Try build successful (CI)
Build commit: 7bcb437 (7bcb437e31bd41d44d2ad4448b4d7172a683ace1, parent: e22c616e4e87914135c1db261a03e0437255335e)

@Mark-Simulacrum
Copy link
Copy Markdown
Member

@bors r+ rollup=iffy

@rust-bors
Copy link
Copy Markdown
Contributor

rust-bors bot commented Apr 20, 2026

📌 Commit 74d5469 has been approved by Mark-Simulacrum

It is now in the queue for this repository.

@rust-bors rust-bors bot added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Apr 20, 2026
jhpratt added a commit to jhpratt/rust that referenced this pull request Apr 20, 2026
…r=Mark-Simulacrum

Move `std::io::ErrorKind` to `core::io`

ACP: rust-lang/libs-team#755
Tracking issue: rust-lang#154046
Related: rust-lang#152918

## Description

I consider rust-lang#154046 to be really important for `no_std`, but I'm concerned rust-lang#152918 might be too controversial. As an alternative, I'd like to propose starting small with `ErrorKind`, since it can be moved somewhat trivially. It has no dependencies on functionality in `std`, no platform specific behaviour, and could provide an excellent bridging point for `no_std` IO libraries.

Since `std::io::Error` implements `From<ErrorKind>`, libraries could write functions which return `Result<T, core::io::ErrorKind>`, and therefore be usable in `std`-using libraries with the `?` operator. For that reason, I'd consider this to be a worthwhile change even if the rest of `std::io` couldn't be moved to `core`/`alloc`, and entirely compatible with any efforts to make such a change in the future.

## Notes

* This is my first PR against Rust, please let me know if there's anything I should be doing that I have not done. I tried reading through the library contributors guide but I'm sure I've missed _something_.
* No AI tooling of any kind was used in the creation of this PR.
* I believe it's appropriate that this be a part of the linked tracking issue, but please let me know if that's not the case!
rust-bors bot pushed a commit that referenced this pull request Apr 20, 2026
Rollup of 6 pull requests

Successful merges:

 - #154654 (Move `std::io::ErrorKind` to `core::io`)
 - #155054 (constify `Index(Mut)`, `Deref(Mut)` for `Vec`)
 - #155507 (suggest expect instead of unwrap when arg provided)
 - #154664 (core/num: Implement feature `integer_cast_extras`)
 - #155474 (Rename incremental `cfail`/`cpass` revisions to `bfail`/`bpass`)
 - #155493 (docs(num): fix stale link to `mem::Alignment`)
@JonathanBrouwer
Copy link
Copy Markdown
Contributor

@bors r-
#155534 (comment)

@rust-bors rust-bors bot added S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. and removed S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. labels Apr 20, 2026
@rust-bors
Copy link
Copy Markdown
Contributor

rust-bors bot commented Apr 20, 2026

This pull request was unapproved.

This PR was contained in a rollup (#155534), which was unapproved.

/// # Examples
///
/// ```no_run
/// #![feature(core_io)]
Copy link
Copy Markdown
Author

@bushrat011899 bushrat011899 Apr 20, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This line is not required and was the cause of the roll-up failure. Will remove and update commit history once I'm back home.

View changes since the review

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

O-unix Operating system: Unix-like O-windows Operating system: Windows S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. T-libs Relevant to the library team, which will review and decide on the PR/issue. T-rustdoc Relevant to the rustdoc team, which will review and decide on the PR/issue. T-rustdoc-frontend Relevant to the rustdoc-frontend team, which will review and decide on the web UI/UX output.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

8 participants