3 releases (breaking)
0.3.0 | Jul 15, 2024 |
---|---|
0.2.0 | Jul 2, 2024 |
0.1.0 | Jul 1, 2024 |
#796 in Game dev
300KB
119 lines
bevy_anyhow_alert
This crate offers an extension trait for systems that helps with system- and application-level error management in Bevy. Mildly configurable using the re-export of bevy_ui_mod_alerts
. The main benefit: your systems can return Result
(or even Result<T, Vec<E>>
)!
How To Use
When writing your systems, return one of the two accepted types:
Result<T, E>
bevy_anyhow_alert::ResultVec<T, E>
: an alias forResult<T, Vec<Error>>
Then call my_system.anyhow_alert()
or my_system.anyhow_alerts
! When the result is Err
, you'll see toast UI elements show up (assuming there is a camera).
let mut app = App::new();
// ...
app.add_system(fire_error.anyhow_alert());
// ..
app.run();
Feel free to define whatever types of errors your want throughout your application. They must implement Debug
and Display
, which is especially easy if you derive thiserror::Error
on your Error type.
#[derive(Debug, Error)]
#[error("testing!")]
pub struct MyError;
fn fire_error(inputs: Res<ButtonInput<KeyCode>>) -> anyhow::Result<()> {
if inputs.just_pressed(KeyCode::Space) {
Err(anyhow::Error::new(MyError))
} else {
Ok(())
}
}
Dependencies
~37–74MB
~1.5M SLoC