我想获取路径的各个部分并删除它的第一部分和最后一部分。
例子:
a/b/c/d.txt -> b/c
我认为可以通过简单的列表操作来完成。但是我找不到更好的方法:
let mut comps: Vec<_> = content_file.components().skip(1).collect();
comps.reverse();
let mut ret: Vec<_> = comps.iter().skip(1).collect();
ret.reverse();
有更好的方法来实现这一目标吗?
我个人最喜欢的迭代器
as_path
方法Components
,没有额外的分配,并且不需要冗余地比较前缀或做其他额外的工作:或者你可以编写这个 oneliner,它会进行不必要的分配:
您可以使用
Path::parent
和Path::strip_prefix
方法(请参阅此游乐场):有了输入
a/b/c.txt
,就产生了b
。