Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Replace 更换生锈的零件_Replace_Path_Formatting_Rust - Fatal编程技术网

Replace 更换生锈的零件

Replace 更换生锈的零件,replace,path,formatting,rust,Replace,Path,Formatting,Rust,假设我有以下三条路径: let file = path::Path::new("/home/meurer/test/a/01/foo.txt"); let src = path::Path::new("/home/meurer/test/a"); let dst = path::Path::new("/home/meurer/test/b"); 现在,我想将文件复制到dst,但为此我需要更正路径,这样我就可以拥有新文件,其路径解析为/home/meurer/test/b/01/foo.txt。

假设我有以下三条路径:

let file = path::Path::new("/home/meurer/test/a/01/foo.txt");
let src = path::Path::new("/home/meurer/test/a");
let dst = path::Path::new("/home/meurer/test/b");
现在,我想将
文件
复制到
dst
,但为此我需要更正路径,这样我就可以拥有
新文件
,其路径解析为
/home/meurer/test/b/01/foo.txt
。换句话说,如何从
文件中删除
src
,然后将结果附加到
dst

/home/meurer/test/a/01/foo.txt
->
/home/meurer/test/b/01/foo.txt

请注意,我们不能假设
src
始终与
dst
类似,您可以使用:


像往常一样,您可能不想在生产代码中使用
expect
,这只是为了简洁的回答。

Dang!太快了:P@CentrilShepmaster总是回答得很快,我只是理解Shepmaster回答的问题^^^@central在这种情况下,我有一个不公平的优势。这个问题实际上是第一个被问到的,所以在问题发布到这里之前,我已经准备好了答案。
use std::path::Path;

fn main() {
    let file = Path::new("/home/meurer/test/a/01/foo.txt");
    let src = Path::new("/home/meurer/test/a");
    let dst = Path::new("/home/meurer/test/b");

    let relative = file.strip_prefix(src).expect("Not a prefix");
    let result = dst.join(relative);

    assert_eq!(result, Path::new("/home/meurer/test/b/01/foo.txt"));
}