mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-29 02:03:53 +00:00
Add std::os::unix::fs::DirEntryExt2::file_name_ref(&self) -> &OsStr
DirEntryExt2 is a new trait with the same purpose as DirEntryExt, but sealed
This commit is contained in:
parent
5dc8789e30
commit
bc45e474a0
@ -9,6 +9,8 @@ use crate::path::Path;
|
|||||||
use crate::sys;
|
use crate::sys;
|
||||||
use crate::sys_common::{AsInner, AsInnerMut, FromInner};
|
use crate::sys_common::{AsInner, AsInnerMut, FromInner};
|
||||||
// Used for `File::read` on intra-doc links
|
// Used for `File::read` on intra-doc links
|
||||||
|
use crate::ffi::OsStr;
|
||||||
|
use crate::sealed::Sealed;
|
||||||
#[allow(unused_imports)]
|
#[allow(unused_imports)]
|
||||||
use io::{Read, Write};
|
use io::{Read, Write};
|
||||||
|
|
||||||
@ -839,6 +841,42 @@ impl DirEntryExt for fs::DirEntry {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Sealed Unix-specific extension methods for [`fs::DirEntry`].
|
||||||
|
#[unstable(feature = "dir_entry_ext2", issue = "85573")]
|
||||||
|
pub trait DirEntryExt2: Sealed {
|
||||||
|
/// Returns a reference to the underlying `OsStr` of this entry's filename.
|
||||||
|
///
|
||||||
|
/// # Examples
|
||||||
|
///
|
||||||
|
/// ```
|
||||||
|
/// use std::os::unix::fs::DirEntryExt2;
|
||||||
|
/// 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(())
|
||||||
|
/// }
|
||||||
|
/// ```
|
||||||
|
fn file_name_ref(&self) -> &OsStr;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Allows extension traits within `std`.
|
||||||
|
#[unstable(feature = "sealed", issue = "none")]
|
||||||
|
impl Sealed for fs::DirEntry {}
|
||||||
|
|
||||||
|
#[unstable(feature = "dir_entry_ext2", issue = "85573")]
|
||||||
|
impl DirEntryExt2 for fs::DirEntry {
|
||||||
|
fn file_name_ref(&self) -> &OsStr {
|
||||||
|
self.as_inner().file_name_os_str()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// Creates a new symbolic link on the filesystem.
|
/// Creates a new symbolic link on the filesystem.
|
||||||
///
|
///
|
||||||
/// The `link` path will be a symbolic link pointing to the `original` path.
|
/// The `link` path will be a symbolic link pointing to the `original` path.
|
||||||
|
@ -647,6 +647,10 @@ impl DirEntry {
|
|||||||
fn name_bytes(&self) -> &[u8] {
|
fn name_bytes(&self) -> &[u8] {
|
||||||
&*self.name
|
&*self.name
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn file_name_os_str(&self) -> &OsStr {
|
||||||
|
OsStr::from_bytes(self.name_bytes())
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl OpenOptions {
|
impl OpenOptions {
|
||||||
|
Loading…
Reference in New Issue
Block a user