diff options
| author | Yuki Okushi <jtitor@2k36.org> | 2021-07-06 02:33:06 +0900 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-07-06 02:33:06 +0900 |
| commit | 1fcd9abbb1f80a0a467d8e54b573a7ba207925c7 (patch) | |
| tree | 89e8ebe5d149d3aea346fa9710a1b87274cb1919 /library/std/src/sys/unix/stack_overflow.rs | |
| parent | 6e9b3696d494a32d493585f96f0671123066cd58 (diff) | |
| parent | 469f4674fbed038c9d7675f1ae08354a6175b8e9 (diff) | |
| download | rust-1fcd9abbb1f80a0a467d8e54b573a7ba207925c7.tar.gz rust-1fcd9abbb1f80a0a467d8e54b573a7ba207925c7.zip | |
Rollup merge of #83581 - arennow:dir_entry_ext_unix_borrow_name, r=m-ou-se
Add std::os::unix::fs::DirEntryExt2::file_name_ref(&self) -> &OsStr
Greetings!
This is my first PR here, so please forgive me if I've missed an important step or otherwise done something wrong. I'm very open to suggestions/fixes/corrections.
This PR adds a function that allows `std::fs::DirEntry` to vend a borrow of its filename on Unix platforms, which is especially useful for sorting. (Windows has (as I understand it) encoding differences that require an allocation.) This new function sits alongside the cross-platform [`file_name(&self) -> OsString`](https://doc.rust-lang.org/std/fs/struct.DirEntry.html#method.file_name) function.
I pitched this idea in an [internals thread](https://internals.rust-lang.org/t/allow-std-direntry-to-vend-borrows-of-its-filename/14328/4), and no one objected vehemently, so here we are.
I understand features in general, I believe, but I'm not at all confident that my whole-cloth invention of a new feature string (as required by the compiler) was correct (or that the name is appropriate). Further, there doesn't appear to be a test for the sibling `ino` function, so I didn't add one for this similarly trivial function either. If it's desirable that I should do so, I'd be happy to [figure out how to] do that.
The following is a trivial sample of a use-case for this function, in which directory entries are sorted without any additional allocations:
```rust
use std::os::unix::fs::DirEntryExt;
use std::{fs, io};
fn main() -> io::Result<()> {
let mut entries = fs::read_dir(".")?.collect::<Result<Vec<_>, io::Error>>()?;
entries.sort_unstable_by(|a, b| a.file_name_ref().cmp(b.file_name_ref()));
for p in entries {
println!("{:?}", p);
}
Ok(())
}
```
Diffstat (limited to 'library/std/src/sys/unix/stack_overflow.rs')
0 files changed, 0 insertions, 0 deletions
