pub fn is_writable(path: impl AsRef<Path>) -> Result<bool>
Expand description

Check if current process has permission to write.

Errors

Same as access_syscall.

Examples

use permissions::is_writable;
use std::io;

fn main() -> io::Result<()> {
    println!("{}", is_writable("src/lib.rs")?);
    println!("{}", is_writable("/root")?);
    println!("{}", is_writable("/")?);

    // may return `Err(kind: PermissionDenied)`
    // println!("{}", is_writable("/root/any")?);

    Ok(())
}
Examples found in repository?
examples/is_file_example.rs (line 20)
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(())
}