#relative-path #path #path-slash

sugar_path

Sugar functions for manipulating paths

14 releases (3 stable)

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

#161 in Filesystem

Download history 1638/week @ 2024-11-15 1714/week @ 2024-11-22 1725/week @ 2024-11-29 2572/week @ 2024-12-06 1953/week @ 2024-12-13 1774/week @ 2024-12-20 1463/week @ 2024-12-27 1713/week @ 2025-01-03 1856/week @ 2025-01-10 1742/week @ 2025-01-17 1815/week @ 2025-01-24 1640/week @ 2025-01-31 1955/week @ 2025-02-07 2228/week @ 2025-02-14 2621/week @ 2025-02-21 1851/week @ 2025-02-28

8,870 downloads per month
Used in 76 crates (20 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