1个不稳定版本
0.4.0 | 2020年12月21日 |
---|
#33 in #fallible
在 bevy_fallible 中使用
5KB
71 行
bevy_fallible
一个简单的插件,可以将可失败的系统安装到bevy中
API
库提供了两个主要组件:#[fallible_system]
属性宏和 SystemErrorEvent
结构体。基本上,每个 fallible_system 如果产生错误,都会生成一个 SystemErrorEvent
事件,就是这样。
为了简化使用,有一个 fallibleSystemPlugin
用于注册您将需要接收错误事件的所有内容。
示例
// Some system that might fail
#[fallible_system]
fn system(asset_server: Res<AssetServer>) -> anyhow::Result<()> {
let handle: Handle<Texture> = asset_server.load("texture")?;
}
// Let's make another system to read every event about other
// systems failures and report !
#[derive(Default)]
struct ReportSystemState{ reader: EventReader<SystemErrorEvent> }
fn report_system(mut state: Local<ReportSystemState>, mut events: ResMut<Events<SystemErrorEvent>>) {
for event in state.reader.iter(&mut events) {
println!("Error in {}: {}", event.system_name, event.error);
}
}
fn main() {
App::build()
.add_plugin(fallibleSystemPlugin)
.add_startup_system(system.system())
.add_system(report_system.system())
.run();
}
依赖
~1.5MB
~35K SLoC