Права файла в Rust
Права файла читают из сведений о пути. После успешного запроса метаданных метод прав отдает значение, которое на разных системах устроено по-разному. Часто достаточно проверить, открыт ли файл только для чтения.
Создадим файл и посмотрим флаг только чтения:
use std::fs;
use std::io;
fn show_readonly() -> io::Result<()> {
let info = fs::metadata("note.txt")?;
let perm = info.permissions();
if perm.readonly() {
println!("readonly");
} else {
println!("writable");
}
Ok(())
}
fn main() -> io::Result<()> {
fs::write("note.txt", "x")?;
show_readonly()?;
Ok(())
}
Сами права можно вывести для отладки через форматирование:
use std::fs;
use std::io;
fn main() -> io::Result<()> {
let info = fs::metadata("note.txt")?;
let perm = info.permissions();
println!("{:?}", perm);
Ok(())
}
Дан путь:
let path = "data/note.txt";
Создайте файл, запросите метаданные
и выведите "readonly" или "writable".
Дан путь:
let path = "note.txt";
Скажите, из какого шага берут объект прав.
Оформите проверку прав в функцию с
исходом и вызовите ее из main.