PerfwarnIntervalIf

Struct PerfwarnIntervalIf 

Source
pub struct PerfwarnIntervalIf { /* private fields */ }
Expand description

A conditional performance warning interval that logs only if execution exceeds a threshold.

Unlike PerfwarnInterval which always logs, PerfwarnIntervalIf only emits a warning if the measured duration exceeds the specified threshold. This is useful for operations that are normally fast but occasionally slow down due to external factors.

§Usage

This type is typically not created directly. Instead, use the perfwarn_begin_if! macro which properly sets up the interval with source location information.

§Example

logwise::declare_logging_domain!();
// Create a conditional interval that warns only if execution takes > 100ms
let _interval = logwise::perfwarn_begin_if!(Duration::from_millis(100), "database_query");
perform_database_query();
// If the query took longer than 100ms, a warning is logged when _interval drops

§Behavior

  • The interval starts when created
  • On drop, if the elapsed time exceeds the threshold:
    • The duration is logged at the PerfWarn level
    • The interval is added to the current task’s statistics
  • If the elapsed time is below the threshold, no log is emitted

Implementations§

Source§

impl PerfwarnIntervalIf

Source

pub fn new( label: &'static str, time: Instant, threshold: Duration, record: LogRecord, ) -> Self

Creates a new conditional performance warning interval.

This method is used internally by the perfwarn_begin_if! macro. You should generally use the macro rather than calling this method directly, as the macro properly captures source location information.

§Arguments
  • label - A static string identifying this interval in log messages
  • time - The start time of the interval
  • threshold - The duration threshold; warnings are only logged if exceeded
  • record - A pre-populated log record with source location information
§Example

Use the perfwarn_begin_if! macro instead:

logwise::declare_logging_domain!();
use std::time::Duration;

let _interval = logwise::perfwarn_begin_if!(
    Duration::from_millis(100),
    "database_query"
);
// ... perform operation ...
// Only logs if operation took > 100ms

Trait Implementations§

Source§

impl Debug for PerfwarnIntervalIf

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Drop for PerfwarnIntervalIf

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more

Auto Trait Implementations§

Blanket Implementations§

§

impl<T> Any for T
where T: 'static + ?Sized,

§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

impl<T> Borrow<T> for T
where T: ?Sized,

§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
§

impl<T> BorrowMut<T> for T
where T: ?Sized,

§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
§

impl<T> From<T> for T

§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T, U> Into<U> for T
where U: From<T>,

§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.