Function permissions::functions::is_writable
source · 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(())
}