为了在处理大量文件系统路径时尽可能降低开销,我想避免为每个路径分配内存.有没有办法清理和重用PathBuf?
从我在文档中找到的内容来看,PathBuf当通过PathBuf::push(至少在POSIX系统上)处理绝对路径时,重用a 是可能的,但是PathBuf在处理相对路径时我还没有找到重用a的方法.
有没有办法以跨平台的方式做到这一点,还是我被迫以平台特定的方式处理这些路径?
一种方法是将PathBuf其转换为内部存储,清除它,然后将其转换回PathBuf.这不需要额外的分配:
use std::path::PathBuf;
fn main() {
let path = PathBuf::from("../tmp");
let mut path = path.into_os_string();
path.clear();
let mut path = PathBuf::from(path);
path.push("../etc");
assert_eq!(path, PathBuf::from("../etc"));
}
Run Code Online (Sandbox Code Playgroud)
(游乐场的固定链接)
| 归档时间: |
|
| 查看次数: |
200 次 |
| 最近记录: |