# Objective - In the large majority of cases, users were calling `.unwrap()` immediately after `.get_resource`. - Attempting to add more helpful error messages here resulted in endless manual boilerplate (see #3899 and the linked PRs). ## Solution - Add an infallible variant named `.resource` and so on. - Use these infallible variants over `.get_resource().unwrap()` across the code base. ## Notes I did not provide equivalent methods on `WorldCell`, in favor of removing it entirely in #3939. ## Migration Guide Infallible variants of `.get_resource` have been added that implicitly panic, rather than needing to be unwrapped. Replace `world.get_resource::<Foo>().unwrap()` with `world.resource::<Foo>()`. ## Impact - `.unwrap` search results before: 1084 - `.unwrap` search results after: 942 - internal `unwrap_or_else` calls added: 4 - trivial unwrap calls removed from tests and code: 146 - uses of the new `try_get_resource` API: 11 - percentage of the time the unwrapping API was used internally: 93% |
||
|---|---|---|
| .. | ||
| 3d_scene.rs | ||
| lighting.rs | ||
| load_gltf.rs | ||
| many_cubes.rs | ||
| msaa.rs | ||
| orthographic.rs | ||
| parenting.rs | ||
| pbr.rs | ||
| render_to_texture.rs | ||
| shadow_biases.rs | ||
| shadow_caster_receiver.rs | ||
| spherical_area_lights.rs | ||
| texture.rs | ||
| update_gltf_scene.rs | ||
| wireframe.rs | ||