File tree 1 file changed +24
-0
lines changed
1 file changed +24
-0
lines changed Original file line number Diff line number Diff line change @@ -2702,6 +2702,30 @@ impl Path {
2702
2702
new_path
2703
2703
}
2704
2704
2705
+ /// Creates an owned [`PathBuf`] like `self` but with an extra extension.
2706
+ ///
2707
+ /// See [`PathBuf::add_extension`] for more details.
2708
+ ///
2709
+ /// # Examples
2710
+ ///
2711
+ /// ```
2712
+ /// use std::path::{Path, PathBuf};
2713
+ ///
2714
+ /// let path = Path::new("foo.rs");
2715
+ /// assert_eq!(path.with_extra_extension("txt"), PathBuf::from("foo.rs.txt"));
2716
+ ///
2717
+ /// let path = Path::new("foo.tar.gz");
2718
+ /// assert_eq!(path.with_extra_extension(""), PathBuf::from("foo.tar.gz"));
2719
+ /// assert_eq!(path.with_extra_extension("xz"), PathBuf::from("foo.tar.gz.xz"));
2720
+ /// assert_eq!(path.with_extra_extension("").with_extra_extension("txt"), PathBuf::from("foo.tar.gz.txt"));
2721
+ /// ```
2722
+ #[ stable( feature = "rust1" , since = "1.0.0" ) ]
2723
+ pub fn with_extra_extension < S : AsRef < OsStr > > ( & self , extension : S ) -> PathBuf {
2724
+ let mut new_path = self . to_path_buf ( ) ;
2725
+ new_path. add_extension ( extension) ;
2726
+ new_path
2727
+ }
2728
+
2705
2729
/// Produces an iterator over the [`Component`]s of the path.
2706
2730
///
2707
2731
/// When parsing the path, there is a small amount of normalization:
You can’t perform that action at this time.
0 commit comments