13 releases (5 stable)
Uses new Rust 2024
| 3.0.1 | Jan 25, 2026 |
|---|---|
| 3.0.0 | Jan 24, 2026 |
| 2.0.1 | Oct 3, 2023 |
| 1.0.1 | Aug 17, 2022 |
| 0.9.1 | Sep 13, 2020 |
#261 in Filesystem
4,131 downloads per month
Used in 2 crates
16KB
169 lines
file_type_enum
An enum with a variant for each file type.
pub enum FileType {
Regular,
Directory,
Symlink,
BlockDevice, // unix only
CharDevice, // unix only
Fifo, // unix only
Socket, // unix only
}
Alternatives:
- If you want an enum tree, check the crate
fs-tree. - If you don't need an enum, check these methods from
stdinstead:
Example:
use std::{fs, io, path::Path};
use file_type_enum::FileType;
fn move_file(from: &Path, to: &Path) -> io::Result<()> {
let from_type = FileType::symlink_read_at(from)?;
let to_type = FileType::symlink_read_at(to)?;
use FileType::{Directory, Regular, Symlink};
match (from_type, to_type) {
(Directory, Directory) => {
println!("Replacing directory {to:?} by directory {from:?}.");
}
(Regular, Regular) | (Symlink, Symlink) => {
// Might print:
// "Overwriting regular file at PATH."
// "Overwriting symbolic link at PATH."
println!("Overwriting {to_type} at {to:?} with {from:?}.");
}
(_, Directory) => {
println!("Moving file at {from:?} into folder {to:?}.");
fs::rename(from, to)?;
}
(_, _) => {
// Might print:
// - "Cannot overwrite regular file with a symbolic link."
// - "Cannot overwrite directory with a symbolic link."
// - "Cannot overwrite symbolic link with a regular file."
panic!("Cannot overwrite {to_type} with a {from_type}.");
}
}
Ok(())
}
As shown in the example FileType also implements Display.
Warning
Note that, like std functions, FileType::read_at follows symlinks, therefore it is
impossible to get the FileType::Symlink variant. If you want symlink-awareness, use
FileType::symlink_read_at instead.
Conversions
- From
AsRef<Path>,fs::Metadataand std'sFileType. - From and into
libc::mode_t(via the feature"libc").
Feature flags
fs-err(enabled by default): uses fs-err for better IO error messages.libc: gives libc enum conversions.
Dependencies
~105KB