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
//! Read-only readers for **trash / deleted-file artifacts** across operating
//! systems. "Trash" is the umbrella term; each platform's native artifact lives
//! in its own module:
//!
//! | Module | Feature | Artifact |
//! |---|---|---|
//! | [`windows`] | `windows` | Recycle Bin `$I`/`$R` index + content files |
//! | [`linux`] | `linux` | freedesktop.org / XDG `info/*.trashinfo` + `files/` |
//! | [`macos`] | `macos` | Trash `.DS_Store` put-back records (`ptbN`/`ptbL`) |
//! | [`android`] | `android` | `MediaStore` `.trashed-`/`.pending-` filename codec |
//! | [`ios`] | `ios` | Photos.sqlite `ZASSET` Recently-Deleted rows |
//!
//! Every module is gated behind a same-named Cargo feature; all are enabled by
//! default. A consumer that only needs one platform builds with
//! `--no-default-features --features <os>` to drop the others' dependencies.
//!
//! Each reader decodes its artifact into a typed record and pairs metadata with
//! content; none produces findings — the [`trash-forensic`] analyzer layers
//! anomaly detection on top. All readers treat their inputs as
//! attacker-controlled: bounds-checked, never panicking on hostile data.
//!
//! For backward compatibility the Windows reader's items are re-exported at the
//! crate root (`trash_core::parse_index`, [`RecycleBinIndex`], …) — that reader
//! was this crate's original sole contents.
//!
//! [`trash-forensic`]: https://docs.rs/trash-forensic
pub use ;