Функция symlink
Функция symlink создаёт символическую ссылку
(симлинк) по указанному пути, которая указывает
на существующий файл или директорию. Первым параметром
функция принимает путь, на который будет указывать ссылка
(цель), а вторым - путь, по которому будет создана сама
символическая ссылка. Функция возвращает
io::Result<()>: значение Ok(()) при успешном
создании ссылки и ошибку Err в противном случае.
Символическая ссылка - это специальный файл, который содержит путь к другому файлу или директории. При обращении к симлинку операционная система перенаправляет запрос к его цели. В отличие от жёсткой ссылки, симлинк может указывать на несуществующий путь, а также на директории и объекты на других файловых системах.
Синтаксис
use std::fs;
fs::symlink(original, link)
Пример
Давайте создадим символическую ссылку "link.txt",
которая будет указывать на файл "target.txt":
use std::fs;
use std::io::Write;
fn main()
{
fs::write("target.txt", "hello").unwrap();
fs::symlink("target.txt", "link.txt").unwrap();
let res = fs::read_to_string("link.txt").unwrap();
println!("{}", res);
}
Результат выполнения кода:
"hello"
Пример
Давайте проверим, что символическая ссылка действительно
указывает на исходный файл, прочитав её цель с помощью
функции read_link:
use std::fs;
fn main()
{
fs::write("target.txt", "hello").unwrap();
fs::symlink("target.txt", "link.txt").unwrap();
let path = fs::read_link("link.txt").unwrap();
println!("{:?}", path);
}
Результат выполнения кода:
"target.txt"
Пример
Давайте попробуем создать символическую ссылку по пути, который уже занят, и обработаем ошибку:
use std::fs;
fn main()
{
fs::write("target.txt", "hello").unwrap();
fs::symlink("target.txt", "link.txt").unwrap();
let res = fs::symlink("target.txt", "link.txt");
println!("{}", res.is_err());
}
Результат выполнения кода:
true
Смотрите также
-
функция
read_link,
которая возвращает путь, на который указывает символическая ссылка -
функция
hard_link,
которая создаёт жёсткую ссылку на файл -
функция
metadata,
которая возвращает метаданные файла или директории -
функция
canonicalize,
которая возвращает канонический абсолютный путь