pub struct ByRef<H>(pub H);Expand description
Owned-to-reference adapter. Wraps a Handler<&E> and
implements Handler<E> — the event is borrowed before dispatch.
Use when a handler written for &E needs to slot into a position
that provides owned E. This is the natural adapter for handlers
inside FanOut or Broadcast
that were originally written for owned events.
§Examples
use nexus_rt::{WorldBuilder, ResMut, IntoHandler, Handler, ByRef, Resource};
#[derive(Resource)]
struct Counter(u64);
fn process(mut counter: ResMut<Counter>, event: &u32) {
counter.0 += *event as u64;
}
let mut builder = WorldBuilder::new();
builder.register(Counter(0));
let mut world = builder.build();
let h = process.into_handler(world.registry());
let mut adapted = ByRef(h);
adapted.run(&mut world, 5u32);
assert_eq!(world.resource::<Counter>().0, 5);Tuple Fields§
§0: HTrait Implementations§
Auto Trait Implementations§
impl<H> Freeze for ByRef<H>where
H: Freeze,
impl<H> RefUnwindSafe for ByRef<H>where
H: RefUnwindSafe,
impl<H> Send for ByRef<H>where
H: Send,
impl<H> Sync for ByRef<H>where
H: Sync,
impl<H> Unpin for ByRef<H>where
H: Unpin,
impl<H> UnsafeUnpin for ByRef<H>where
H: UnsafeUnpin,
impl<H> UnwindSafe for ByRef<H>where
H: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more