Users can no longer get a `Res` from `&World`
- Dominant language
- Rust
- Stars
- 48.2k
- Forks
- 4.8k
- Avg merge
- 3d 22h
- Merged PRs (30d)
- 161
Description
## Bevy version
0.15
I made this [systemparam] to make it simpler for me to access loaded assets related to Dialog .
```
#[derive(SystemParam)]
pub struct DialogDataLoadExt<'w> {
dialog_assets_resource: Res<'w, DialogAssets>,
dialog_assets: Res<'w, Assets>,
lore_node_assets: Res<'w,Assets>,
lore_set_assets: Res<'w, Assets>,
}
```
I want to be able to derive this from World. So i made this fn and it worked great in 0.14
```
pub fn from_world<'w>(world: &'w World) -> Option< DialogDataLoadExt<'w> > {
let dialog_assets_resource = world.get_resource_ref::()?;
let dialog_assets = world.get_resource_ref::>()?;
let lore_node_assets = world.get_resource_ref::>()?;
let lore_set_assets = world.get_resource_ref::>()?;
Some( DialogDataLoadExt {
dialog_assets_resource,
dialog_assets,
lore_node_assets,
lore_set_assets,
} )
}
```
in 0.15, it throws this compilation error
```
error[E0308]: mismatched types
--> src/file_system_interaction/load_extensions/dialog_load_extension.rs:36:13
|
36 | dialog_assets_resource,
| ^^^^^^^^^^^^^^^^^^^^^^ expected `Res<'_, DialogAssets>`, found `Ref<'_, DialogAssets>`
|
= note: expected struct `bevy::prelude::Res<'_, DialogAssets>`
found struct `bevy::prelude::Ref<'_, DialogAssets>`
error[E0308]: mismatched types
--> src/file_system_interaction/load_extensions/dialog_load_extension.rs:37:13
|
37 | dialog_assets,
| ^^^^^^^^^^^^^ expected `Res<'_, Assets>`, found `Ref<'_, Assets>`
|
= note: expected struct `bevy::prelude::Res<'_, bevy::prelude::Assets>`
found struct `bevy::prelude::Ref<'_, bevy::prelude::Assets>`
error[E0308]: mismatched types
--> src/file_system_interaction/load_extensions/dialog_load_extension.rs:38:13
|
38 | lore_node_assets,
| ^^^^^^^^^^^^^^^^ expected `Res<'_, Assets>`, found `Ref<'_, Assets>`
|
= note: expected struct `bevy::prelude::Res<'_, bevy::prelude::Assets>`
found struct `bevy::prelude::Ref<'_, bevy::prelude::Assets>`
error[E0308]: mismatched types
--> src/file_system_interaction/load_extensions/dialog_load_extension.rs:39:13
|
39 | lore_set_assets,
| ^^^^^^^^^^^^^^^ expected `Res<'_, Assets>`, found `Ref<'_, Assets>`
|
= note: expected struct `bevy::prelude::Res<'_, bevy::prelude::Assets>`
found struct `bevy::prelude::Ref<'_, bevy::prelude::Assets>`
```
what is the purpose of this error in 0.15 ? how can i access this systemparam from World in 0.15 ? (NOT &mut World, just readonly World )
Also migration docs dont mention this breaking change
Contributor guide
Assessment
This issue has not been assessed yet.