#![deny(missing_docs, rustdoc::broken_intra_doc_links)]
pub mod metrics;
pub mod core;
#[cfg(feature = "metrics")]
mod service;
use core::UsageStatsReport;
pub use struct_iterable;
#[macro_export]
macro_rules! inc {
($m:ty, $f:ident) => {
<$m as $crate::core::Metric>::with_metric(|m| m.$f.inc());
};
}
#[macro_export]
macro_rules! inc_by {
($m:ty, $f:ident, $n:expr) => {
<$m as $crate::core::Metric>::with_metric(|m| m.$f.inc_by($n));
};
}
#[allow(unused_variables)]
pub async fn report_usage_stats(report: &UsageStatsReport) {
#[cfg(feature = "metrics")]
{
if let Some(core) = core::Core::get() {
core.usage_reporter()
.report_usage_stats(report)
.await
.unwrap_or_else(|e| {
tracing::error!("Failed to report usage stats: {}", e);
});
}
}
}