fix(theme): 消除 ThemeToggle 在 wasm/server 构建的 unused_mut 警告
dx build 的 wasm target 报两条 unused_mut: - theme (160行): wasm 端的 theme.set 被非 wasm cfg 分支剥离,写操作转移 到副本 theme_clone,theme 本身在 wasm 下只被读取/Copy。加 #[cfg_attr(target_arch = "wasm32", allow(unused_mut))]——仅 wasm 端压住, server 端仍需 mut(theme.set(next) 实际存在)。 - gen_clone (191行): 闭包内只读 gen_clone(),从未 set,两端都不需 mut, 直接删除。 顺带把原来无条件挂在 click_gen 上的 #[allow(unused_mut)] 改成 #[cfg_attr(not(target_arch = "wasm32"), ...)]——click_gen 只在 wasm 分支被 set(189行),server 端该分支被剥离。改为按 cfg 方向标注,与 theme 对称, 语义更精确(不再无差别压住 wasm 端的检查)。 匹配项目既定模式(post_cover.rs:20 的 cfg_attr allow)。零行为变更, dx check / cargo check(双 target) / clippy / theme 测试均通过。
This commit is contained in:
parent
b923851284
commit
46e9a29f1e
@ -157,10 +157,15 @@ pub fn ThemePreload() -> Element {
|
|||||||
#[cfg_attr(not(target_arch = "wasm32"), allow(unused_variables))]
|
#[cfg_attr(not(target_arch = "wasm32"), allow(unused_variables))]
|
||||||
#[component]
|
#[component]
|
||||||
pub fn ThemeToggle() -> Element {
|
pub fn ThemeToggle() -> Element {
|
||||||
|
// theme 仅在非 wasm(server)构建的 theme.set(next) 需要 mut;wasm 端该分支
|
||||||
|
// 被 cfg 剥离,写操作转移到副本 theme_clone,故 wasm 下标注 unused_mut。
|
||||||
|
#[cfg_attr(target_arch = "wasm32", allow(unused_mut))]
|
||||||
let mut theme = use_theme();
|
let mut theme = use_theme();
|
||||||
// generation:每次点击递增。延迟回调检查自己的 gen 是否最新,过期则跳过 set。
|
// generation:每次点击递增。延迟回调检查自己的 gen 是否最新,过期则跳过 set。
|
||||||
// 解决连续点击时多个 spawn_local 堆积导致的状态错乱。
|
// 解决连续点击时多个 spawn_local 堆积导致的状态错乱。
|
||||||
#[allow(unused_mut)]
|
// click_gen 仅在 wasm 分支被 set(连续点击防抖);server 构建剥离该分支,
|
||||||
|
// 故非 wasm 端标注 unused_mut。
|
||||||
|
#[cfg_attr(not(target_arch = "wasm32"), allow(unused_mut))]
|
||||||
let mut click_gen = use_signal(|| 0u32);
|
let mut click_gen = use_signal(|| 0u32);
|
||||||
|
|
||||||
rsx! {
|
rsx! {
|
||||||
@ -188,7 +193,7 @@ pub fn ThemeToggle() -> Element {
|
|||||||
let gen = click_gen() + 1;
|
let gen = click_gen() + 1;
|
||||||
click_gen.set(gen);
|
click_gen.set(gen);
|
||||||
let mut theme_clone = theme;
|
let mut theme_clone = theme;
|
||||||
let mut gen_clone = click_gen;
|
let gen_clone = click_gen;
|
||||||
wasm_bindgen_futures::spawn_local(async move {
|
wasm_bindgen_futures::spawn_local(async move {
|
||||||
crate::utils::time::sleep_ms(450).await;
|
crate::utils::time::sleep_ms(450).await;
|
||||||
if gen_clone() == gen {
|
if gen_clone() == gen {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user