我不明白Rust如何连接文件路径.为什么这不起作用:
fn main() {
let root = std::path::Path::new("resources/");
let uri = std::path::Path::new("/js/main.js");
let path = root.join(uri);
assert_eq!(path.to_str(), Some("resources/js/main.js"));
}
Run Code Online (Sandbox Code Playgroud)
失败了:
thread 'main' panicked at 'assertion failed: `(left == right)`
left: `Some("/js/main.js")`,
right: `Some("resources/js/main.js")`', src/main.rs:5:5
Run Code Online (Sandbox Code Playgroud)
我在文档中看到"推动绝对路径取代现有路径",但这似乎是一个可怕的想法,会吸引很多人.
在这种情况下,我如何安全地剥离绝对路径,或使其相对?
这是因为"/js/main.js"被视为绝对路径(doc)
如果path是绝对路径,则它将替换当前路径.
在Windows上:
- 如果
path有一个根但没有前缀(例如\ windows),它将替换除前缀(如果有)之外的所有内容self.- 如果
path有前缀但没有root,则替换self.
如果您将示例更改为"js/main.js"然后使用join,它将被正确构建(游乐场)