1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77
use std::path::Path; #[cfg(test)] mod tests; #[cfg(target_os = "windows")] #[path = "windows.rs"] mod platform; #[cfg(target_os = "linux")] #[path = "linux.rs"] mod platform; #[cfg(target_os = "macos")] #[path = "macos.rs"] mod platform; /// Error that might happen during a remove operation. #[derive(Debug)] pub enum Error { Unknown, /// Error while canonicalizing path. /// `code` contains a raw os error code if accessible. CanonicalizePath { code: Option<i32>, }, /// Error while performing the remove operation. /// `code` contains a raw os error code if accessible. Remove { code: Option<i32>, }, } /// Removes a single file. /// /// # Example /// /// ``` /// extern crate trash; /// use std::fs::File; /// use trash::remove; /// File::create("remove_me").unwrap(); /// trash::remove("remove_me").unwrap(); /// assert!(File::open("remove_me").is_err()); /// ``` pub fn remove<T: AsRef<Path>>(path: T) -> Result<(), Error> { platform::remove(path) } /// Removes all files specified by the collection of paths provided as an argument. /// /// # Example /// /// ``` /// extern crate trash; /// use std::fs::File; /// use trash::remove_all; /// File::create("remove_me_1").unwrap(); /// File::create("remove_me_2").unwrap(); /// remove_all(&["remove_me_1", "remove_me_2"]).unwrap(); /// assert!(File::open("remove_me_1").is_err()); /// assert!(File::open("remove_me_2").is_err()); /// ``` pub fn remove_all<I, T>(paths: I) -> Result<(), Error> where I: IntoIterator<Item = T>, T: AsRef<Path>, { platform::remove_all(paths) } /// Returns true if the functions are implemented on the current platform. pub fn is_implemented() -> bool { platform::is_implemented() }