// Copyright 2019 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#![warn(clippy::all, clippy::clone_on_ref_ptr, clippy::unused_async, clippy::await_holding_lock)]

mod accessor;
pub mod archivist;
pub mod component_lifecycle;
mod configs;
pub mod constants;
mod diagnostics;
mod error;
pub mod events;
pub mod formatter;
mod identity;
mod inspect;
pub mod logs;
mod pipeline;
pub mod severity_filter;
mod utils;

#[cfg(test)]
mod testing;

pub(crate) type ImmutableString = flyweights::FlyStr;
