Typed paths
This adds a bunch of types for directories and files we expect in certain places. The idea is to be a bit more sure that we're passing the correct variant of a Path/PathBuf without having to rely on the parameter name (e.g. root_dir
vs libs_dir
). I've mostly felt the need for this when working with the dependency handling since we're juggling a bunch of directories and pretending that libraries are root directories and stuff.
There's a bit of ergonomics that I'm not 100% happy with. Right now there's a few dirs::libs_dir(dirs::build_dir(root_dir))
, and I would like to do dirs::libs_dir(root_dir)
- but I'm not sure how to implement it. It smells a bit like trait magic.
Closes #26, in a way.