pub struct SubApp {
pub app: App,
/* private fields */
}
Expand description
A SubApp
contains its own Schedule
and World
separate from the main App
.
This is useful for situations where data and data processing should be kept completely separate
from the main application. The primary use of this feature in bevy is to enable pipelined rendering.
Example
#[derive(Resource, Default)]
struct Val(pub i32);
#[derive(Debug, Clone, Copy, Hash, PartialEq, Eq, AppLabel)]
struct ExampleApp;
let mut app = App::new();
// initialize the main app with a value of 0;
app.insert_resource(Val(10));
// create a app with a resource and a single schedule
let mut sub_app = App::empty();
// add an outer schedule that runs the main schedule
sub_app.insert_resource(Val(100));
// initialize main schedule
sub_app.add_systems(Main, |counter: Res<Val>| {
// since we assigned the value from the main world in extract
// we see that value instead of 100
assert_eq!(counter.0, 10);
});
// add the sub_app to the app
app.insert_sub_app(ExampleApp, SubApp::new(sub_app, |main_world, sub_app| {
// extract the value from the main app to the sub app
sub_app.world.resource_mut::<Val>().0 = main_world.resource::<Val>().0;
}));
// This will run the schedules once, since we're using the default runner
app.run();
Fields§
§app: App
Implementations§
Trait Implementations§
Auto Trait Implementations§
impl !RefUnwindSafe for SubApp
impl Send for SubApp
impl !Sync for SubApp
impl Unpin for SubApp
impl !UnwindSafe for SubApp
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
source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
source§fn into_any(self: Box<T>) -> Box<dyn Any>
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>
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)
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)
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.