This crate implements the TrimmablePath trait on std::path::Path so you can easily obtain the last n parts of a path.
text
// in Cargo.toml
[dependencies]
pathtrim = "1.0.3"
```rust use std::path::Path; // at the top of your source file use pathtrim::TrimmablePath;
// TrimmablePath is automatically implemented for all // std::path::Paths in the module's scope
let path = Path::new("/usr/local/bin/");
let trimmed = path.trimtonth(1).unwrap(); asserteq!(trimmed.tostr().unwrap(), "bin");
let trimmed = path.trimtonth(2).unwrap(); asserteq!(trimmed.tostr().unwrap(), "local/bin");
let trimmed = path.trimtonth(3).unwrap(); asserteq!(trimmed.tostr().unwrap(), "usr/local/bin");
let trimmed = path.trimtonth(4); assert!(trimmed.is_none());
let trimmed = path.trimtonth(300); assert!(trimmed.is_none());
let trimmed = path.trimtonth(2000); assert!(trimmed.is_none());
``` note: patch version bumps since 1.0.0 are just documentation updates