| Crates.io | bevycheck |
| lib.rs | bevycheck |
| version | 0.5.2 |
| created_at | 2021-04-06 19:23:22.701534+00 |
| updated_at | 2023-03-07 20:32:27.215225+00 |
| description | Helpful bevy error messages by proc-macro |
| homepage | |
| repository | https://github.com/jakobhellermann/bevycheck |
| max_upload_size | |
| id | 379973 |
| size | 67,663 |
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)>) {
// ...
}
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 | bevycheck |
|---|---|
| 0.10 | 0.5 |
| 0.9 | 0.4 |
| 0.7 | 0.3 |
| 0.6 | 0.2 |
| 0.5 | 0.1 |