bevy/crates/bevy_asset/src
Alex Kocharin 94c67afa4b
Fix panic when using .load_folder() with absolute paths (#9490)
Fixes https://github.com/bevyengine/bevy/issues/9458.

On case-insensitive filesystems (Windows, Mac, NTFS mounted in Linux,
etc.), a path can be represented in a multiple ways:

 - `c:\users\user\rust\assets\hello\world`
 - `c:/users/user/rust/assets/hello/world`
 - `C:\USERS\USER\rust\assets\hello\world`

If user specifies a path variant that doesn't match asset folder path
bevy calculates, `path.strip_prefix()` will fail, as demonstrated below:

```rs
dbg!(Path::new("c:/foo/bar/baz").strip_prefix("c:/foo"));
// Ok("bar/baz")

dbg!(Path::new("c:/FOO/bar/baz").strip_prefix("c:/foo"));
// StripPrefixError(())
```

This commit rewrites the code in question in a way that prefix stripping
is no longer necessary.

I've tested with the following paths on my computer:

```rs
let res = asset_server.load_folder("C:\\Users\\user\\rust\\assets\\foo\\bar");
dbg!(res);

let res = asset_server.load_folder("c:\\users\\user\\rust\\assets\\foo\\bar");
dbg!(res);

let res = asset_server.load_folder("C:/Users/user/rust/assets/foo/bar");
dbg!(res);
```
2023-08-28 17:23:44 +00:00
..
diagnostic Allow systems using Diagnostics to run in parallel (#8677) 2023-06-05 20:51:22 +00:00
io Fix panic when using .load_folder() with absolute paths (#9490) 2023-08-28 17:23:44 +00:00
asset_server.rs Fix CI for Rust 1.72 (#9562) 2023-08-25 12:34:24 +00:00
assets.rs allow asset loader pre-registration (#9429) 2023-08-14 21:27:51 +00:00
debug_asset_server.rs improve shader import model (#5703) 2023-06-27 00:29:22 +00:00
filesystem_watcher.rs Delay asset hot reloading (#8503) 2023-05-16 01:26:11 +00:00
handle.rs impl From<&AssetPath> for HandleId (#9132) 2023-07-15 21:32:17 +00:00
info.rs docs: Full documentation for bevy_asset (#3536) 2022-07-12 15:44:09 +00:00
lib.rs Delay asset hot reloading (#8503) 2023-05-16 01:26:11 +00:00
loader.rs Improve Mesh documentation (#9061) 2023-07-31 18:55:42 +00:00
path.rs bevy_reflect: FromReflect Ergonomics Implementation (#6056) 2023-06-29 01:31:34 +00:00
reflect.rs bevy_reflect: FromReflect Ergonomics Implementation (#6056) 2023-06-29 01:31:34 +00:00