#file-path #path #convert-file #slash #windows-file #separator

path-slash

文件路径与斜杠路径之间的转换

9 个版本

0.2.1 2022 年 8 月 6 日
0.2.0 2022 年 7 月 5 日
0.1.5 2022 年 6 月 29 日
0.1.4 2021 年 1 月 15 日
0.1.0 2018 年 12 月 30 日

文件系统 类别中排名第 19

Download history 86201/week @ 2024-04-23 84898/week @ 2024-04-30 84795/week @ 2024-05-07 92955/week @ 2024-05-14 94010/week @ 2024-05-21 100154/week @ 2024-05-28 100772/week @ 2024-06-04 98842/week @ 2024-06-11 92744/week @ 2024-06-18 98915/week @ 2024-06-25 84389/week @ 2024-07-02 87985/week @ 2024-07-09 97758/week @ 2024-07-16 108418/week @ 2024-07-23 118895/week @ 2024-07-30 113433/week @ 2024-08-06

每月下载 457,047
225 Crates 中使用 (其中 96 个直接使用)

采用 MIT 许可证

25KB
200

Rust 库,用于将文件路径从/到斜杠路径或从/到斜杠路径进行转换

crates.io documentation CI codecov-badge

path-slash 是一个微小的库,用于将文件路径(例如 foo/barfoo\barC:\foo\bar)转换为斜杠路径(例如 foo/barC:/foo/bar)。

在类 Unix 操作系统上,路径分隔符默认为斜杠 /。可能需要转换 Windows 路径。但在 Windows 上,文件路径分隔符 \ 需要替换为斜杠 /(当然,用于转义字符的反斜杠 \ 不应替换)。

支持的 Rust 版本是 1.38.0 或更高版本。

本软件包受到了 Go 的 path/filepath.FromSlashpath/filepath.ToSlash 的启发。

使用方法

path_slash::PathExtpath_slash::PathBufExtpath_slash::CowExt 特性被定义。通过使用它们,std::path::Pathstd::path::PathBufstd::borrow::Cow<'_, Path> 获得了一些方法和相关函数。

  • PathExt
    • Path::to_slash(&self) -> Option<Cow<'_, Path>>
    • Path::to_slash_lossy(&self) -> Cow<'_, Path>
  • PathBufExt
    • PathBuf::from_slash<S: AsRef<str>>(s:S) ->PathBuf
    • PathBuf::from_slash_lossy<S: AsRef<OsStr>>(s:S) ->PathBuf
    • PathBuf::from_backslash<S: AsRef<str>>(s:S) ->PathBuf
    • PathBuf::from_backslash_lossy<S: AsRef<OsStr>>(s:S) ->PathBuf
    • PathBuf::to_slash(&self) -> Option<Cow<'_, Path>>
    • PathBuf::to_slash_lossy(&self) -> Cow<'_, Path>
  • CowExt
    • Cow::<Path>::from_slash(s: &str) -> Self
    • Cow::<Path>::from_slash_lossy(s: &OsStr) -> Self
    • Cow::<Path>::from_backslash(s: &str) -> Self
    • Cow::<Path>::from_backslash_lossy(s: &OsStr) -> Self
fn example_path_ext() {
    // Trait for extending std::path::Path
    use path_slash::PathExt as _;

    let p = Path::from_slash("foo/bar/piyo.txt");

    // On Windows
    assert_eq!(p, Path::new(r"foo\bar\piyo.txt"));

    // Convert to slash path
    assert_eq!(p.to_slash().unwrap(), "foo/bar/piyo.txt");
    assert_eq!(p.to_slash_lossy(), "foo/bar/piyo.txt");
}

fn example_pathbuf_ext() {
    // Trait for extending std::path::PathBuf
    use path_slash::PathBufExt as _;

    // On Windows
    let p = PathBuf::from_slash("foo/bar/piyo.txt");
    assert_eq!(p, PathBuf::from(r"foo\bar\piyo.txt"));

    // Convert to slash path
    assert_eq!(p.to_slash().unwrap(), "foo/bar/piyo.txt");
    assert_eq!(p.to_slash_lossy(), "foo/bar/piyo.txt");
}

fn example_cow_ext() {
    // Trait for extending std::borrow::Cow<'_, Path>
    use path_slash::CowExt as _;

    let p = Cow::from_slash("foo/bar/piyo.txt");
    // On Windows
    assert_eq!(p, Cow::Owned(PathBuf::from(r"foo\bar\piyo.txt")));
    // On non-Windows
    assert_eq!(p, Cow::Borrowed(Path::new("foo/bar/piyo.txt")));

    // Convert to slash path
    assert_eq!(p.to_slash().unwrap(), "foo/bar/piyo.txt");
    assert_eq!(p.to_slash_lossy(), "foo/bar/piyo.txt");
}

请阅读文档以获取更多详细信息。

安装

path-slash添加到依赖项

[dependencies]
path-slash = "0.x"

许可证

MIT许可证

无运行时依赖