我在 Windows 11 上有一个有效的 Rust 设置,可以使用 PowerShell 命令行运行 hello world 程序:
PS C:\Users\Michael\Desktop\trying-cargo\%TEST> cargo new helloworld
Creating binary (application) `helloworld` package
note: see more `Cargo.toml` keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
PS C:\Users\Michael\Desktop\trying-cargo\%TEST> cd .\helloworld\
PS C:\Users\Michael\Desktop\trying-cargo\%TEST\helloworld> cargo run
Compiling helloworld v0.1.0 (C:\Users\Michael\Desktop\trying-cargo\%TEST\helloworld)
Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.19s
Running `target\debug\helloworld.exe`
Hello, world!
但是一旦我尝试添加依赖项,比如
cargo add regex
,然后再次 cargo run
,我就会收到错误
PS C:\Users\Michael\Desktop\trying-cargo\%TEST\helloworld> cargo run
Compiling memchr v2.7.4
...
error: failed to build archive: no such file or directory
我已经尝试过使用 crates.io 的几个板条箱,它们都会导致相同的错误。此错误消息是什么意思以及如何修复它?
事实证明,问题出在文件路径中有一个名为 %TEST 的文件夹。删除
%
字符/符号并重试后,一切正常。
在研究这个问题时,我了解了货物的详细输出,在检查了
cargo -v -v run
的输出后,我猜 %
被解释为一种变量替换,因为这就是在批处理文件中完成的方式。不过,我无法找到任何有关这可能如何影响 PowerShell 的文档,并且仍然不知道这是调用 rustc 的脚本错误还是 rustc 本身的参数解析错误。