use standard_paths::*; fn main() { let locations = vec![ ("Home", LocationType::HomeLocation), ("Desktop", LocationType::DesktopLocation), ("Documents", LocationType::DocumentsLocation), ("Download", LocationType::DownloadLocation), ("Movies", LocationType::MoviesLocation), ("Music", LocationType::MusicLocation), ("Pictures", LocationType::PicturesLocation), ("Applications", LocationType::ApplicationsLocation), ("Fonts", LocationType::FontsLocation), ("Runtime", LocationType::RuntimeLocation), ("Temp", LocationType::TempLocation), ("Generic Data", LocationType::GenericDataLocation), ("App Data", LocationType::AppDataLocation), ("App Local Data", LocationType::AppLocalDataLocation), ("Generic Cache", LocationType::GenericCacheLocation), ("App Cache", LocationType::AppCacheLocation), ("Config", LocationType::ConfigLocation), ("Generic Config", LocationType::GenericConfigLocation), ("App Config", LocationType::AppConfigLocation), ]; let sl = StandardPaths::new("app", "org"); println!("\nListing standard locations:"); for (name, value) in &locations { match sl.standard_locations(*value) { Ok(paths) => println!( "{:>14}: \"{}\"", name, paths .iter() .map(|p| p.to_str().unwrap()) .collect::>() .join("\", \"") ), Err(err) => println!("{name:>14}: {err}"), } } println!("\nListing writable locations:"); for (name, value) in &locations { match sl.writable_location(*value) { Ok(path) => println!(r#"{name:>14}: "{}""#, path.to_str().unwrap()), Err(err) => println!("{name:>14}: {err}"), } } }