Prevent path traversal attacks at the type level.
use std::path::PathBuf;
use path_ratchet::prelude::*;
let user_input = "/etc/shadow";
let mut filename = PathBuf::from("/tmp");
filename.push_component(SingleComponentPath::new(user_input).unwrap());For security reasons, this crate follows the principle "Parse, don’t validate" , making it fairly simple yet effective. There are no undefined edge cases. Every case can be seen or deduced from the doctests. Fuzzing and property-based testing ensure these assumptions are met and guaranteeing the general security of the crate.