pub fn parent_dir(path: &str) -> &str {
match path.rfind(['/', '\\']) {
Some(pos) => &path[..pos],
None => "",
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn parent_dir_no_separator() {
assert_eq!(parent_dir("foo.txt"), "");
}
#[test]
fn parent_dir_empty_string() {
assert_eq!(parent_dir(""), "");
}
#[test]
fn parent_dir_one_level_forward_slash() {
assert_eq!(parent_dir("sub/foo.txt"), "sub");
}
#[test]
fn parent_dir_one_level_backslash() {
assert_eq!(parent_dir("sub\\foo.txt"), "sub");
}
#[test]
fn parent_dir_nested() {
assert_eq!(parent_dir("a/b/c.txt"), "a/b");
}
#[test]
fn parent_dir_deeply_nested() {
assert_eq!(parent_dir("a/b/c/d.rs"), "a/b/c");
}
}