Path Calculate
This is a library help you to calculate with Path or PathBuf, such as get absolute path, get the relate root or the relative path between two pathes, get the '~'(home_dir) if it exist.
This is based on path_absolutize library, I've use as_absolute_path replace the row absolutize, because it do not support '~' which is use recently, at least in UNIX System.
The following examples show the usage about this crate.
Examples
There are some methods you can use.
home_dir
Get the current user's HOME if it exist in your env, or it return an error(I'm lazy, so just put this method in the Calculate trait).
extern crate path_calculate;
use Path;
use *;
let p = new;
if let Some = p.home_dir
as_absolute_path
This is almost like a shadow of the absolutize in path-absolutize, I only add ~($HOME) support in the method(Unix or Windnows).
extern crate path_calculate;
use Path;
use *;
// I use the user Chao, homd dir is /home/chao
let p = new;
assert_eq!;
extern crate path_calculate;
use Path;
use *;
// In my Windows
let p = new;
assert_eq!;
relative_root_with
Sometimes I would use the relative root of pathes, it return an absolutize relative_root path.
Behold, in Windows, it can not calculate the relative_root on different disks(C:\, D:\,,,), when you try to use this method it return an ioerror such as io::ErrorKind::InvalidInput.
extern crate path_calculate;
use Path;
use *;
// In Linux, run by standard user, HOME in /home/${USERNAME}
let p1 = new;
let p2 = new;
let relative_root = p1.relative_root_with;
assert_eq!
extern crate path_calculate;
use ErrorKind;
use Path;
use *;
// Windows ok
let d1 = new;
let d2 = new;
assert_eq!;
// Windows error
let c1 = new;
assert_eq!;
related_to
This method is used to calculate the dst_path's relative path from the src_path.
extern crate path_calculate;
use Path;
use *;
// $HOME="/home/chao"
let dst_path = new;
let src_path = new;
assert_eq!;