# public_items
List public items (the public API) of a Rust library crate by analyzing the rustdoc JSON of the crate.
# Usage
```bash
# Install the tool that comes with this package
cargo install public_items
# Generate rustdoc JSON for your Rust library
RUSTDOCFLAGS='-Z unstable-options --output-format json' cargo +nightly doc --lib --no-deps
# List all items in the public API of the Rust library using the tool
public-items ./target/doc/your_library.json
```
# Example
Using the tool on its own library:
```bash
% RUSTDOCFLAGS='-Z unstable-options --output-format json' cargo +nightly doc --lib --no-deps
% public-items ./target/doc/public_items.json
public_items
public_items::Error
public_items::Error::SerdeJsonError
public_items::Error::fmt
public_items::Error::from
public_items::Error::source
public_items::Result
public_items::from_rustdoc_json_str
```
Tip: By writing the public API to a file for two different versions of your library, you can diff your public API across versions.
# Target audience
Maintainers of Rust libraries that want to keep track of changes to their public API.
# Limitations
Currently:
* The type of items are not shown. So a struct field and and struct method is listed as `Struct::field` and `Struct::method`. And tuple structs will just be represented with `Struct::0`, `Struct::1`, etc. Since Rust does not support method overloading, this is not that big of an issue in practice.