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

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(())
}