pub fn create_and_canonicalize_directories( directories: &[PathBuf] ) -> Result<Vec<PathBuf>>
Creates directories if they do not exist, and canonicalizes the paths.