use std::path::{
Path,
PathBuf,
};
pub fn extend_path<P, S, F>(
path: P,
context: &[S],
filename: F,
) -> PathBuf
where
P: AsRef<Path>,
S: AsRef<Path>,
F: AsRef<Path>,
{
let mut path = path.as_ref().to_path_buf();
path.extend(context.iter().map(|s| s.as_ref()));
path.push(filename.as_ref());
path
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_extend_path() {
let path = extend_path("/tmp/wordchipper", &["cache", "data"], "file.txt");
assert_eq!(path, PathBuf::from("/tmp/wordchipper/cache/data/file.txt"));
}
}