34 stable releases (5 major)

5.2.1 Dec 7, 2024
5.2.0 Oct 26, 2024
5.1.1 Aug 31, 2024
5.0.0 Jun 18, 2024
0.1.1 Jul 13, 2019

#146 in Filesystem

Download history 6325/week @ 2024-10-26 6174/week @ 2024-11-02 6759/week @ 2024-11-09 6145/week @ 2024-11-16 5804/week @ 2024-11-23 6708/week @ 2024-11-30 8310/week @ 2024-12-07 7162/week @ 2024-12-14 6609/week @ 2024-12-21 6379/week @ 2024-12-28 6377/week @ 2025-01-04 6967/week @ 2025-01-11 6344/week @ 2025-01-18 5835/week @ 2025-01-25 7567/week @ 2025-02-01 7244/week @ 2025-02-08

28,048 downloads per month
Used in 47 crates (39 directly)

MIT license

110KB
2K SLoC

Crates.io Docs.rs CI

About

The trash is a Rust library for moving files and folders to the operating system's Recycle Bin or Trash or Rubbish Bin or what have you :D

The library supports Windows, macOS, and all FreeDesktop Trash compliant environments (including GNOME, KDE, XFCE, and more). See more about the FreeDesktop Trash implementation in the freedesktop.rs file.

Usage

# In Cargo.toml
[dependencies]
trash = "3"
// In main.rs
use std::fs::File;
use trash;

fn main() {
    // Let's create and remove a single file
    File::create_new("remove-me").unwrap();
    trash::delete("remove-me").unwrap();
    assert!(File::open("remove-me").is_err());

    // Now let's remove multiple files at once
    let the_others = ["remove-me-too", "dont-forget-about-me-either"];
    for name in the_others.iter() {
        File::create_new(name).unwrap();
    }
    trash::delete_all(&the_others).unwrap();
    for name in the_others.iter() {
        assert!(File::open(name).is_err());
    }
}

Dependencies

~0–35MB
~499K SLoC