blob: 1346a578d92de27aca38083d767a6decb30cdd75 [file] [log] [blame] [view]
# Rust libraries
This document explains what libraries are available for writing and reading Inspect data in Rust.
For specific documentation of each library, refer to the crate documentation linked on each section.
## Libraries for writing Inspect
### [`fuchsia-inspect`][fuchsia_inspect]
This is the core library. This library offers the core API for creating nodes, properties,
serving Inspect, etc. Internally it implements the buddy allocation algorithm described in
[Inspect vmo format][inspect_vmo_format].
For an introduction to Inspect concepts and the rust libraries, see the
[codelab][codelab].
## [`inspect-runtime`][inspect_runtime]
This library enables components to serve Inspect and make it available to the
Archivist for collection.
It's intended to be used only by component binaries, not libraries. The reason for this
is that this library provides an `expect_includes` check to verify that component manifests are
configured to expose Inspect.
Avoid depending on `inspect-runtime` from libraries so that tests are not forced
to add the Inspect `client.shard.cml`.
### [`fuchsia-inspect-contrib`][fuchsia_inspect_contrib]
This library is intended for contributions to the Inspect library from clients.
These are patterns that clients identify in their usage of Inspect that they can
generalize and share. It’s intended to be at a higher level than
`fuchsia-inspect`.
### [`fuchsia-inspect-derive`][fuchsia_inspect_derive]
This library provides a convenient way to manage Inspect data in a Rust program through a
`#[derive(Inspect)]` procedural macro. This works at a higher level than `fuchsia-inspect`.
For more information on this library, see [Ergonomic Inspect][ergonomic_inspect].
## Libraries for reading Inspect
These libraries are not specific to Inspect and are used for various kinds of diagnostics data.
### [`diagnostics-hierarchy`][diagnostics_hierarchy]
This library includes the convenient macro `assert_data_tree` for testing as well as the
definition of the `DiagnosticsHierarchy`, which is not exclusive to Inspect and
is also used for logs and other diagnostics data sources.
### [`diagnostics-testing`][diagnostics_testing]
This library includes the convenient `EnvForDiagnostics` which is useful for testing Inspect
integration with legacy components.
### [`diagnostics-reader`][diagnostics_reader]
This library includes the convenient `ArchiveReader` which is useful for fetching Inspect
data from an archivist in a test or in production. It wraps the shared logic of
connecting to the `ArchiveAccessor` and fetching data from it.
## Others
### [`inspect_format`][inspect_format]
This library provides an API for reading and writing the blocks of the
[Inspect VMO format][inspect_vmo_format].
[codelab]: /docs/development/diagnostics/inspect/codelab/codelab.md#rust
[ergonomic_inspect]: /docs/development/languages/rust/ergonomic_inspect.md
[inspect_vmo_format]: /docs/reference/platform-spec/diagnostics/inspect-vmo-format.md
[inspect_format]: https://fuchsia-docs.firebaseapp.com/rust/inspect_format/index.html
[inspect_runtime]: https://fuchsia-docs.firebaseapp.com/rust/inspect_runtime/index.html
[fuchsia_inspect_derive]: https://fuchsia-docs.firebaseapp.com/rust/fuchsia_inspect_derive/index.html
[fuchsia_inspect]: https://fuchsia-docs.firebaseapp.com/rust/fuchsia_inspect/index.html
[fuchsia_inspect_contrib]: https://fuchsia-docs.firebaseapp.com/rust/fuchsia_inspect_contrib/index.html
[diagnostics_hierarchy]: https://fuchsia-docs.firebaseapp.com/rust/diagnostics_hierarchy/index.html
[diagnostics_reader]: https://fuchsia-docs.firebaseapp.com/rust/diagnostics_reader/index.html
[diagnostics_testing]: https://fuchsia-docs.firebaseapp.com/rust/diagnostics_testing/index.html