Function permissions::functions::is_removable
source · pub fn is_removable(path: impl AsRef<Path>) -> Result<bool>
Expand description
Check if current process has permission to remove file.
That is, if the current process has permission of write
to the parent
directory.
Returns false
if there’s no parent directory (because can’t delete the root directory).
This is the same as calling is_creatable
.
Errors
- If
Path::canonicalize
fails. - Same as
access_syscall
.
Examples
use permissions::is_removable;
use std::io;
fn main() -> io::Result<()> {
println!("{}", is_removable("src/lib.rs")?);
println!("{}", is_removable("/root")?);
println!("{}", is_removable("/")?);
// May return `Err(kind: PermissionDenied)`
// println!("{}", is_removable("/root/any")?);
Ok(())
}
Examples found in repository?
examples/is_file_example.rs (line 21)
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(())
}