[−][src]Struct shred::ParSeq
A dispatcher intended to be used with
Par and Seq structures.
This is more flexible and performant than Dispatcher,
however, you have to check conflicts yourself.
That means you cannot run two systems in parallel
which write to the same resource; if you'd do that,
one of the systems will panic while trying to fetch
the SystemData.
Thread-local systems
This dispatcher also allows more freedom
for thread-local systems; you can execute wherever you want,
just not in parallel with other systems (putting one inside
par! will give you a compile-time error saying the Send requirement
is unmet).
Examples
#[macro_use(par, seq)] extern crate shred; let x = 5u8; let mut dispatcher = ParSeq::new( seq![ par![ SysA, SysWithLifetime(&x), seq![ SysC, SysD, ], ], SysB, SysLocal(&x as *const u8), ], &pool, ); dispatcher.dispatch(&mut world);
Methods
impl<P, T> ParSeq<P, T> where
P: Borrow<ThreadPool>,
T: for<'a> RunWithPool<'a>, [src]
P: Borrow<ThreadPool>,
T: for<'a> RunWithPool<'a>,
pub fn new(run: T, pool: P) -> Self[src]
Creates a new ParSeq dispatcher.
run is usually created by using the par! / seq!
macros.
pub fn setup(&mut self, world: &mut World)[src]
Sets up world for dispatching. This will add default values for
required resources by calling System::setup.
pub fn dispatch(&mut self, world: &World)[src]
Dispatches the systems using world.
This doesn't call any virtual functions.
Please note that this method assumes that no resource is currently borrowed. If that's the case, it panics.
Trait Implementations
impl<'a, P, T> RunNow<'a> for ParSeq<P, T> where
P: Borrow<ThreadPool>,
T: for<'b> RunWithPool<'b>, [src]
P: Borrow<ThreadPool>,
T: for<'b> RunWithPool<'b>,
Auto Trait Implementations
impl<P, T> Unpin for ParSeq<P, T> where
P: Unpin,
T: Unpin,
P: Unpin,
T: Unpin,
impl<P, T> Sync for ParSeq<P, T> where
P: Sync,
T: Sync,
P: Sync,
T: Sync,
impl<P, T> Send for ParSeq<P, T> where
P: Send,
T: Send,
P: Send,
T: Send,
impl<P, T> UnwindSafe for ParSeq<P, T> where
P: UnwindSafe,
T: UnwindSafe,
P: UnwindSafe,
T: UnwindSafe,
impl<P, T> RefUnwindSafe for ParSeq<P, T> where
P: RefUnwindSafe,
T: RefUnwindSafe,
P: RefUnwindSafe,
T: RefUnwindSafe,
Blanket Implementations
impl<T> From<T> for T[src]
impl<T, U> Into<U> for T where
U: From<T>, [src]
U: From<T>,
impl<T, U> TryFrom<U> for T where
U: Into<T>, [src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>, [src]
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
The type returned in the event of a conversion error.
fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>[src]
impl<T> Borrow<T> for T where
T: ?Sized, [src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized, [src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T[src]
impl<T> Any for T where
T: 'static + ?Sized, [src]
T: 'static + ?Sized,
impl<T> Any for T where
T: Any, [src]
T: Any,