From b031bfcc3621f987533680f9df9378f87d6f793d Mon Sep 17 00:00:00 2001 From: Testare Date: Mon, 23 Jan 2023 12:42:47 -0800 Subject: [PATCH] AppExit documentation updates (#7067) Help users understand how to write code that runs when the app is exiting. See: - #7067 (Partial resolution) Added documentation to `AppExit` class that mentions using the `Drop` trait for code that needs to run on program exit, as well as linking to the caveat about `App::run()` not being guaranteed to return. --- crates/bevy_app/src/app.rs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/crates/bevy_app/src/app.rs b/crates/bevy_app/src/app.rs index 66f38cbd44ee22..293fde487273f3 100644 --- a/crates/bevy_app/src/app.rs +++ b/crates/bevy_app/src/app.rs @@ -1166,7 +1166,11 @@ fn run_once(mut app: App) { /// /// You can also use this event to detect that an exit was requested. In order to receive it, systems /// subscribing to this event should run after it was emitted and before the schedule of the same -/// frame is over. +/// frame is over. This is important since [`App::run()`] might never return. +/// +/// If you don't require access to other components or resources, consider implementing the [`Drop`] +/// trait on components/resources for code that runs on exit. That saves you from worrying about +/// system schedule ordering, and is idiomatic Rust. #[derive(Debug, Clone, Default)] pub struct AppExit;