Function tracing::stdlib::fs::try_exists

source ·
pub fn try_exists<P>(path: P) -> Result<bool, Error>
where P: AsRef<Path>,
🔬This is a nightly-only experimental API. (fs_try_exists #83186)
Expand description

Returns Ok(true) if the path points at an existing entity.

This function will traverse symbolic links to query information about the destination file. In case of broken symbolic links this will return Ok(false).

As opposed to the Path::exists method, this will only return Ok(true) or Ok(false) if the path was verified to exist or not exist. If its existence can neither be confirmed nor denied, an Err(_) will be propagated instead. This can be the case if e.g. listing permission is denied on one of the parent directories.

Note that while this avoids some pitfalls of the exists() method, it still can not prevent time-of-check to time-of-use (TOCTOU) bugs. You should only use it in scenarios where those bugs are not an issue.

§Examples

#![feature(fs_try_exists)]
use std::fs;

assert!(!fs::try_exists("does_not_exist.txt").expect("Can't check existence of file does_not_exist.txt"));
assert!(fs::try_exists("/root/secret_file.txt").is_err());