Use std::fs::symlink_metadata to inspect a path without following the link, or std::os::unix::fs::symlink to create one. This prevents accidental traversal to the target file when checking properties like size or permissions.
use std::fs;
use std::os::unix::fs::symlink;
fn main() -> std::io::Result<()> {
// Create a symlink
symlink("target_file.txt", "my_link.txt")?;
// Check if it is a symlink without following it
let metadata = fs::symlink_metadata("my_link.txt")?;
if metadata.file_type().is_symlink() {
println!("It is a symlink");
}
Ok(())
}