#path #relative-path #path-slash

sugar_path

Sugar functions for manipulating paths

14 releases (3 stable)

new 1.2.0 Apr 9, 2024
0.0.12 Feb 28, 2023
0.0.9 Nov 15, 2022
0.0.5 May 29, 2022
0.0.3 Mar 19, 2022

#111 in Filesystem

Download history 521/week @ 2023-12-21 368/week @ 2023-12-28 487/week @ 2024-01-04 534/week @ 2024-01-11 571/week @ 2024-01-18 508/week @ 2024-01-25 463/week @ 2024-02-01 157/week @ 2024-02-08 366/week @ 2024-02-15 439/week @ 2024-02-22 504/week @ 2024-02-29 1082/week @ 2024-03-07 1011/week @ 2024-03-14 952/week @ 2024-03-21 1224/week @ 2024-03-28 1687/week @ 2024-04-04

5,100 downloads per month
Used in 11 crates (9 directly)

MIT license

22KB
272 lines

sugar_path

document crate version MIT

Sugar functions for manipulating paths.

Main functionalities

  • SugarPath::as_path makes it easy to convert T: Deref<Target = str> to Path and allows you to use methods of SugarPath on &str or String directly.
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());
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");
use std::path::Path;
use sugar_path::SugarPath;
assert_eq!("foo/./bar/../baz".normalize(), "foo/baz".as_path());
  • SugarPath::relative allows you to get the relative path from the given path to the target path.
use sugar_path::SugarPath;
assert_eq!("/base".relative("/base/project"), "..".as_path());
assert_eq!("/base".relative("/var/lib"), "../../base".as_path());
use sugar_path::SugarPath;
let cwd = std::env::current_dir().unwrap();
assert_eq!("hello/world".absolutize(), cwd.join("hello").join("world"));
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());
}
  • For more details, please refer to the SugarPath.

No runtime deps