mirror of
https://github.com/bevyengine/bevy
synced 2025-02-16 14:08:32 +00:00
Fix Clippy lints on WASM (#13030)
# Objective - Fixes #13024. ## Solution - Run `cargo clippy --target wasm32-unknown-unknown` until there are no more errors. - I recommend reviewing one commit at a time :) --- ## Changelog - Fixed Clippy lints for `wasm32-unknown-unknown` target. - Updated `bevy_transform`'s `README.md`.
This commit is contained in:
parent
70d9dfdc48
commit
b3d3daad5a
8 changed files with 27 additions and 17 deletions
|
@ -141,13 +141,10 @@ impl Plugin for ScheduleRunnerPlugin {
|
||||||
let g = f.clone();
|
let g = f.clone();
|
||||||
|
|
||||||
let c = move || {
|
let c = move || {
|
||||||
let mut app = Rc::get_mut(&mut rc).unwrap();
|
let app = Rc::get_mut(&mut rc).unwrap();
|
||||||
let delay = tick(&mut app, wait);
|
let delay = tick(app, wait);
|
||||||
match delay {
|
if let Ok(delay) = delay {
|
||||||
Ok(delay) => {
|
set_timeout(f.borrow().as_ref().unwrap(), delay.unwrap_or(asap));
|
||||||
set_timeout(f.borrow().as_ref().unwrap(), delay.unwrap_or(asap))
|
|
||||||
}
|
|
||||||
Err(_) => {}
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
*g.borrow_mut() = Some(Closure::wrap(Box::new(c) as Box<dyn FnMut()>));
|
*g.borrow_mut() = Some(Closure::wrap(Box::new(c) as Box<dyn FnMut()>));
|
||||||
|
|
|
@ -37,7 +37,7 @@ impl HttpWasmAssetReader {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn js_value_to_err<'a>(context: &'a str) -> impl FnOnce(JsValue) -> std::io::Error + 'a {
|
fn js_value_to_err(context: &str) -> impl FnOnce(JsValue) -> std::io::Error + '_ {
|
||||||
move |value| {
|
move |value| {
|
||||||
let message = match JSON::stringify(&value) {
|
let message = match JSON::stringify(&value) {
|
||||||
Ok(js_str) => format!("Failed to {context}: {js_str}"),
|
Ok(js_str) => format!("Failed to {context}: {js_str}"),
|
||||||
|
@ -81,7 +81,7 @@ impl HttpWasmAssetReader {
|
||||||
Ok(reader)
|
Ok(reader)
|
||||||
}
|
}
|
||||||
404 => Err(AssetReaderError::NotFound(path)),
|
404 => Err(AssetReaderError::NotFound(path)),
|
||||||
status => Err(AssetReaderError::HttpError(status as u16)),
|
status => Err(AssetReaderError::HttpError(status)),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -94,7 +94,7 @@ impl AssetReader for HttpWasmAssetReader {
|
||||||
|
|
||||||
async fn read_meta<'a>(&'a self, path: &'a Path) -> Result<Box<Reader<'a>>, AssetReaderError> {
|
async fn read_meta<'a>(&'a self, path: &'a Path) -> Result<Box<Reader<'a>>, AssetReaderError> {
|
||||||
let meta_path = get_meta_path(&self.root_path.join(path));
|
let meta_path = get_meta_path(&self.root_path.join(path));
|
||||||
Ok(self.fetch_bytes(meta_path).await?)
|
self.fetch_bytes(meta_path).await
|
||||||
}
|
}
|
||||||
|
|
||||||
async fn read_directory<'a>(
|
async fn read_directory<'a>(
|
||||||
|
|
|
@ -37,7 +37,7 @@ struct Position { x: f32, y: f32 }
|
||||||
|
|
||||||
### Worlds
|
### Worlds
|
||||||
|
|
||||||
Entities, Components, and Resources are stored in a `World`. Worlds, much like Rust std collections like HashSet and Vec, expose operations to insert, read, write, and remove the data they store.
|
Entities, Components, and Resources are stored in a `World`. Worlds, much like `std::collections`'s `HashSet` and `Vec`, expose operations to insert, read, write, and remove the data they store.
|
||||||
|
|
||||||
```rust
|
```rust
|
||||||
use bevy_ecs::world::World;
|
use bevy_ecs::world::World;
|
||||||
|
|
|
@ -79,7 +79,7 @@ impl ScreenshotManager {
|
||||||
|
|
||||||
#[cfg(target_arch = "wasm32")]
|
#[cfg(target_arch = "wasm32")]
|
||||||
{
|
{
|
||||||
match (|| {
|
let save_screenshot = || {
|
||||||
use image::EncodableLayout;
|
use image::EncodableLayout;
|
||||||
use wasm_bindgen::{JsCast, JsValue};
|
use wasm_bindgen::{JsCast, JsValue};
|
||||||
|
|
||||||
|
@ -107,7 +107,9 @@ impl ScreenshotManager {
|
||||||
html_element.click();
|
html_element.click();
|
||||||
web_sys::Url::revoke_object_url(&url)?;
|
web_sys::Url::revoke_object_url(&url)?;
|
||||||
Ok::<(), JsValue>(())
|
Ok::<(), JsValue>(())
|
||||||
})() {
|
};
|
||||||
|
|
||||||
|
match (save_screenshot)() {
|
||||||
Ok(_) => info!("Screenshot saved to {}", path.display()),
|
Ok(_) => info!("Screenshot saved to {}", path.display()),
|
||||||
Err(e) => error!("Cannot save screenshot, error: {e:?}"),
|
Err(e) => error!("Cannot save screenshot, error: {e:?}"),
|
||||||
};
|
};
|
||||||
|
|
|
@ -2,7 +2,7 @@ use std::sync::Arc;
|
||||||
use std::{cell::RefCell, future::Future, marker::PhantomData, mem, rc::Rc};
|
use std::{cell::RefCell, future::Future, marker::PhantomData, mem, rc::Rc};
|
||||||
|
|
||||||
thread_local! {
|
thread_local! {
|
||||||
static LOCAL_EXECUTOR: async_executor::LocalExecutor<'static> = async_executor::LocalExecutor::new();
|
static LOCAL_EXECUTOR: async_executor::LocalExecutor<'static> = const { async_executor::LocalExecutor::new() };
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Used to create a [`TaskPool`].
|
/// Used to create a [`TaskPool`].
|
||||||
|
@ -105,11 +105,21 @@ impl TaskPool {
|
||||||
F: for<'scope> FnOnce(&'env mut Scope<'scope, 'env, T>),
|
F: for<'scope> FnOnce(&'env mut Scope<'scope, 'env, T>),
|
||||||
T: Send + 'static,
|
T: Send + 'static,
|
||||||
{
|
{
|
||||||
|
// SAFETY: This safety comment applies to all references transmuted to 'env.
|
||||||
|
// Any futures spawned with these references need to return before this function completes.
|
||||||
|
// This is guaranteed because we drive all the futures spawned onto the Scope
|
||||||
|
// to completion in this function. However, rust has no way of knowing this so we
|
||||||
|
// transmute the lifetimes to 'env here to appease the compiler as it is unable to validate safety.
|
||||||
|
// Any usages of the references passed into `Scope` must be accessed through
|
||||||
|
// the transmuted reference for the rest of this function.
|
||||||
|
|
||||||
let executor = &async_executor::LocalExecutor::new();
|
let executor = &async_executor::LocalExecutor::new();
|
||||||
|
// SAFETY: As above, all futures must complete in this function so we can change the lifetime
|
||||||
let executor: &'env async_executor::LocalExecutor<'env> =
|
let executor: &'env async_executor::LocalExecutor<'env> =
|
||||||
unsafe { mem::transmute(executor) };
|
unsafe { mem::transmute(executor) };
|
||||||
|
|
||||||
let results: RefCell<Vec<Rc<RefCell<Option<T>>>>> = RefCell::new(Vec::new());
|
let results: RefCell<Vec<Rc<RefCell<Option<T>>>>> = RefCell::new(Vec::new());
|
||||||
|
// SAFETY: As above, all futures must complete in this function so we can change the lifetime
|
||||||
let results: &'env RefCell<Vec<Rc<RefCell<Option<T>>>>> =
|
let results: &'env RefCell<Vec<Rc<RefCell<Option<T>>>>> =
|
||||||
unsafe { mem::transmute(&results) };
|
unsafe { mem::transmute(&results) };
|
||||||
|
|
||||||
|
@ -120,6 +130,7 @@ impl TaskPool {
|
||||||
env: PhantomData,
|
env: PhantomData,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// SAFETY: As above, all futures must complete in this function so we can change the lifetime
|
||||||
let scope_ref: &'env mut Scope<'_, 'env, T> = unsafe { mem::transmute(&mut scope) };
|
let scope_ref: &'env mut Scope<'_, 'env, T> = unsafe { mem::transmute(&mut scope) };
|
||||||
|
|
||||||
f(scope_ref);
|
f(scope_ref);
|
||||||
|
|
|
@ -1,3 +1,3 @@
|
||||||
# Bevy Transform
|
# Bevy Transform
|
||||||
|
|
||||||
This crate is largely a 1:1 port from [legion_transform](https://github.com/AThilenius/legion_transform) (ecs: legion, math: nalgebra) to bevy (ecs: bevy_ecs, math: glam)
|
This crate contains types and functions associated with the `Transform` component.
|
||||||
|
|
|
@ -293,7 +293,7 @@ pub(crate) fn changed_windows(
|
||||||
|
|
||||||
#[cfg(target_arch = "wasm32")]
|
#[cfg(target_arch = "wasm32")]
|
||||||
if window.canvas != cache.window.canvas {
|
if window.canvas != cache.window.canvas {
|
||||||
window.canvas = cache.window.canvas.clone();
|
window.canvas.clone_from(&cache.window.canvas);
|
||||||
warn!(
|
warn!(
|
||||||
"Bevy currently doesn't support modifying the window canvas after initialization."
|
"Bevy currently doesn't support modifying the window canvas after initialization."
|
||||||
);
|
);
|
||||||
|
|
|
@ -191,7 +191,7 @@ impl WinitWindows {
|
||||||
let window = web_sys::window().unwrap();
|
let window = web_sys::window().unwrap();
|
||||||
let document = window.document().unwrap();
|
let document = window.document().unwrap();
|
||||||
let canvas = document
|
let canvas = document
|
||||||
.query_selector(&selector)
|
.query_selector(selector)
|
||||||
.expect("Cannot query for canvas element.");
|
.expect("Cannot query for canvas element.");
|
||||||
if let Some(canvas) = canvas {
|
if let Some(canvas) = canvas {
|
||||||
let canvas = canvas.dyn_into::<web_sys::HtmlCanvasElement>().ok();
|
let canvas = canvas.dyn_into::<web_sys::HtmlCanvasElement>().ok();
|
||||||
|
|
Loading…
Add table
Reference in a new issue