Skip to content

Implemented different with_native_path conversion methods, refactoring fs functions to utilize with_native_path, and move exists to use with_native_path - #159805

Open
asder8215 wants to merge 1 commit into
rust-lang:mainfrom
asder8215:with_native_path_exists

Conversation

@asder8215

@asder8215 asder8215 commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

This PR attempts to complete the FIXME comment on trying to introduce the different conversion functions of with_native_path on all supported platforms and also moves the exists filesystem functions to utilize with_native_path. It should be easier to make readdir and remove_dir_all utilize with_native_path, which I'm down to support that transition in a separate PR.

I took note on what each platform fs functions does underneath the hood to decide the argument it should take:

  • On Hermit and Vexos they use run_path_with_cstr just like Unix, so it was clear for their fs functions to take a &CStr
  • Motor always converts the &Path to &str, so I just changed the arguments to &str
  • Solid uses an internal cstr function that converts a &Path to io::Result<CString>, so I made its fs functions take in a &CStr anyways
  • On uefi, as far as I'm aware every of its fs function ends up calling crate::path::absolute(returns a Result<PathBuf>) or uefi_fs::File::from_path, which calls on crate::path::absolute anyways, so it made sense for me to make its fs functions take a PathBuf.

I did some other refactoring such as putting with_native_path functions within std/src/sys/path (except for unsupported.rs which has with_native_path implemented within its file). I thought it made sense to centralize the different with_native_path (aside from run_path_with_cstr can just use the alias with_native_path) functions there considering that's done for Windows. I also renamed the unsupported_backslash.rs file to solid.rs because it seems like solid is the only one that utilizes that file; the unix.rs file was renamed to common.rs because that's used by unix platforms, motor, and other miscellaneous platforms (motor platform has a different with_native_path implementation however).

If there's anything here that I should revert or change from platform to platform, just let me know.

@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 Jul 24, 2026
@rustbot

rustbot commented Jul 24, 2026

Copy link
Copy Markdown
Collaborator

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 13 candidates
  • Random selection from 6 candidates

@rust-log-analyzer

This comment has been minimized.

…g fs functions to utilize with_native_path, and move exists to use with_native_path
@asder8215
asder8215 force-pushed the with_native_path_exists branch from ef0365c to 7016b77 Compare July 24, 2026 00:32
@asder8215

Copy link
Copy Markdown
Contributor Author

To give a heads up, this PR might be better to wait on #158168 to merge in first, so that I can have with_native_path supported easily on set_perms_nofollow on all platforms.

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

Labels

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.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants