gpt4 book ai didi

rust - 如何在特定字符处拆分 &Path 的最后一个组件?

转载 作者:行者123 更新时间:2023-11-29 08:27:35 25 4
gpt4 key购买 nike

我有一个 &Path,我需要在第一个冒号处将最终组件文件名分成两部分。

我可以获得作为 &OsStr (path.file_name()) 的最终组件 - 但随后我有点无法实际对内容进行任何操作。 documentation给我几个选择:

  • to_str()to_string_lossy(),如果它不是 UTF-8(不能保证!),要么失败,要么返回损坏的字符串。
  • to_bytes()to_cstring(),但自 Rust 1.6 以来它们被标记为已弃用。
  • 在底部,我看到了带有 as_bytes() 方法的 impl OsStrExtOsStrExtstd::os::unix::ffi::OsStrExt,它被描述为“OsStr 的特定于 Unix 的扩展”。然而std::os::unix显然是“针对 Unix 平台的 std 的实验性扩展。”

我是否错过了更标准的内容?

碰巧我很乐意将此应用程序限制为 Unix,因此 OsStrExt::as_bytes 看起来是目前最好的选择;但它真的仍处于试验阶段,还是文档已过时?

最佳答案

没有标准的方法来处理文件系统路径,因为并非所有平台都对路径的表示和有效性有相同的规则。

在基于 Unix 的系统(Linux、Mac OS X 等)上,路径是不能包含空字节的字节序列 (u8)。 std::os::unix 模块在这些平台上可用。尽管该模块的描述中写着“实验性”,但其中大部分是稳定的,因此稳定的功能保证在未来的 Rust 1.x 版本中仍然可用。

在 Windows NT 上,路径是一系列 16 位字(通常解释为 UTF-16 代码单元),其中可能包含未配对的代理项。在内部,Rust 将这些路径转换为 ​​WTF-8 (这只是 UTF-8,加上允许未配对代理的编码,U+D800–U+DFFF)。 std::os::windows 模块在此平台上可用;它没有显示在 Rust 的文档网站上,但如果您在本地构建 std 的文档,它应该在那里。 The source for this module is here.它提供了different OsStrExt and OsStringExt traits允许您将 OsStr 编码为可能格式错误的 UTF-16 或将可能格式错误的 UTF-16 路径解码为 OsString,但不提供对WTF-8 表示法。

关于rust - 如何在特定字符处拆分 &Path 的最后一个组件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37368100/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com