我如何在Rust中获得相对路径?

发布于 2025-02-04 15:50:02 字数 763 浏览 0 评论 0原文

我想创建一个程序并将其编译为WASM。该程序在Windows和Unix上运行。

该程序从给定的base_path生成了fileName的相对路径,并将其转换为POSIX:

use pathdiff::diff_paths;

let relative_filename = diff_paths(filename, base_path).unwrap();
let path_parts = relative_filename.components().map(|component| component.as_os_str().to_str().unwrap()).collect::<Vec<&str>>();
let relative_posix_path = path_parts.join("/");

我认为这将使我能够为两个系统生成一致的相对路径,例如:

/// e.g. "/foo/", "/bar/baz.txt" -> "../bar/baz.txt"
/// e.g. "C:\foo\", "C:\foo\baz.txt" -> "../bar/baz.txt"

不幸的是,当汇编为WASM时,似乎不再能够解析Windows文件路径。

是否有跨平台处理Rust路径的方法?

I want to create a program and compile it to WASM. The program runs on Windows and Unix.

The program generates a relative path for a filename from the given base_path and converts it to posix:

use pathdiff::diff_paths;

let relative_filename = diff_paths(filename, base_path).unwrap();
let path_parts = relative_filename.components().map(|component| component.as_os_str().to_str().unwrap()).collect::<Vec<&str>>();
let relative_posix_path = path_parts.join("/");

I thought this would allow me to generate a consistent relative path for both systems for example:

/// e.g. "/foo/", "/bar/baz.txt" -> "../bar/baz.txt"
/// e.g. "C:\foo\", "C:\foo\baz.txt" -> "../bar/baz.txt"

Unfortunately when compiled to WASM it seems not to be able to parse Windows file paths anymore.

Is there a cross platform way to handle paths in rust?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文