rustc/vendor/dunce-1.0.4
2024-06-24 14:48:22 +02:00
..
src New upstream version 1.79.0+dfsg1 2024-06-24 14:48:22 +02:00
.cargo-checksum.json New upstream version 1.79.0+dfsg1 2024-06-24 14:48:22 +02:00
Cargo.toml New upstream version 1.79.0+dfsg1 2024-06-24 14:48:22 +02:00
LICENSE New upstream version 1.79.0+dfsg1 2024-06-24 14:48:22 +02:00
README.md New upstream version 1.79.0+dfsg1 2024-06-24 14:48:22 +02:00

Dunce (de-UNC)

In Windows the regular paths (C:\foo) are supported by all programs, but have lots of bizarre restrictions for backwards compatibility with MS-DOS. There are also Windows NT UNC paths (\\?\C:\foo), which are more robust and with fewer gotchas, but are rarely supported by Windows programs. Even Microsoft's own!

This crate converts Windows UNC paths to the MS-DOS-compatible format whenever possible, but leaves UNC paths as-is when they can't be unambiguously expressed in a simpler way. This allows legacy programs to access all paths they can possibly access, and doesn't break any paths for UNC-aware programs.

In Rust the worst UNC offender is the fs::canonicalize() function. This crate provides a drop-in replacement for it that returns paths you'd expect.

On non-Windows platforms these functions leave paths unmodified, so it's safe to use them unconditionally for all platforms.