pub fn clean_path(path: &str) -> Cow<'_, str>
Expand description

Simplifies paths by stripping redundant components.

This removes redundant ../ or ./ path components. However, this function does not operate on the file system. Since it does not resolve symlinks, this is a potentially lossy operation.

Examples

Remove ./ components:

assert_eq!(symbolic_common::clean_path("/a/./b"), "/a/b");

Remove path components followed by ../:

assert_eq!(symbolic_common::clean_path("/a/b/../c"), "/a/c");

Note that when the path is relative, the parent dir components may exceed the top-level:

assert_eq!(symbolic_common::clean_path("/foo/../../b"), "../b");