Releases: rhysd/path-slash
Releases · rhysd/path-slash
v0.2.1
- Added
CowExt::to_slashandCowExt::to_slash_lossy.PathExtis no longer necessary to convertCow<'a, Path>paths into slash paths. - Clarified minimum supported Rust version. Rust 1.38 or later is supported.
rust-versionfield inCargo.tomlwas added so thatcargocan check the MSRV is met. - Improved documents of trait methods. The documents were moved from implementations of the trait methods to definitions of them so that users can find out the documents more easily. Documents for implementations are folded by default, but definitions aren't.
v0.2.0
- BREAKING:
to_slashandto_slash_lossyreturnCow<'_, str>instead ofString. Now heap allocation hapnens only when path separator is replaced. On Unix-like OS, almost all heap allocations can be removed by this change. Migrating from 0.1 to 0.2 is quite easy by addingCow::into_ownedcall. If&stris sufficient for your use case,Cow::as_refis better to avoid heap allocation. (#9)API changes are as follows:use path_slash::PathExt as _; // 0.1 let s: Option<String> = Path::new("/a/b").to_slash(); let s: String = Path::new("/a/b").to_slash_lossy(); // 0.2 let s: Option<String> = Path::new("/a/b").to_slash().map(Cow::into_owned); let s: String = Path::new("/a/b").to_slash_lossy().into_owned();
- 0.1.5
Path::to_slash(&self) -> Option<String>Path::to_slash_lossy(&self) -> String
- 0.2.0
Path::to_slash(&self) -> Option<Cow<'_, Path>>Path::to_slash_lossy(&self) -> Cow<'_, Path>
- 0.1.5
- BREAKING: Fix inconsistency on Windows and on Unix-like OS in terms of trailing slash in path. Now a trailing slash in path is always preserved. (#10)
// 0.1 #[cfg(target_os = "windows")] assert_eq!(Path::new(r"\a\b\").to_slash_lossy(), "/a/b"); // Trailing slash is removed #[cfg(not(target_os = "windows"))] assert_eq!(Path::new("/a/b/").to_slash_lossy(), "/a/b/"); // Trailing slash is preserved // 0.2 #[cfg(target_os = "windows")] assert_eq!(Path::new(r"\a\b\").to_slash_lossy(), "/a/b/"); // Trailing slash is preserved #[cfg(not(target_os = "windows"))] assert_eq!(Path::new("/a/b/").to_slash_lossy(), "/a/b/"); // Trailing slash is preserved
- New API
path_slash::CowExtis added to extendCow<'_, Path>. Its methods convert slash paths intoCow<'_, Path>. It is useful to avoid heap allocations as much as possible compared withPathBufExt. See the API document for more details. (#9)All methods added by importinguse path_slash::CowExt as _; let p = Cow::from_slash("foo/bar/piyo.txt"); // Heap allocation only happens on Windows #[cfg(target_os = "windows")] assert_eq!(p, Cow::Owned(PathBuf::from(r"foo\bar\piyo.txt"))); #[cfg(not(target_os = "windows"))] assert_eq!(p, Cow::Borrowed(Path::new("foo/bar/piyo.txt")));
CowExtare as follows:Cow::<Path>::from_slash(s: &str) -> SelfCow::<Path>::from_slash_lossy(s: &OsStr) -> SelfCow::<Path>::from_backslash(s: &str) -> SelfCow::<Path>::from_backslash_lossy(s: &OsStr) -> Self
- More tests are added. Now the line coverage is 100%.
- UTF-16 test cases for native encoding on Windows
- All error cases including broken UTF-8 and UTF-16 sequences
v0.1.5
v0.1.4
v0.1.3
0.1.2
- Fix: Root path separator was doubled when the path contains Windows driver letter. For example, when
C:/foowas given,to_slashconverted it toC:\\foo. In this version it converts it toC:\foocorrectly. - Improve: Remove a redundant allocation at calling
to_slash()method.