2
0
Fork 0
mirror of https://github.com/bevyengine/bevy synced 2024-12-28 14:03:08 +00:00
bevy/crates/bevy_macro_utils
Zachary Harrold 6963b58eba
Modify derive_label to support no_std environments ()
# Objective

- Contributes to 

## Solution

- Wrap `derive_label` `quote!` in an anonymous constant which contains
an `extern crate alloc` statement, allowing use of the `alloc` namespace
even when a user has not brought in the crate themselves.

## Testing

- CI passed locally.

## Notes

We can't generate code that uses `::std::boxed::Box` in `no_std`
environments, but we also can't rely on `::alloc::boxed::Box` either,
since the user might not have declared `extern crate alloc`. To resolve
this, the generated code is wrapped in an anonymous constant which
contains the `extern crate alloc` invocation.

This does mean the macro is no longer hygienic against cases where the
user provides an alternate `alloc` crate, however I believe this is an
acceptable compromise.

Additionally, this crate itself doesn't need to be `no_std`, it just
needs to _generate_ `no_std` compatible code.

---------

Co-authored-by: Alice Cecile <alice.i.cecile@gmail.com>
2024-09-27 20:23:26 +00:00
..
src Modify derive_label to support no_std environments () 2024-09-27 20:23:26 +00:00
Cargo.toml Generate links to definition in source code pages on docs.rs and dev-docs.bevyengine.org () 2024-07-29 23:10:16 +00:00
README.md Add README.md to all crates () 2024-05-02 18:56:00 +00:00

Bevy Macro Utilities

License Crates.io Downloads Docs Discord