Asset v2: Asset path serialization fix (#9756)
# Objective
- Silence `Failed to send DropEvent for StrongHandle "SendError(..)"`
errors when `StrongHandle` were dropped during application shutdown.
- Re-export `BoxedFuture` considering that it's used everywhere in
bevy_asset
- Fixed an issue introduced by #9729.
```
Asset 'final_gather.rgen' encountered an error in
dust_render::shader::spirv::SpirvLoader: Failed to deserialize asset
meta: SpannedError { code: InvalidValueForType { expected: "string
AssetPath", found: "a sequence" }, position: Position { line: 9, col: 24
} }
```
Basically, for processed assets with dependencies, bevy will serialize
the metafile as follows:
```
(
meta_format_version: "1.0",
processed_info: Some((
hash: (203, 239, 108, 156, 180, 23, 157, 217, 159, 36, 158, 193, 185,
253, 242, 156),
full_hash: (77, 58, 30, 200, 21, 180, 221, 133, 151, 83, 247, 47, 193,
70, 228, 97),
process_dependencies: [
(
full_hash: (56, 46, 55, 118, 3, 6, 213, 250, 124, 26, 153, 87, 15, 85,
4, 89),
path: ("standard.glsl"), # <<---------- See here
),
],
)),
asset: Load(
loader: "dust_render::shader::spirv::SpirvLoader",
settings: (),
),
)
```
`AssetPath` gets serialized as `("standard.glsl")` which was then
deserialized as a sequence instead of our `AssetPath`.
## Solution
- Serialize `AssetPath` directly as a string instead. The above metafile
would be serialized as follows:
```
(
meta_format_version: "1.0",
processed_info: Some((
hash: (203, 239, 108, 156, 180, 23, 157, 217, 159, 36, 158, 193, 185,
253, 242, 156),
full_hash: (77, 58, 30, 200, 21, 180, 221, 133, 151, 83, 247, 47, 193,
70, 228, 97),
process_dependencies: [
(
full_hash: (56, 46, 55, 118, 3, 6, 213, 250, 124, 26, 153, 87, 15, 85,
4, 89),
path: "standard.glsl", # <<------- No longer a tuple struct
),
],
)),
asset: Load(
loader: "dust_render::shader::spirv::SpirvLoader",
settings: (),
),
)
```
---