Skip to main content

Stamp

Struct Stamp 

Source
#[non_exhaustive]
pub struct Stamp { pub arrived: Instant, pub since_open: Duration, pub box_time: Option<BoxTime>, pub received: Instant, pub received_since_open: Duration, pub received_qpc: Option<i64>, }

Fields (Non-exhaustive)§

This struct is marked as non-exhaustive
Non-exhaustive structs could have additional fields added in future. Therefore, non-exhaustive structs cannot be constructed in external crates using the traditional Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.
§arrived: Instant

the best guess at when the event happened, on the PC’s clock. on Medius it’s the box clock mapped onto the PC’s through the medius crate, which keeps it from ever going backwards and smooths it after bursts, so it’s an estimate there and NOT when the PC got the event, use received for that

§since_open: Duration

the same moment as the time since the device was opened, for code that can’t use Instant

§box_time: Option<BoxTime>§received: Instant

when anybox got the event. on MAKCU that’s right after the port read returned with the report’s last byte, on Medius it’s when anybox took it from the medius crate, which reads the port on its own thread, so it’s a bit after the read there. either way it’s the read and not the USB arrival, driver buffering and a backlog make it late, and reports that came in one read share it

§received_since_open: Duration

the same moment as received, as the time since the device was opened

§received_qpc: Option<i64>

the raw QueryPerformanceCounter value at received, on Windows only, since an Instant can’t be turned back into one and a USB capture stamps its packets in QPC

Implementations§

Source§

impl Stamp

Source

pub fn new(arrived: Instant, since_open: Duration) -> Self

for tests and for code that builds events itself. received starts out as arrived, and since_open isn’t checked against arrived

Source

pub fn with_box_time(self, box_time: BoxTime) -> Self

Source

pub fn arrived_ns(&self) -> u64

arrived in nanoseconds on the clock monotonic_ns reads, so it lines up with stamps from other devices and other programs on this machine

Source

pub fn received_ns(&self) -> u64

received in nanoseconds on the clock monotonic_ns reads

Source

pub fn with_received(self, received: Instant, qpc: Option<i64>) -> Self

received_since_open comes out of received and since_open, so set those right first

Trait Implementations§

Source§

impl Clone for Stamp

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Copy for Stamp

Source§

impl Debug for Stamp

Source§

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

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

impl Eq for Stamp

Source§

impl PartialEq for Stamp

Source§

fn eq(&self, other: &Self) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl StructuralPartialEq for Stamp

Auto Trait Implementations§

§

impl Freeze for Stamp

§

impl RefUnwindSafe for Stamp

§

impl Send for Stamp

§

impl Sync for Stamp

§

impl Unpin for Stamp

§

impl UnsafeUnpin for Stamp

§

impl UnwindSafe for Stamp

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

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

Source§

type Error = !

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

fn try_from(value: U) -> Result<T, !>

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.