mirror of
https://github.com/rust-lang/rust.git
synced 2026-05-21 17:52:12 +03:00
Add an unstable FileTypeExt extension trait for Windows
This commit is contained in:
@@ -445,6 +445,24 @@ fn last_write_time(&self) -> u64 { self.as_inner().modified_u64() }
|
||||
fn file_size(&self) -> u64 { self.as_inner().size() }
|
||||
}
|
||||
|
||||
/// Add support for the Windows specific fact that a symbolic link knows whether it is a file
|
||||
/// or directory.
|
||||
#[unstable(feature = "windows_file_type_ext", issue = "0")]
|
||||
pub trait FileTypeExt {
|
||||
/// Returns whether this file type is a symbolic link that is also a directory.
|
||||
#[unstable(feature = "windows_file_type_ext", issue = "0")]
|
||||
fn is_symlink_dir(&self) -> bool;
|
||||
/// Returns whether this file type is a symbolic link that is also a file.
|
||||
#[unstable(feature = "windows_file_type_ext", issue = "0")]
|
||||
fn is_symlink_file(&self) -> bool;
|
||||
}
|
||||
|
||||
#[unstable(feature = "windows_file_type_ext", issue = "0")]
|
||||
impl FileTypeExt for fs::FileType {
|
||||
fn is_symlink_dir(&self) -> bool { self.as_inner().is_symlink_dir() }
|
||||
fn is_symlink_file(&self) -> bool { self.as_inner().is_symlink_file() }
|
||||
}
|
||||
|
||||
/// Creates a new file symbolic link on the filesystem.
|
||||
///
|
||||
/// The `dst` path will be a file symbolic link pointing to the `src`
|
||||
|
||||
@@ -534,6 +534,9 @@ pub fn is_symlink(&self) -> bool {
|
||||
pub fn is_symlink_dir(&self) -> bool {
|
||||
self.is_symlink() && self.is_directory()
|
||||
}
|
||||
pub fn is_symlink_file(&self) -> bool {
|
||||
self.is_symlink() && !self.is_directory()
|
||||
}
|
||||
fn is_directory(&self) -> bool {
|
||||
self.attributes & c::FILE_ATTRIBUTE_DIRECTORY != 0
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user