Skip to main content

EventData

Struct EventData 

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

Data attached to an event, detached from the event.

Formats and values attach data to individual events (see State::event), for instance tags or formatting hints. This captures such data so that it can be attached to an event again later. This is used by types which hold on to values outside of a serialization or deserialization, such as the values of the deser-value crate, so that data like CBOR tags survives.

use deser::de::DeserializeDriver;
use deser::EventData;

#[derive(Debug, Default, Clone, PartialEq)]
struct Tag(u64);

let mut data = EventData::new();
data.insert(Tag(42));
assert_eq!(data.get::<Tag>(), Some(&Tag(42)));

let mut out = None::<bool>;
let mut driver = DeserializeDriver::new(&mut out);
driver.state_mut().attach_event_data(&data);
assert_eq!(driver.state().event::<Tag>(), Some(&Tag(42)));
assert_eq!(
    driver.state().capture_event_data().get::<Tag>(),
    Some(&Tag(42))
);

Event data has to be Send and Sync, which means that captured event data is too.

Implementations§

Source§

impl EventData

Source

pub const fn new() -> EventData

Creates empty event data.

Source

pub fn is_empty(&self) -> bool

Returns true if no data is held.

Source

pub fn get<T>(&self) -> Option<&T>
where T: Debug + Send + 'static,

Returns the data of a type.

Source

pub fn get_mut<T>(&mut self) -> &mut T
where T: Default + Clone + Debug + Send + Sync + 'static,

Returns the data of a type mutably.

If there is no data of this type, the default value is inserted.

Source

pub fn insert<T>(&mut self, value: T)
where T: Clone + Debug + Send + Sync + 'static,

Inserts data, replacing data of the same type.

Source

pub fn remove<T>(&mut self) -> Option<T>
where T: Debug + Send + 'static,

Removes the data of a type and returns it.

Trait Implementations§

Source§

impl Clone for EventData

Source§

fn clone(&self) -> EventData

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 Debug for EventData

Source§

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

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

impl Default for EventData

Source§

fn default() -> EventData

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> 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> 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.