Function permissions::functions::is_executable
source · pub fn is_executable(path: impl AsRef<Path>) -> Result<bool>
Expand description
Check if current process has permission to execute.
If path
points to a directory, you’ll be checking if you have the right to
enter it.
Errors
Same as access_syscall
.
Examples
use permissions::is_executable;
use std::io;
fn main() -> io::Result<()> {
assert!(is_executable("/usr/bin/cat")?);
assert!(is_executable("/")?);
assert!(is_executable("src/")?);
assert!(!is_executable("src/lib.rs")?);
assert!(!is_executable("/root")?);
// may return `Err(kind: PermissionDenied)`
// println!("{}", is_executable("/root/any")?);
Ok(())
}
Examples found in repository?
examples/is_file_example.rs (line 13)
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
fn main() -> io::Result<()> {
// Asserts with files
let this_program_path = env::args().next().unwrap();
assert!(is_executable(&this_program_path)?);
let this_file = "examples/example2.rs";
assert!(is_readable(&this_file)?);
let temp_file = "temp.txt";
File::create(temp_file)?;
assert!(is_writable(&temp_file)?);
assert!(is_removable(&temp_file)?);
fs::remove_file(temp_file)?;
// -------------------------
// Let's try with directories too
let temp_directory = "temp/";
fs::create_dir(temp_directory)?;
assert!(is_readable(&temp_directory)?);
assert!(is_writable(&temp_directory)?);
assert!(is_executable(&temp_directory)?);
assert!(is_removable(&temp_directory)?);
fs::remove_dir(temp_directory)?;
println!("Finished.");
Ok(())
}