我正在尝试从Rust文件中提取包含文件夹。 有没有办法从String
获取包含文件夹?例如,下面的代码可以工作,但它很麻烦:
let path = "/path/to/file.txt";
let mut path_arr: Vec<&str> = path.split('/').collect();
path_arr.pop();
let new_string = path_arr.join("/");
assert_eq!("/path/to", new_string);
我正在尝试从Rust文件中提取包含文件夹。 有没有办法从String
获取包含文件夹?例如,下面的代码可以工作,但它很麻烦:
let path = "/path/to/file.txt";
let mut path_arr: Vec<&str> = path.split('/').collect();
path_arr.pop();
let new_string = path_arr.join("/");
assert_eq!("/path/to", new_string);
有两种内置类型用于此操作:Path
和 PathBuf
:
use std::path::PathBuf;
let path = PathBuf::from("/path/to/file.txt");
let dir = path.parent().unwrap();
assert_eq!("/path/to", dir.to_str().unwrap());
Path
或 PathBuf
转换回 &str
或 String
,因为大多数 std
API 可以直接接受它们。