Functions
The path that we pass to rustc is actually fairly important because it will
show up in error messages (important for readability), debug information
(important for caching), etc. As a result we need to be pretty careful how we
actually invoke rustc.