Microsoft Windows has Universal Naming Convention (UNC) paths, see https://learn.microsoft.com/en-us/dotnet/standard/io/file-path-formats#unc-paths
The Rust standard library normalizes paths to this form when calling
std::fs::canonicalize, see
https://doc.rust-lang.org/std/fs/fn.canonicalize.html
However, some programs, do not parse these paths correctly, including
our ally git:
$ git clone \\?\C:\Users\lorenz\tmp
Cloning into 'tmp'...
ssh: Could not resolve hostname \\\\?\\c: No such host is known.
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
The dunce crate solves the problem of having to deal with
normalization and avoiding weird UNC paths for us. Note that on
non-Windows platforms, it behaves exactly like
std::fs::canonicalize!
Microsoft Windows has Universal Naming Convention (UNC) paths, see https://learn.microsoft.com/en-us/dotnet/standard/io/file-path-formats#unc-paths
The Rust standard library normalizes paths to this form when calling
std::fs::canonicalize, see
https://doc.rust-lang.org/std/fs/fn.canonicalize.html
However, some programs, do not parse these paths correctly, including
our ally git:
$ git clone \\?\C:\Users\lorenz\tmp
Cloning into 'tmp'...
ssh: Could not resolve hostname \\\\?\\c: No such host is known.
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
The dunce crate solves the problem of having to deal with
normalization and avoiding weird UNC paths for us. Note that on
non-Windows platforms, it behaves exactly like
std::fs::canonicalize!
Looks good to me
Rebased