extern crate dirs_sys; use std::path::PathBuf; pub fn home_dir() -> Option { dirs_sys::home_dir() } pub fn cache_dir() -> Option { home_dir().map(|h| h.join("Library/Caches")) } pub fn config_dir() -> Option { home_dir().map(|h| h.join("Library/Application Support")) } pub fn data_dir() -> Option { home_dir().map(|h| h.join("Library/Application Support")) } pub fn data_local_dir() -> Option { data_dir() } pub fn preference_dir() -> Option { home_dir().map(|h| h.join("Library/Preferences")) } pub fn executable_dir() -> Option { None } pub fn runtime_dir() -> Option { None } pub fn state_dir() -> Option { None } pub fn audio_dir() -> Option { home_dir().map(|h| h.join("Music")) } pub fn desktop_dir() -> Option { home_dir().map(|h| h.join("Desktop")) } pub fn document_dir() -> Option { home_dir().map(|h| h.join("Documents")) } pub fn download_dir() -> Option { home_dir().map(|h| h.join("Downloads")) } pub fn font_dir() -> Option { home_dir().map(|h| h.join("Library/Fonts")) } pub fn picture_dir() -> Option { home_dir().map(|h| h.join("Pictures")) } pub fn public_dir() -> Option { home_dir().map(|h| h.join("Public")) } pub fn template_dir() -> Option { None } pub fn video_dir() -> Option { home_dir().map(|h| h.join("Movies")) }