bevy/crates
Sludge ff466a37df
Add weak_handle! convenience macro (#17384)
# Objective

- A common bevy pattern is to pre-allocate a weak `Handle` with a
static, random ID and fill it during `Plugin::build` via
`load_internal_asset!`
- This requires generating a random 128-bit number that is interpreted
as a UUID. This is much less convenient than generating a UUID directly,
and also, strictly speaking, error prone, since it often results in an
invalid UUIDv4 – they have to follow the pattern
`xxxxxxxx-xxxx-4xxx-xxxx-xxxxxxxxxxxx`, where `x` is a random nibble (in
practice this doesn't matter, since the UUID is just interpreted as a
bag of bytes).

## Solution

- Add a `weak_handle!` macro that internally calls
[`uuid::uuid!`](https://docs.rs/uuid/1.12.0/uuid/macro.uuid.html) to
parse a UUID from a string literal.
- Now any random UUID generation tool can be used to generate an asset
ID, such as `uuidgen` or entering "uuid" in DuckDuckGo.

Previously:

```rust
const SHADER: Handle<Shader> = Handle::weak_from_u128(314685653797097581405914117016993910609);
```

After this PR:

```rust
const SHADER: Handle<Shader> = weak_handle!("1347c9b7-c46a-48e7-b7b8-023a354b7cac");
```

Note that I did not yet migrate any of the existing uses. I can do that
if desired, but want to have some feedback first to avoid wasted effort.

## Testing

Tested via the included doctest.
2025-02-05 19:30:33 +00:00
..
bevy_a11y Add no_std Support to bevy_a11y (#17505) 2025-01-23 03:52:47 +00:00
bevy_animation Cold Specialization (#17567) 2025-02-05 18:31:20 +00:00
bevy_app Move hashbrown and foldhash out of bevy_utils (#17460) 2025-01-23 16:46:08 +00:00
bevy_asset Add weak_handle! convenience macro (#17384) 2025-02-05 19:30:33 +00:00
bevy_audio Relationships (non-fragmenting, one-to-many) (#17398) 2025-01-18 22:20:30 +00:00
bevy_color Fixes #17508: bevy_color::Color constructor docs get docs matching underlying constructor (#17601) 2025-01-29 18:21:23 +00:00
bevy_core_pipeline Fix calculation of skybox rotation (#17476) 2025-01-28 05:27:22 +00:00
bevy_derive
bevy_dev_tools Smarter testbeds (#17573) 2025-01-31 22:38:39 +00:00
bevy_diagnostic Move hashbrown and foldhash out of bevy_utils (#17460) 2025-01-23 16:46:08 +00:00
bevy_dylib Move #![warn(clippy::allow_attributes, clippy::allow_attributes_without_reason)] to the workspace Cargo.toml (#17374) 2025-01-15 01:14:58 +00:00
bevy_ecs Move Item and fetch to QueryData from WorldQuery (#17679) 2025-02-05 18:46:18 +00:00
bevy_encase_derive
bevy_gilrs Move hashbrown and foldhash out of bevy_utils (#17460) 2025-01-23 16:46:08 +00:00
bevy_gizmos Move Resource trait to its own file (#17469) 2025-01-21 19:47:08 +00:00
bevy_gltf Fix Maya-exported rigs by not trying to topologically sort glTF nodes. (#17641) 2025-02-02 13:53:55 +00:00
bevy_image Image::get_color_at and Image::set_color_at: Support 16-bit float values (#17550) 2025-01-31 00:36:11 +00:00
bevy_input added Hash to MouseScrollUnit; (#17538) 2025-01-26 22:24:50 +00:00
bevy_input_focus Refactored ComponentHook Parameters into HookContext (#17503) 2025-01-23 02:45:24 +00:00
bevy_internal Add support for specular tints and maps per the KHR_materials_specular glTF extension. (#14069) 2025-01-26 20:38:46 +00:00
bevy_log Move Resource trait to its own file (#17469) 2025-01-21 19:47:08 +00:00
bevy_macro_utils Move #![warn(clippy::allow_attributes, clippy::allow_attributes_without_reason)] to the workspace Cargo.toml (#17374) 2025-01-15 01:14:58 +00:00
bevy_math feat: impl Ease for Isometry[2/3]d (#17545) 2025-02-02 15:07:35 +00:00
bevy_mesh Implementing Reflect on *MeshBuilder types (#17600) 2025-02-03 21:53:51 +00:00
bevy_mikktspace Move #![warn(clippy::allow_attributes, clippy::allow_attributes_without_reason)] to the workspace Cargo.toml (#17374) 2025-01-15 01:14:58 +00:00
bevy_pbr Cold Specialization (#17567) 2025-02-05 18:31:20 +00:00
bevy_picking Fix a couple of doc typos (#17673) 2025-02-05 19:29:22 +00:00
bevy_platform_support Improve ergonomics of platform_support's Instant (#17577) 2025-02-02 15:50:48 +00:00
bevy_ptr Update safety docs for Ptr::assert_unique (#17394) 2025-01-16 03:25:19 +00:00
bevy_reflect Bump to uuid 1.13.1 and enable js on wasm targets (#17689) 2025-02-05 06:05:32 +00:00
bevy_remote Move hashbrown and foldhash out of bevy_utils (#17460) 2025-01-23 16:46:08 +00:00
bevy_render Move Item and fetch to QueryData from WorldQuery (#17679) 2025-02-05 18:46:18 +00:00
bevy_scene Bump to uuid 1.13.1 and enable js on wasm targets (#17689) 2025-02-05 06:05:32 +00:00
bevy_sprite Cold Specialization (#17567) 2025-02-05 18:31:20 +00:00
bevy_state Fix link to states example (#17595) 2025-01-29 21:44:55 +00:00
bevy_tasks Move spin to bevy_platform_support out of other crates (#17470) 2025-01-23 05:27:02 +00:00
bevy_text Cold Specialization (#17567) 2025-02-05 18:31:20 +00:00
bevy_time Move hashbrown and foldhash out of bevy_utils (#17460) 2025-01-23 16:46:08 +00:00
bevy_transform Warnings and docs for exponential denormalization in rotate functions (alternative to #17604) (#17646) 2025-02-03 22:02:12 +00:00
bevy_ui Basic UI text shadows (#17559) 2025-02-05 19:29:37 +00:00
bevy_utils Move hashbrown and foldhash out of bevy_utils (#17460) 2025-01-23 16:46:08 +00:00
bevy_window Move spin to bevy_platform_support out of other crates (#17470) 2025-01-23 05:27:02 +00:00
bevy_winit Fix cursor hotspot out of bounds when flipping (#17571) 2025-02-02 18:22:34 +00:00