如何在 Rust 中获取 path.join?

Saa*_*lah 21 node.js rust

如何在 Rust 中编写 path.join。我尝试了多个例子但无法得到它。

const exeDirectory = path.join(__dirname, '..', 'bin', 'openvpn.exe');
const processFile = path.join(__dirname, '..', '1');
Run Code Online (Sandbox Code Playgroud)

我想将这些 JS 行转换为 Rust。

tra*_*tor 25

使用具有方法的路径.join

Path::new("..").join("bin").join("openvpn.exe");
Run Code Online (Sandbox Code Playgroud)

  • 但请注意,每个“join()”每次都会分配一个全新的“PathBuf”。 (2认同)

Mas*_*inn 8

我可能遗漏了一些东西,但你看过它Path::join并与之PathBuf::push链接吗?

let exe_directory = Path::new(dirname).join("..").join("bin").join("openvpn.exe");
println!("{:?}", exe_directory);


let mut exe_directory = PathBuf::new();
exe_directory.push(dirname);
exe_directory.push("..");
exe_directory.push("bin");
exe_directory.push("openvpn.exe");
println!("{:?}", exe_directory);
Run Code Online (Sandbox Code Playgroud)

游乐场链接


Sve*_*ach 7

另一种选择是将字符串的迭代器收集到PathBuf

let path: PathBuf = ["..", "bin", "openvpn.exe"].iter().collect();
Run Code Online (Sandbox Code Playgroud)

这相当于创建一个新PathBuf的并调用.push()迭代器中的每个字符串。要将多个新组件添加到现有的PathBuf,您可以使用以下extend()方法:

let mut path = PathBuf::from(dir_name);
path.extend(&["..", "bin", "openvpn.exe"]);
Run Code Online (Sandbox Code Playgroud)