bevycheck

Crates.iobevycheck
lib.rsbevycheck
version0.5.2
sourcesrc
created_at2021-04-06 19:23:22.701534
updated_at2023-03-07 20:32:27.215225
descriptionHelpful bevy error messages by proc-macro
homepage
repositoryhttps://github.com/jakobhellermann/bevycheck
max_upload_size
id379973
size67,663
Jakob Hellermann (jakobhellermann)

documentation

README

bevycheck

Bevycheck helps debug bevy errors by adding procedural macros which aid the compiler in emitting better compilation errors.

If you get an error like the trait `IntoSystem<(), (), _>` is not implemented for fn item `for<'a> fn(bevy::prelude::ResMut<'a, [type error]>) {system}, simply add #[bevycheck::system] to your function, and a more helpful error messages should appear:

#[bevycheck::system]
fn system(commands: &mut Commands, query: Query<(Entity, &GlobalTransform)>) {
    // ...
}

How does it work?

It works by replacing

fn system(commands: &mut Commands, query: Query<(Entity, &GlobalTransform)>) {
  // ...
}

with

fn system() {
  assert_is_system_param::<&mut Commands>();
  assert_is_system_param::<Query<(Entity, &GlobalTransform)>>();
  panic!("remove bevycheck before running");
}

That way, without parameters the system is a valid system and the add_system call doesn't error anymore, and by asserting that each specific parameter must be a valid system param, rust can figure out which one's the culprit and print a more directed error message.

Bevy support table

bevy bevycheck
0.10 0.5
0.9 0.4
0.7 0.3
0.6 0.2
0.5 0.1
Commit count: 41

cargo fmt