@@ -2592,6 +2592,32 @@ impl Path {
2592
2592
fs:: metadata ( self ) . map ( |m| m. is_dir ( ) ) . unwrap_or ( false )
2593
2593
}
2594
2594
2595
+ /// Returns true if the path exists on disk and is pointing at a symbolic link.
2596
+ ///
2597
+ /// This function will not traverse symbolic links.
2598
+ /// In case of a broken symbolic link this will also return true.
2599
+ ///
2600
+ /// If you cannot access the directory containing the file, e.g., because of a
2601
+ /// permission error, this will return false.
2602
+ ///
2603
+ /// # Examples
2604
+ ///
2605
+ #[ cfg_attr( unix, doc = "```no_run" ) ]
2606
+ #[ cfg_attr( not( unix) , doc = "```ignore" ) ]
2607
+ /// #![feature(is_symlink)]
2608
+ /// use std::path::Path;
2609
+ /// use std::os::unix::fs::symlink;
2610
+ ///
2611
+ /// let link_path = Path::new("link");
2612
+ /// symlink("/origin_does_not_exists/", link_path).unwrap();
2613
+ /// assert_eq!(link_path.is_symlink(), true);
2614
+ /// assert_eq!(link_path.exists(), false);
2615
+ /// ```
2616
+ #[ unstable( feature = "is_symlink" , issue = "85748" ) ]
2617
+ pub fn is_symlink ( & self ) -> bool {
2618
+ fs:: symlink_metadata ( self ) . map ( |m| m. is_symlink ( ) ) . unwrap_or ( false )
2619
+ }
2620
+
2595
2621
/// Converts a [`Box<Path>`](Box) into a [`PathBuf`] without copying or
2596
2622
/// allocating.
2597
2623
#[ stable( feature = "into_boxed_path" , since = "1.20.0" ) ]
0 commit comments