Path methods โ€” symlinks improvement

We have a method exists() for Path in std, its code:

 pub fn exists(&self) -> bool {

But symlinks use another metadata getter:


So we can't check whether symlink exists because exists() checks symlink origin.

Also, there is no method called is_symlink()

I think these methods are simple and useful, why aren't they in std?


PR: Path methods โ€” symlinks improvement by maxwase ยท Pull Request #85747 ยท rust-lang/rust ยท GitHub

Tracking issue: Tracking Issue for is_symlink ยท Issue #85748 ยท rust-lang/rust ยท GitHub


Yes, but Path doesn't have this method, though is_dir() and is_file() exist

I agree that Path::is_symlink would be quite useful.

I agree with that, it's been a bit confusing at first so I think adding an .is_symlink() method would be quite nice - unless there are specific reasons this does not already exist?

I'd like to see .is_symlink() myself (though I don't have Rust code that cares right now, I do have it in other languages).

IIRC, Path::exists() uses stat, so with this, it is possible that !broken_symlink.exists() && broken_symlink.is_symlink() is true. So it might be a bit confusing without reading the docs (which does mention this issue at least). Though, IMO, using stat was a mistake, I don't think that can be fixed anymore.

See also this thread:

While exists might not be able to change, try_exists is still experimental so it can (at least potentially). I personally would be interested in changing the behaviour but admittedly the presence of exists does make it a harder sell then it might otherwise be.

Deprecating exists is possible once try_exists is stable. :slight_smile: