pub struct RootEntry<M: InflectableEntry> { /* private fields */ }Expand description
“Roots” an InflectableEntry to turn it into an Entry that can be passed
to an EntrySink.
The names in an InflectableEntry such as the struct created by closing over a
metrics value can be inflected at compile time, for example by adding a
prefix. To send the metrics to an entry sink, the metrics need to be rooted
by using a RootEntry.
When using append_and_close, the metrics are rooted for you, but it is also possible
to root a metric entry in your own code.
§Example
use metrique::{CloseValue, ServiceMetrics, RootEntry};
use metrique::unit_of_work::metrics;
use metrique::writer::{EntrySink, GlobalEntrySink};
#[metrics]
struct MyMetrics {
operation: &'static str,
}
let metrics = MyMetrics {
operation: "example",
};
// same as calling `drop(metrics.append_on_drop(ServiceMetrics::sink()));`
ServiceMetrics::sink().append(RootEntry::new(metrics.close()));Implementations§
Trait Implementations§
Source§impl<M: InflectableEntry> Entry for RootEntry<M>
impl<M: InflectableEntry> Entry for RootEntry<M>
Source§fn write<'a>(&'a self, w: &mut impl EntryWriter<'a>)
fn write<'a>(&'a self, w: &mut impl EntryWriter<'a>)
Write the metric values contained in this entry to the format-provided
EntryWriter. The writer corresponds
to an atomic entry written to the metrics consumer, like CloudWatch.Source§fn sample_group(&self) -> impl Iterator<Item = SampleGroupElement>
fn sample_group(&self) -> impl Iterator<Item = SampleGroupElement>
The key used to group “similar” entries when sampling. Defaults to the empty group. Read more
Source§fn merge<E>(self, other: E) -> Merged<Self, E>where
Self: Sized,
fn merge<E>(self, other: E) -> Merged<Self, E>where
Self: Sized,
Create a new entry that writes all the contents of this entry and then all of the contents of
other. Read moreSource§fn merge_by_ref<'a, E>(&'a self, other: &'a E) -> MergedRef<'a, Self, E>where
E: 'a + Entry,
fn merge_by_ref<'a, E>(&'a self, other: &'a E) -> MergedRef<'a, Self, E>where
E: 'a + Entry,
Like
Entry::merge, but does so by reference.Auto Trait Implementations§
impl<M> Freeze for RootEntry<M>where
M: Freeze,
impl<M> RefUnwindSafe for RootEntry<M>where
M: RefUnwindSafe,
impl<M> Send for RootEntry<M>where
M: Send,
impl<M> Sync for RootEntry<M>where
M: Sync,
impl<M> Unpin for RootEntry<M>where
M: Unpin,
impl<M> UnwindSafe for RootEntry<M>where
M: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<V, F> ValueFormatter<&V> for F
impl<V, F> ValueFormatter<&V> for F
Source§fn format_value(writer: impl ValueWriter, value: &&V)
fn format_value(writer: impl ValueWriter, value: &&V)
Write
value to writerSource§impl<V, F> ValueFormatter<Arc<V>> for F
impl<V, F> ValueFormatter<Arc<V>> for F
Source§fn format_value(writer: impl ValueWriter, value: &Arc<V>)
fn format_value(writer: impl ValueWriter, value: &Arc<V>)
Write
value to writerSource§impl<V, F> ValueFormatter<Box<V>> for F
impl<V, F> ValueFormatter<Box<V>> for F
Source§fn format_value(writer: impl ValueWriter, value: &Box<V>)
fn format_value(writer: impl ValueWriter, value: &Box<V>)
Write
value to writerSource§impl<V, F> ValueFormatter<Cow<'_, V>> for F
impl<V, F> ValueFormatter<Cow<'_, V>> for F
Source§fn format_value(writer: impl ValueWriter, value: &Cow<'_, V>)
fn format_value(writer: impl ValueWriter, value: &Cow<'_, V>)
Write
value to writerSource§impl<V, F> ValueFormatter<Option<V>> for Fwhere
F: ValueFormatter<V> + ?Sized,
impl<V, F> ValueFormatter<Option<V>> for Fwhere
F: ValueFormatter<V> + ?Sized,
Source§fn format_value(writer: impl ValueWriter, value: &Option<V>)
fn format_value(writer: impl ValueWriter, value: &Option<V>)
Write
value to writer