【发布时间】:2021-07-03 14:14:12
【问题描述】:
我想更改&Path 的第一个祖先,可能通过像这样返回一个新的PathBuf。
fn change_parent(path: &Path, new_parent: &Path) -> PathBuf;
这就是我期望它的工作方式。
let old_path = change_root(Path::new("/hello/world.html"), Path::new("/html"));
let new_path = PathBuf::from("/html/world.html");
assert_eq!(old_path, new_path)
我尝试了.ancestors(),但Path::new("/hello/world.html").ancestors(); 在["/hello/world.html", "/hello", "/"] 上返回了一个迭代器,这与我想要的相反。我想要的是["/hello/world.html", "hello/world.html", "/world.html"],这样我就可以轻松地追加一条新路径。
我应该切换到在"(/|\)" 上使用split,然后替换第一个结果吗?
【问题讨论】:
-
你看过
Path::components吗?