NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
crates.io · #1501 most downloaded on crates.io
Provides typed variants of Path and PathBuf for Unix and Windows
Last release 7 months ago
11 Feb 2026
Ships fairly regularly
a new release about every 2 months
Nearly every release is documented
notes for 24 of 24 stable releases
Nothing withdrawn
no release was ever pulled
4 years old
24 releases · first in 2022
One column per quarter.
Remove AsRef<Path> for Cow<[u8]> and AsRef<Utf8Path> for Cow as they conflict with other libraries by @Its-Just-Nans in 7dc7403
Full Changelog: v0.12.2...v0.12.3
Add proper license files to the repo by @sugoi1 in #58
fix: enable wasip2 feature for wasm32-wasip2 target by @cdmurph32 in #57
Full Changelog: v0.12.0...v0.12.1
std::io on wasm targets where the absolutize
function (which uses io) is not available (#57)Fix type reference for parent() methods mentioned in #44
Full Changelog: v0.11.0...v0.12.0
Lift static restriction for Path methods by @fominok in #46
Encoding and Utf8Encoding traits by @fominok in #47As a consequence of #47, this bumps the minimum Rust version to 1.65.0.
Full Changelog: v0.10.0...v0.11.0
Encoding and Utf8Encoding traits as GATs introduced
in Rust 1.65.0 enable us to relax this requirement (#47)dtolnay/rust-toolchain to fix issues where minimum version of Rust
wasn't being applied in tests (#48)Add PlatformEncoding and Utf8PlatformEncoding structs that mirror the functionality of NativeEncoding and Utf8NativeEncoding respectively, but as dist
PlatformEncoding and Utf8PlatformEncoding structs that mirror theNativeEncoding and Utf8NativeEncoding respectively, butPlatformPath and PlatformPathBuf type aliases that use PlatformEncoding.Utf8PlatformPath and Utf8PlatformPathBuf type aliases that use Utf8PlatformEncoding.AsRef<ffi::OsStr> for Utf8Path and Utf8PathBuf.TryAsRef<Utf8Path> for ffi::OsStr and ffi::OsString.From<Utf8PathBuf> for ffi::OsString.TryAsRef<std::path::Path> for Path<T>.TryAsRef<Path<T>> for std::path::Path.TryAsRef<std::path::Path> for TypedPath.TryAsRef<std::path::Path> for Utf8TypedPath.TryFrom<Utf8TypedPathBuf> for std::path::PathBuf.TryFrom<Utf8TypedPathBuf> for std::path::PathBuf.From<Utf8UnixPathBuf> for std::path::PathBuf.From<Utf8WindowsPathBuf> for std::path::PathBuf.Full Changelog: v0.9.3...v0.10.0
PlatformEncoding and Utf8PlatformEncoding structs that mirror the
functionality of NativeEncoding and Utf8NativeEncoding respectively, but
as distinct structs instead of type aliases.PlatformPath and PlatformPathBuf type aliases that use PlatformEncoding.Utf8PlatformPath and Utf8PlatformPathBuf type aliases that use Utf8PlatformEncoding.AsRef<ffi::OsStr> for Utf8Path and Utf8PathBuf.TryAsRef<Utf8Path> for ffi::OsStr and ffi::OsString.From<Utf8PathBuf> for ffi::OsString.TryAsRef<std::path::Path> for Path<T>.TryAsRef<Path<T>> for std::path::Path.TryAsRef<std::path::Path> for TypedPath.TryAsRef<std::path::Path> for Utf8TypedPath.TryFrom<Utf8TypedPathBuf> for std::path::PathBuf.TryFrom<Utf8TypedPathBuf> for std::path::PathBuf.From<Utf8UnixPathBuf> for std::path::PathBuf.From<Utf8WindowsPathBuf> for std::path::PathBuf.Change lib.rs permissions to remove execution by @danielmellado in #33
Full Changelog: v0.9.2...v0.9.3
Fix TypedPathBuf::windows() and Utf8TypedPathBuf::windows() to properly return an instance of WindowsPathBuf and Utf8WindowsPathBuf respectively. Befo
TypedPathBuf::windows() and Utf8TypedPathBuf::windows() to properly return an instance of WindowsPathBuf and Utf8WindowsPathBuf respectively. Before this fix, the function instead returned a Unix path wrapper. (by @vnghia in #30)rust-version in Cargo.tomlFull Changelog: v0.9.1...v0.9.2
windows() function of TypedPathBuf and Utf8TypedPathBuf to properly
return an instance of WindowsPathBuf and Utf8WindowsPathBuf respectively.
Before this fix, the function instead returned a Unix path wrapper.
(#30)rust-version.add back missing derives by @stevefan1999-personal in #27
Full Changelog: v0.9.0...v0.9.1
Hash, PartialOrd, and Ord implementations for TypedPath and TypedPathBuf enumerations.Add typed-path versions for current_exe and temp_dir , including UTF8 variants by @simongoricar in #24
current_exe and temp_dir, including UTF8 variants by @simongoricar in #24Full Changelog: v0.8.0...v0.9.0
current_exe and utf8_current_exe functions to the utils module to return native pathbufs wrapping the standard library paths.temp_dir and utf8_temp_dir functions to the utils module to return native pathbufs wrapping the standard library paths.Add push_checked function, which ensures that any path added to an existing PathBuf or TypedPathBuf must abide by the following rules:
push_checked function, which ensures that any path added to an existing PathBuf or TypedPathBuf must abide by the following rules:
C:.join_checked function, which ensures that any path joied with an existing path follows the rules of push_checkedwith_encoding_checked function to ensure that the resulting path from an encoding conversion is still validwith_unix_encoding_checked and with_windows_encoding_checked functions as shortcuts to with_encoding_checkedis_valid to Component and Utf8Component traits alongside Path and Utf8Path to indicate if a component/path is valid for the given encodingSupport wasm family for compilation
wasm family for compilationSupport no_std environments, when default-features = false is set for the crate
no_std environments, when default-features = false is set for the crateRefactor crate exports such that everything other than constants are now top-level exports
typed_path::unix::UnixComponent is now typed_path::UnixComponenttyped_path::unix::Utf8UnixComponent is now typed_path::Utf8UnixComponenttyped_path::windows::WindowsComponent is now typed_path::WindowsComponenttyped_path::windows::Utf8WindowsComponent is now typed_path::Utf8WindowsComponenttyped_path::windows::WindowsPrefix is now typed_path::WindowsPrefixtyped_path::windows::Utf8WindowsPrefix is now typed_path::Utf8WindowsPrefixconstants module, broken out by unix
and windows modules to house each set of constantsTypedPath and Utf8TypedPath now match the method signature of Path for
constructing self with ::new(...)Path and PathBuf have been ported over
to TypedPath and TypedPathBufstd::fmt::Display for Utf8UnixComponent,
Utf8WindowsComponent, and Utf8TypedComponentAdd TypedPath, Utf8TypedPath, TypedPathBuf, and Utf8TypedPathBuf enums to support code that can operate on both Windows and Unix paths
TypedPath, Utf8TypedPath, TypedPathBuf, and Utf8TypedPathBuf
enums to support code that can operate on both Windows and Unix pathsAdd From<&Utf8NativePath> for std::PathBuf
From<&Utf8NativePath> for std::path::PathBufAdd AsRef for Utf8NativePath and Utf8NativePathBuf
AsRef<std::path::Path> for Utf8NativePath and Utf8NativePathBufFrom<Utf8NativePathBuf> for std::path::PathBufrustfmt.toml to dictate formatting using cargo +nightly fmt --allAdd normalize method to Path and Utf8Path to support resolving . and .. across Windows and Unix encodings
normalize method to Path and Utf8Path to support resolving . and
.. across Windows and Unix encodingsis_parent and is_current methods to Component and Utf8Component
traits with implementations for both Unix and Windows component
implementationsroot, parent, and current static methods to Component and
Utf8Component traits to support creating the instances from genericsabsolutize to both normalize the path and - in the case of relative
paths - prefix the path with the current working directorywith_encoding to Path and Utf8Path support converting between the
Unix and Windows encoding typesutils::current_dir and utils::utf8_current_dir to retrieve the
current working directory as either a PathBuf or Utf8PathBufwith_unix_encoding and with_windows_encoding to Path and Utf8Path
support converting between the Unix and Windows encoding typeshas_unix_encoding and has_windows_encoding to Path and Utf8Path
to detect explicit encodingsFix implementation of Display for Utf8Path to use underlying str Display instead of Debug
Display for Utf8Path to use underlying str
Display instead of DebugFix joining of empty path with relative path resulting in absolute path when using UnixPath::join or Utf8UnixPath::join
UnixPath::join or Utf8UnixPath::join (#6)Add Clone implementation for Box > and Box >
Clone implementation for Box<Path<T>> and Box<Utf8Path<T>>Clone implementation for PathBuf<T> and Utf8PathBuf<T> requiring a
clone implementation for the encoding, which is not necessary
(#5)Debug implementation for Path<T>, Utf8Path<T>, PathBuf<T>, and
Utf8PathBuf<T> to no longer require debug implementation for encoding,
which is not necessarylabel method to encoding implementations, used for debugging purposesUpdate README with more UTF8 examples and add proper testing of README examples via doctest
Added UTF-8 variants of Path, PathBuf, Components, Component, and other data structures to support str versus [u8]
Path, PathBuf, Components, Component, and
other data structures to support str versus [u8]Clone, Debug, Display, and Sized on
Encoding and subsequent implementations UnixEncoding and
WindowsEncodingInitial release of the library!
Initial release of the library!
Your coding agent can read these notes before it upgrades. Set up the MCP server →