High-level crate to extract the dependency trees embedded in binaries by [`cargo auditable`](https://crates.io/crates/cargo-auditable).

Deserializes them to a JSON string or Rust data structures, at your option.

### Features

 - Binary parsing designed from the ground up for resilience to malicious inputs.
 - 100% memory-safe Rust, including all dependencies. (There is some `unsafe` in `serde_json` and its dependencies, but only in serialization, which isn't used here).
 - Cross-platform, portable, easy to cross-compile. Runs on [any Rust target with `std`](https://doc.rust-lang.org/stable/rustc/platform-support.html).
 - Parses binaries from any supported platform, not just the platform it's running on.
 - Supports setting size limits for both input and output, to protect against [OOMs](https://en.wikipedia.org/wiki/Out_of_memory) and [zip bombs](https://en.wikipedia.org/wiki/Zip_bomb).

### Usage

```rust, ignore
// Uses the default limits: 1GiB input file size, 8MiB audit data size
let info = audit_info_from_file("path/to/file", Default::default())?;
```
Functions to load the data from a `Read` instance or from `&[u8]` are also provided,
see the [documentation](https://docs.rs/auditable-info).

### Alternatives

[`rust-audit-info`](https://crates.io/crates/rust-audit-info) is a command-line interface to this crate.

If you need an even lower-level interface than the one provided by this crate,
use the [`auditable-extract`](http://docs.rs/auditable-extract/) and
[`auditable-serde`](http://docs.rs/auditable-serde/) crates.