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.
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.