14 个版本 (3 个稳定版)
1.2.0 | 2024年4月9日 |
---|---|
0.0.12 | 2023年2月28日 |
0.0.9 | 2022年11月15日 |
0.0.5 | 2022年5月29日 |
0.0.3 | 2022年3月19日 |
#157 in Rust 模式
5,159 每月下载量
用于 59 个crate (15 个直接使用)
22KB
272 行
sugar_path
用于操作路径的糖函数。
主要功能
- SugarPath::as_path 将
T: Deref<Target = str>
转换为Path
,并允许您在&str
或String
上直接使用SugarPath
的方法。
use std::path::Path;
use sugar_path::SugarPath;
assert_eq!("foo".as_path().join("bar"), Path::new("foo/bar"));
assert_eq!("foo/./bar/../baz".normalize(), "foo/baz".as_path());
- SugarPath::to_slash/SugarPath::to_slash_lossy 允许您将路径转换为在所有平台上具有一致斜杠分隔符的字符串。
use sugar_path::SugarPath;
#[cfg(target_family = "unix")]
let p = "./hello/world".as_path();
#[cfg(target_family = "windows")]
let p = ".\\hello\\world".as_path();
assert_eq!(p.to_slash().unwrap(), "./hello/world");
assert_eq!(p.to_slash_lossy(), "./hello/world");
- SugarPath::normalize 允许您通过删除不必要的
.
或..
路径段来规范化给定的路径。
use std::path::Path;
use sugar_path::SugarPath;
assert_eq!("foo/./bar/../baz".normalize(), "foo/baz".as_path());
- SugarPath::relative 允许您从给定的路径获取到目标路径的相对路径。
use sugar_path::SugarPath;
assert_eq!("/base".relative("/base/project"), "..".as_path());
assert_eq!("/base".relative("/var/lib"), "../../base".as_path());
- SugarPath::absolutize 是 SugarPath::absolutize_with 的快捷方式,其中将
std::env::current_dir().unwrap()
作为基础路径传递。
use sugar_path::SugarPath;
let cwd = std::env::current_dir().unwrap();
assert_eq!("hello/world".absolutize(), cwd.join("hello").join("world"));
- SugarPath::absolutize_with 允许您使用基础路径将给定的路径绝对化。
use sugar_path::SugarPath;
#[cfg(target_family = "unix")]
{
assert_eq!("./world".absolutize_with("/hello"), "/hello/world".as_path());
assert_eq!("../world".absolutize_with("/hello"), "/world".as_path());
}
#[cfg(target_family = "windows")]
{
assert_eq!(".\\world".absolutize_with("C:\\hello"), "C:\\hello\\world".as_path());
assert_eq!("..\\world".absolutize_with("C:\\hello"), "C:\\world".as_path());
}
- 有关更多详细信息,请参阅 SugarPath。