Skip to main content

BounceFilter

Struct BounceFilter 

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

Holds the minimal state required for bounce filtering decisions.

This struct only stores the timestamp (in microseconds) of the last passed event for each key code and value combination.

Implementations§

Source§

impl BounceFilter

Source

pub fn new(ring_buffer_size: usize) -> Self

Creates a new BounceFilter with a specified ring buffer size.

The ring buffer stores the last ring_buffer_size passed events for debugging. If ring_buffer_size is 0, the buffer is not allocated and has no overhead.

Source

pub fn check_event( &mut self, event: &input_event, debounce_time: Duration, skip_debounce: bool, ) -> EventInfo

Checks an incoming event against the debounce filter state.

Determines if the event is a bounce based on the debounce_time_us and the timestamp of the last passed event of the same type. Updates the internal state (last_event_us) only if the event passes. Also tracks the overall first and last event timestamps.

§Arguments
  • event: The input event to check.
  • debounce_time: The debounce threshold as a Duration.
§Returns

An EventInfo struct containing the result of the check and relevant timestamps.

Source

pub fn get_runtime_us(&self) -> Option<u64>

Returns the total duration based on the first and last event timestamps seen. Returns None if no events were processed.

Trait Implementations§

Source§

impl Default for BounceFilter

Source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

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

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

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

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

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

Source§

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

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> FutureExt for T

Source§

fn with_context(self, otel_cx: Context) -> WithContext<Self>

Attaches the provided Context to this type, returning a WithContext wrapper. Read more
Source§

fn with_current_context(self) -> WithContext<Self>

Attaches the current Context to this type, returning a WithContext wrapper. Read more
Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

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

Source§

fn into(self) -> U

Calls U::from(self).

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

Source§

impl<T> IntoRequest<T> for T

Source§

fn into_request(self) -> Request<T>

Wrap the input message T in a tonic::Request
Source§

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

Source§

type Error = Infallible

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

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

Performs the conversion.
Source§

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

Source§

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

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

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

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more