Struct EventWriter

Source
pub struct EventWriter<'w, E>
where E: Event,
{ /* private fields */ }
Expand description

Sends events of type T.

§Usage

EventWriters are usually declared as a SystemParam.


#[derive(Event)]
pub struct MyEvent; // Custom event type.
fn my_system(mut writer: EventWriter<MyEvent>) {
    writer.write(MyEvent);
}

§Observers

“Buffered” Events, such as those sent directly in Events or written using EventWriter, do not automatically trigger any Observers watching for that event, as each Event has different requirements regarding if it will be triggered, and if so, when it will be triggered in the schedule.

§Concurrency

EventWriter param has ResMut<Events<T>> inside. So two systems declaring EventWriter<T> params for the same event type won’t be executed concurrently.

§Untyped events

EventWriter can only write events of one specific type, which must be known at compile-time. This is not a problem most of the time, but you may find a situation where you cannot know ahead of time every kind of event you’ll need to send. In this case, you can use the “type-erased event” pattern.

fn send_untyped(mut commands: Commands) {
    // Send an event of a specific type without having to declare that
    // type as a SystemParam.
    //
    // Effectively, we're just moving the type parameter from the /type/ to the /method/,
    // which allows one to do all kinds of clever things with type erasure, such as sending
    // custom events to unknown 3rd party plugins (modding API).
    //
    // NOTE: the event won't actually be sent until commands get applied during
    // apply_deferred.
    commands.queue(|w: &mut World| {
        w.send_event(MyEvent);
    });
}

Note that this is considered non-idiomatic, and should only be used when EventWriter will not work.

Implementations§

Source§

impl<'w, E> EventWriter<'w, E>
where E: Event,

Source

pub fn write(&mut self, event: E) -> EventId<E>

Writes an event, which can later be read by EventReaders. This method returns the ID of the written event.

See Events for details.

Examples found in repository?
examples/ecs/send_and_receive_events.rs (line 61)
59fn read_and_write_different_event_types(mut a: EventWriter<A>, mut b: EventReader<B>) {
60    for _ in b.read() {}
61    a.write(A);
62}
63
64/// A dummy event type.
65#[derive(Debug, Clone, Event)]
66struct DebugEvent {
67    resend_from_param_set: bool,
68    resend_from_local_event_reader: bool,
69    times_sent: u8,
70}
71
72/// A system that sends all combinations of events.
73fn send_events(mut events: EventWriter<DebugEvent>, frame_count: Res<FrameCount>) {
74    println!("Sending events for frame {}", frame_count.0);
75
76    events.write(DebugEvent {
77        resend_from_param_set: false,
78        resend_from_local_event_reader: false,
79        times_sent: 1,
80    });
81    events.write(DebugEvent {
82        resend_from_param_set: true,
83        resend_from_local_event_reader: false,
84        times_sent: 1,
85    });
86    events.write(DebugEvent {
87        resend_from_param_set: false,
88        resend_from_local_event_reader: true,
89        times_sent: 1,
90    });
91    events.write(DebugEvent {
92        resend_from_param_set: true,
93        resend_from_local_event_reader: true,
94        times_sent: 1,
95    });
96}
97
98/// A system that prints all events sent since the last time this system ran.
99///
100/// Note that some events will be printed twice, because they were sent twice.
101fn debug_events(mut events: EventReader<DebugEvent>) {
102    for event in events.read() {
103        println!("{event:?}");
104    }
105}
106
107/// A system that both sends and receives events using [`ParamSet`].
108fn send_and_receive_param_set(
109    mut param_set: ParamSet<(EventReader<DebugEvent>, EventWriter<DebugEvent>)>,
110    frame_count: Res<FrameCount>,
111) {
112    println!(
113        "Sending and receiving events for frame {} with a `ParamSet`",
114        frame_count.0
115    );
116
117    // We must collect the events to resend, because we can't access the writer while we're iterating over the reader.
118    let mut events_to_resend = Vec::new();
119
120    // This is p0, as the first parameter in the `ParamSet` is the reader.
121    for event in param_set.p0().read() {
122        if event.resend_from_param_set {
123            events_to_resend.push(event.clone());
124        }
125    }
126
127    // This is p1, as the second parameter in the `ParamSet` is the writer.
128    for mut event in events_to_resend {
129        event.times_sent += 1;
130        param_set.p1().write(event);
131    }
132}
More examples
Hide additional examples
examples/app/custom_loop.rs (line 38)
36fn exit_system(input: Res<Input>, mut exit_event: EventWriter<AppExit>) {
37    if input.0 == "exit" {
38        exit_event.write(AppExit::Success);
39    }
40}
examples/async_tasks/external_source_external_thread.rs (line 49)
47fn read_stream(receiver: Res<StreamReceiver>, mut events: EventWriter<StreamEvent>) {
48    for from_stream in receiver.try_iter() {
49        events.write(StreamEvent(from_stream));
50    }
51}
examples/ecs/event.rs (line 47)
40fn deal_damage_over_time(
41    time: Res<Time>,
42    mut state: ResMut<DamageTimer>,
43    mut events: EventWriter<DealDamage>,
44) {
45    if state.tick(time.delta()).finished() {
46        // Events can be sent with 'write' and constructed just like any other object.
47        events.write(DealDamage { amount: 10 });
48    }
49}
50
51// This system mutates the 'DealDamage' events to apply some armor value
52// It also sends an 'ArmorBlockedDamage' event if the value of 'DealDamage' is zero
53//
54// Events are mutated using an 'EventMutator<T>' by calling 'read'. This returns an iterator
55// over all the &mut T that this system has not read yet. Note, you can have multiple
56// 'EventReader', 'EventWriter', and 'EventMutator' in a given system, as long as the types (T) are different.
57fn apply_armor_to_damage(
58    mut dmg_events: EventMutator<DealDamage>,
59    mut armor_events: EventWriter<ArmorBlockedDamage>,
60) {
61    for event in dmg_events.read() {
62        event.amount -= 1;
63        if event.amount <= 0 {
64            // Zero-sized events can also be sent with 'send'
65            armor_events.write(ArmorBlockedDamage);
66        }
67    }
68}
examples/ecs/ecs_guide.rs (line 171)
164fn game_over_system(
165    game_rules: Res<GameRules>,
166    game_state: Res<GameState>,
167    mut app_exit_events: EventWriter<AppExit>,
168) {
169    if let Some(ref player) = game_state.winning_player {
170        println!("{player} won the game!");
171        app_exit_events.write(AppExit::Success);
172    } else if game_state.current_round == game_rules.max_rounds {
173        println!("Ran out of rounds. Nobody wins!");
174        app_exit_events.write(AppExit::Success);
175    }
176}
examples/3d/../helpers/widgets.rs (line 176)
165pub fn handle_ui_interactions<T>(
166    mut interactions: Query<
167        (&Interaction, &WidgetClickSender<T>),
168        (With<Button>, With<RadioButton>),
169    >,
170    mut widget_click_events: EventWriter<WidgetClickEvent<T>>,
171) where
172    T: Clone + Send + Sync + 'static,
173{
174    for (interaction, click_event) in interactions.iter_mut() {
175        if *interaction == Interaction::Pressed {
176            widget_click_events.write(WidgetClickEvent((**click_event).clone()));
177        }
178    }
179}
Source

pub fn write_batch( &mut self, events: impl IntoIterator<Item = E>, ) -> SendBatchIds<E>

Sends a list of events all at once, which can later be read by EventReaders. This is more efficient than sending each event individually. This method returns the IDs of the written events.

See Events for details.

Examples found in repository?
examples/app/log_layers_ecs.rs (line 57)
52fn transfer_log_events(
53    receiver: NonSend<CapturedLogEvents>,
54    mut log_events: EventWriter<LogEvent>,
55) {
56    // Make sure to use `try_iter()` and not `iter()` to prevent blocking.
57    log_events.write_batch(receiver.try_iter());
58}
Source

pub fn write_default(&mut self) -> EventId<E>
where E: Default,

Writes the default value of the event. Useful when the event is an empty struct. This method returns the ID of the written event.

See Events for details.

Examples found in repository?
examples/ecs/event.rs (line 84)
76fn apply_damage_to_health(
77    mut dmg_events: EventReader<DealDamage>,
78    mut rcvd_events: EventWriter<DamageReceived>,
79) {
80    for event in dmg_events.read() {
81        info!("Applying {} damage", event.amount);
82        if event.amount > 0 {
83            // Events with a 'Default' implementation can be written with 'write_default'
84            rcvd_events.write_default();
85        }
86    }
87}
More examples
Hide additional examples
examples/games/breakout.rs (line 360)
340fn check_for_collisions(
341    mut commands: Commands,
342    mut score: ResMut<Score>,
343    ball_query: Single<(&mut Velocity, &Transform), With<Ball>>,
344    collider_query: Query<(Entity, &Transform, Option<&Brick>), With<Collider>>,
345    mut collision_events: EventWriter<CollisionEvent>,
346) {
347    let (mut ball_velocity, ball_transform) = ball_query.into_inner();
348
349    for (collider_entity, collider_transform, maybe_brick) in &collider_query {
350        let collision = ball_collision(
351            BoundingCircle::new(ball_transform.translation.truncate(), BALL_DIAMETER / 2.),
352            Aabb2d::new(
353                collider_transform.translation.truncate(),
354                collider_transform.scale.truncate() / 2.,
355            ),
356        );
357
358        if let Some(collision) = collision {
359            // Writes a collision event so that other systems can react to the collision
360            collision_events.write_default();
361
362            // Bricks should be despawned and increment the scoreboard on collision
363            if maybe_brick.is_some() {
364                commands.entity(collider_entity).despawn();
365                **score += 1;
366            }
367
368            // Reflect the ball's velocity when it collides
369            let mut reflect_x = false;
370            let mut reflect_y = false;
371
372            // Reflect only if the velocity is in the opposite direction of the collision
373            // This prevents the ball from getting stuck inside the bar
374            match collision {
375                Collision::Left => reflect_x = ball_velocity.x > 0.0,
376                Collision::Right => reflect_x = ball_velocity.x < 0.0,
377                Collision::Top => reflect_y = ball_velocity.y < 0.0,
378                Collision::Bottom => reflect_y = ball_velocity.y > 0.0,
379            }
380
381            // Reflect velocity on the x-axis if we hit something on the x-axis
382            if reflect_x {
383                ball_velocity.x = -ball_velocity.x;
384            }
385
386            // Reflect velocity on the y-axis if we hit something on the y-axis
387            if reflect_y {
388                ball_velocity.y = -ball_velocity.y;
389            }
390        }
391    }
392}
Source

pub fn send(&mut self, event: E) -> EventId<E>

👎Deprecated since 0.16.0: Use EventWriter::write instead.

Sends an event, which can later be read by EventReaders. This method returns the ID of the sent event.

See Events for details.

Source

pub fn send_batch( &mut self, events: impl IntoIterator<Item = E>, ) -> SendBatchIds<E>

👎Deprecated since 0.16.0: Use EventWriter::write_batch instead.

Sends a list of events all at once, which can later be read by EventReaders. This is more efficient than sending each event individually. This method returns the IDs of the sent events.

See Events for details.

Source

pub fn send_default(&mut self) -> EventId<E>
where E: Default,

👎Deprecated since 0.16.0: Use EventWriter::write_default instead.

Sends the default value of the event. Useful when the event is an empty struct. This method returns the ID of the sent event.

See Events for details.

Trait Implementations§

Source§

impl<E> SystemParam for EventWriter<'_, E>
where E: Event,

Source§

type State = FetchState<E>

Used to store data which persists across invocations of a system.
Source§

type Item<'w, 's> = EventWriter<'w, E>

The item type returned when constructing this system param. The value of this associated type should be Self, instantiated with new lifetimes. Read more
Source§

fn init_state( world: &mut World, system_meta: &mut SystemMeta, ) -> <EventWriter<'_, E> as SystemParam>::State

Registers any World access used by this SystemParam and creates a new instance of this param’s State.
Source§

unsafe fn new_archetype( state: &mut <EventWriter<'_, E> as SystemParam>::State, archetype: &Archetype, system_meta: &mut SystemMeta, )

For the specified Archetype, registers the components accessed by this SystemParam (if applicable).a Read more
Source§

fn apply( state: &mut <EventWriter<'_, E> as SystemParam>::State, system_meta: &SystemMeta, world: &mut World, )

Applies any deferred mutations stored in this SystemParam’s state. This is used to apply Commands during ApplyDeferred.
Source§

fn queue( state: &mut <EventWriter<'_, E> as SystemParam>::State, system_meta: &SystemMeta, world: DeferredWorld<'_>, )

Queues any deferred mutations to be applied at the next ApplyDeferred.
Source§

unsafe fn validate_param<'w, 's>( state: &'s <EventWriter<'_, E> as SystemParam>::State, _system_meta: &SystemMeta, _world: UnsafeWorldCell<'w>, ) -> Result<(), SystemParamValidationError>

Validates that the param can be acquired by the get_param. Read more
Source§

unsafe fn get_param<'w, 's>( state: &'s mut <EventWriter<'_, E> as SystemParam>::State, system_meta: &SystemMeta, world: UnsafeWorldCell<'w>, change_tick: Tick, ) -> <EventWriter<'_, E> as SystemParam>::Item<'w, 's>

Creates a parameter to be passed into a SystemParamFunction. Read more
Source§

impl<'w, 's, E> ReadOnlySystemParam for EventWriter<'w, E>

Auto Trait Implementations§

§

impl<'w, E> Freeze for EventWriter<'w, E>

§

impl<'w, E> RefUnwindSafe for EventWriter<'w, E>
where E: RefUnwindSafe,

§

impl<'w, E> Send for EventWriter<'w, E>

§

impl<'w, E> Sync for EventWriter<'w, E>

§

impl<'w, E> Unpin for EventWriter<'w, E>

§

impl<'w, E> !UnwindSafe for EventWriter<'w, E>

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, U> AsBindGroupShaderType<U> for T
where U: ShaderType, &'a T: for<'a> Into<U>,

Source§

fn as_bind_group_shader_type(&self, _images: &RenderAssets<GpuImage>) -> U

Return the T ShaderType for self. When used in AsBindGroup derives, it is safe to assume that all images in self exist.
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> Conv for T

Source§

fn conv<T>(self) -> T
where Self: Into<T>,

Converts self into T using Into<T>. Read more
Source§

impl<T> Downcast<T> for T

Source§

fn downcast(&self) -> &T

Source§

impl<T> Downcast for T
where T: Any,

Source§

fn into_any(self: Box<T>) -> Box<dyn Any>

Converts Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>, which can then be downcast into Box<dyn ConcreteType> where ConcreteType implements Trait.
Source§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Converts Rc<Trait> (where Trait: Downcast) to Rc<Any>, which can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
Source§

fn as_any(&self) -> &(dyn Any + 'static)

Converts &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s.
Source§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Converts &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
Source§

impl<T> Downcast for T
where T: Any,

Source§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.
Source§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Convert Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
Source§

fn as_any(&self) -> &(dyn Any + 'static)

Convert &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s.
Source§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
Source§

impl<T> DowncastSend for T
where T: Any + Send,

Source§

fn into_any_send(self: Box<T>) -> Box<dyn Any + Send>

Converts Box<Trait> (where Trait: DowncastSend) to Box<dyn Any + Send>, which can then be downcast into Box<ConcreteType> where ConcreteType implements Trait.
Source§

impl<T> DowncastSync for T
where T: Any + Send + Sync,

Source§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Send + Sync>

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
Source§

impl<T> FmtForward for T

Source§

fn fmt_binary(self) -> FmtBinary<Self>
where Self: Binary,

Causes self to use its Binary implementation when Debug-formatted.
Source§

fn fmt_display(self) -> FmtDisplay<Self>
where Self: Display,

Causes self to use its Display implementation when Debug-formatted.
Source§

fn fmt_lower_exp(self) -> FmtLowerExp<Self>
where Self: LowerExp,

Causes self to use its LowerExp implementation when Debug-formatted.
Source§

fn fmt_lower_hex(self) -> FmtLowerHex<Self>
where Self: LowerHex,

Causes self to use its LowerHex implementation when Debug-formatted.
Source§

fn fmt_octal(self) -> FmtOctal<Self>
where Self: Octal,

Causes self to use its Octal implementation when Debug-formatted.
Source§

fn fmt_pointer(self) -> FmtPointer<Self>
where Self: Pointer,

Causes self to use its Pointer implementation when Debug-formatted.
Source§

fn fmt_upper_exp(self) -> FmtUpperExp<Self>
where Self: UpperExp,

Causes self to use its UpperExp implementation when Debug-formatted.
Source§

fn fmt_upper_hex(self) -> FmtUpperHex<Self>
where Self: UpperHex,

Causes self to use its UpperHex implementation when Debug-formatted.
Source§

fn fmt_list(self) -> FmtList<Self>
where &'a Self: for<'a> IntoIterator,

Formats each item in a sequence. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<S> FromSample<S> for S

Source§

fn from_sample_(s: S) -> S

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

Source§

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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

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 more
Source§

impl<F, T> IntoSample<T> for F
where T: FromSample<F>,

Source§

fn into_sample(self) -> T

Source§

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

Source§

fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> R
where Self: Sized,

Pipes by value. This is generally the method you want to use. Read more
Source§

fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> R
where R: 'a,

Borrows self and passes that borrow into the pipe function. Read more
Source§

fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> R
where R: 'a,

Mutably borrows self and passes that borrow into the pipe function. Read more
Source§

fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
where Self: Borrow<B>, B: 'a + ?Sized, R: 'a,

Borrows self, then passes self.borrow() into the pipe function. Read more
Source§

fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
where Self: BorrowMut<B>, B: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.borrow_mut() into the pipe function. Read more
Source§

fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
where Self: AsRef<U>, U: 'a + ?Sized, R: 'a,

Borrows self, then passes self.as_ref() into the pipe function.
Source§

fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
where Self: AsMut<U>, U: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.as_mut() into the pipe function.
Source§

fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
where Self: Deref<Target = T>, T: 'a + ?Sized, R: 'a,

Borrows self, then passes self.deref() into the pipe function.
Source§

fn pipe_deref_mut<'a, T, R>( &'a mut self, func: impl FnOnce(&'a mut T) -> R, ) -> R
where Self: DerefMut<Target = T> + Deref, T: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.deref_mut() into the pipe function.
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Tap for T

Source§

fn tap(self, func: impl FnOnce(&Self)) -> Self

Immutable access to a value. Read more
Source§

fn tap_mut(self, func: impl FnOnce(&mut Self)) -> Self

Mutable access to a value. Read more
Source§

fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

Immutable access to the Borrow<B> of a value. Read more
Source§

fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
where Self: BorrowMut<B>, B: ?Sized,

Mutable access to the BorrowMut<B> of a value. Read more
Source§

fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
where Self: AsRef<R>, R: ?Sized,

Immutable access to the AsRef<R> view of a value. Read more
Source§

fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
where Self: AsMut<R>, R: ?Sized,

Mutable access to the AsMut<R> view of a value. Read more
Source§

fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
where Self: Deref<Target = T>, T: ?Sized,

Immutable access to the Deref::Target of a value. Read more
Source§

fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Mutable access to the Deref::Target of a value. Read more
Source§

fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self

Calls .tap() only in debug builds, and is erased in release builds.
Source§

fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self

Calls .tap_mut() only in debug builds, and is erased in release builds.
Source§

fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

Calls .tap_borrow() only in debug builds, and is erased in release builds.
Source§

fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
where Self: BorrowMut<B>, B: ?Sized,

Calls .tap_borrow_mut() only in debug builds, and is erased in release builds.
Source§

fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
where Self: AsRef<R>, R: ?Sized,

Calls .tap_ref() only in debug builds, and is erased in release builds.
Source§

fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
where Self: AsMut<R>, R: ?Sized,

Calls .tap_ref_mut() only in debug builds, and is erased in release builds.
Source§

fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
where Self: Deref<Target = T>, T: ?Sized,

Calls .tap_deref() only in debug builds, and is erased in release builds.
Source§

fn tap_deref_mut_dbg<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Calls .tap_deref_mut() only in debug builds, and is erased in release builds.
Source§

impl<T, U> ToSample<U> for T
where U: FromSample<T>,

Source§

fn to_sample_(self) -> U

Source§

impl<T> TryConv for T

Source§

fn try_conv<T>(self) -> Result<T, Self::Error>
where Self: TryInto<T>,

Attempts to convert self into T using TryInto<T>. Read more
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<T> Upcast<T> for T

Source§

fn upcast(&self) -> Option<&T>

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
Source§

impl<T> ConditionalSend for T
where T: Send,

Source§

impl<S, T> Duplex<S> for T
where T: FromSample<S> + ToSample<S>,

Source§

impl<T> Settings for T
where T: 'static + Send + Sync,

Source§

impl<T> WasmNotSend for T
where T: Send,

Source§

impl<T> WasmNotSendSync for T

Source§

impl<T> WasmNotSync for T
where T: Sync,