pub fn run<AS, AP, F>(info: AppInfo, app: F) where
    AS: 'static + AppAssetId,
    AP: 'static + App<AS>,
    F: 'static + FnOnce(&mut AppContext<AS>) -> AP
{
    use std::sync::atomic::{AtomicBool, Ordering};
    static APP_CREATED: AtomicBool = AtomicBool::new(false);
    let previously_created = APP_CREATED.swap(true, Ordering::Relaxed);
    assert!(!previously_created, "Cannot run more than one App.");

    core::run(info, app);
}
/// Invoke this in a `main` method to run the `App`.
///
/// Will panic if this method is called more than once.
/// The `AppInfo` is used to specify intiailization parameters for the application.
Invoke this in a `main` method to run the `App`.
Will panic if this method is called more than once.
The `AppInfo` is used to specify intiailization parameters for the application.
Invoke this in a ` main ` method to run the ` App ` . Will panic if this method is called more than once . The ` AppInfo ` is used to specify intiailization parameters for the application .
pub fn run<AS, AP, F>(info: AppInfo, app: F) where
    AS: 'static + AppAssetId,
    AP: 'static + App<AS>,
    F: 'static + FnOnce(&mut AppContext<AS>) -> AP
{
    use std::sync::atomic::{AtomicBool, Ordering};
    static APP_CREATED: AtomicBool = AtomicBool::new(false);
    let previously_created = APP_CREATED.swap(true, Ordering::Relaxed);
    assert!(!previously_created, "Cannot run more than one App.");
    core::run(info, app);
}
pub fn run < AS , AP , F > ( info : AppInfo , app : F ) where AS : ' static + AppAssetId , AP : ' static + App < AS > , F : ' static + FnOnce ( & mut AppContext < AS > ) -> AP { use std :: sync :: atomic :: { AtomicBool , Ordering } ; static APP_CREATED : AtomicBool = AtomicBool :: new ( false ) ; let previously_created = APP_CREATED . swap ( true , Ordering :: Relaxed ) ; assert ! ( previously_created " " ) ; core :: run ( info , app ) ; }
Invoke this in a `main` method to run the `App`.
Invoke this in a ` main ` method to run the ` App ` .
info
AppInfo
app
F
info
AppInfo
app
F