@alexcrichton The output of `os::make_absolute().root_path()` *should* always be a `Some` value. I say "should" because this assumes that `getcwd()` returns an absolute path (which it damn well should). The result of `absolute_path.join(any_path)` is a path that will return a `Some` value from `.root_path()` (and that's how `os::make_absolute()` works). Given that, it's perfectly fine to say `let mut result = original.root_path().unwrap()`.

Volume-relative paths are not going to be usable with this function. Technically, they're relative to the current working directory for the specified volume. Classically, Windows maintained a separate working directory per-volume, and this has to do with how they supported old DOS programs that didn't have the notion of directories. There's a bunch of history in #11579 about this if you're curious.

Assuming we keep volume-relative paths (and I'm leaning towards doing so, though I still haven't thought through everything), I think the appropraite behavior here is something like

```rust
let original = os::make_absolute(original);
if !original.is_absolute() { return original.clone(); } // for Windows C:foo paths
let mut result = original.root_path().unwrap();
// ...
```

This way a volume-relative path will be returned unchanged.