# NormPath
This crate provides methods to normalize paths in the recommended way for the
operating system.
It was made to fix a recurring bug caused by using [`fs::canonicalize`] on
Windows: [#45067], [#48249], [#52440], [#55812], [#58613], [#59107], [#74327].
Normalization is usually a better choice unless you specifically need a
canonical path.
[![GitHub Build Status](https://github.com/dylni/normpath/actions/workflows/build.yml/badge.svg?branch=master)](https://github.com/dylni/normpath/actions/workflows/build.yml?query=branch%3Amaster)
## Usage
Add the following lines to your "Cargo.toml" file:
```toml
[dependencies]
normpath = "1.3"
```
See the [documentation] for available functionality and examples.
## Rust version support
The minimum supported Rust toolchain version is currently Rust 1.74.0.
Minor version updates may increase this version requirement. However, the
previous two Rust releases will always be supported. If the minimum Rust
version must not be increased, use a tilde requirement to prevent updating this
crate's minor version:
```toml
[dependencies]
normpath = "~1.3"
```
## License
Licensing terms are specified in [COPYRIGHT].
Unless you explicitly state otherwise, any contribution submitted for inclusion
in this crate, as defined in [LICENSE-APACHE], shall be licensed according to
[COPYRIGHT], without any additional terms or conditions.
### Third-party content
This crate includes copies and modifications of content developed by third
parties:
- [src/cmp.rs] and [tests/rust.rs] contain modifications of code from The Rust
Programming Language, licensed under the MIT License or the Apache License,
Version 2.0.
- [src/common/localize/macos/fruity.rs] contains modifications of code from
crate [fruity], licensed under the MIT License or the Apache License,
Version 2.0.
See those files for more details.
Copies of third-party licenses can be found in [LICENSE-THIRD-PARTY].
[#45067]: https://github.com/rust-lang/rust/issues/45067
[#48249]: https://github.com/rust-lang/rust/issues/48249
[#52440]: https://github.com/rust-lang/rust/issues/52440
[#55812]: https://github.com/rust-lang/rust/issues/55812
[#58613]: https://github.com/rust-lang/rust/issues/58613
[#59107]: https://github.com/rust-lang/rust/issues/59107
[#74327]: https://github.com/rust-lang/rust/issues/74327
[COPYRIGHT]: https://github.com/dylni/normpath/blob/master/COPYRIGHT
[documentation]: https://docs.rs/normpath
[fruity]: https://crates.io/crates/fruity
[`fs::canonicalize`]: https://doc.rust-lang.org/std/fs/fn.canonicalize.html
[LICENSE-APACHE]: https://github.com/dylni/normpath/blob/master/LICENSE-APACHE
[LICENSE-THIRD-PARTY]: https://github.com/dylni/normpath/blob/master/LICENSE-THIRD-PARTY
[src/cmp.rs]: https://github.com/dylni/normpath/blob/master/src/cmp.rs
[src/common/localize/macos/fruity.rs]: https://github.com/dylni/normpath/blob/master/src/common/localize/macos/fruity.rs
[tests/rust.rs]: https://github.com/dylni/normpath/blob/master/tests/rust.rs