derive asset for enums (#10410)
# Objective
allow deriving `Asset` for enums, and for tuple structs.
## Solution
add to the proc macro, generating visitor calls to the variant's data
(if required).
supports unnamed or named field variants, and struct variants when the
struct also derives `Asset`:
```rust
#[derive(Asset, TypePath)]
pub enum MyAssetEnum {
Unnamed (
#[dependency]
Handle<Image>
),
Named {
#[dependency]
array_handle: Handle<Image>,
#[dependency]
atlas_handles: Vec<Handle<Image>>,
},
StructStyle(
#[dependency]
VariantStruct
),
Empty,
}
#[derive(Asset, TypePath)]
pub struct VariantStruct {
// ...
}
```
also extend the struct implementation to support tuple structs:
```rust
#[derive(Asset, TypePath)]
pub struct MyImageNewtype(
#[dependency]
Handle<Image>
);
````
---------
Co-authored-by: Nicola Papale <nico@nicopap.ch>