Skip to content

Commit 806f618

Browse files
committed
Bare Function Pointer for better code size.
1 parent 935a672 commit 806f618

File tree

2 files changed

+13
-20
lines changed

2 files changed

+13
-20
lines changed

packages/yew/src/functional/hooks/use_effect.rs

Lines changed: 9 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2,25 +2,23 @@ use std::cell::RefCell;
22

33
use crate::functional::{hook, Effect, Hook, HookContext};
44

5-
struct UseEffectBase<T, F, D, R>
5+
struct UseEffectBase<T, F, D>
66
where
77
F: FnOnce(&T) -> D + 'static,
88
T: 'static,
99
D: FnOnce() + 'static,
10-
R: Fn(Option<&T>, Option<&T>) -> bool + 'static,
1110
{
1211
runner_with_deps: Option<(T, F)>,
1312
destructor: Option<D>,
1413
deps: Option<T>,
15-
effect_changed_fn: R,
14+
effect_changed_fn: fn(Option<&T>, Option<&T>) -> bool,
1615
}
1716

18-
impl<T, F, D, R> Effect for RefCell<UseEffectBase<T, F, D, R>>
17+
impl<T, F, D> Effect for RefCell<UseEffectBase<T, F, D>>
1918
where
2019
F: FnOnce(&T) -> D + 'static,
2120
T: 'static,
2221
D: FnOnce() + 'static,
23-
R: Fn(Option<&T>, Option<&T>) -> bool + 'static,
2422
{
2523
fn rendered(&self) {
2624
let mut this = self.borrow_mut();
@@ -42,12 +40,11 @@ where
4240
}
4341
}
4442

45-
impl<T, F, D, R> Drop for UseEffectBase<T, F, D, R>
43+
impl<T, F, D> Drop for UseEffectBase<T, F, D>
4644
where
4745
F: FnOnce(&T) -> D + 'static,
4846
T: 'static,
4947
D: FnOnce() + 'static,
50-
R: Fn(Option<&T>, Option<&T>) -> bool + 'static,
5148
{
5249
fn drop(&mut self) {
5350
if let Some(destructor) = self.destructor.take() {
@@ -59,30 +56,28 @@ where
5956
fn use_effect_base<T, D>(
6057
runner: impl FnOnce(&T) -> D + 'static,
6158
deps: T,
62-
effect_changed_fn: impl Fn(Option<&T>, Option<&T>) -> bool + 'static,
59+
effect_changed_fn: fn(Option<&T>, Option<&T>) -> bool,
6360
) -> impl Hook<Output = ()>
6461
where
6562
T: 'static,
6663
D: FnOnce() + 'static,
6764
{
68-
struct HookProvider<T, F, D, R>
65+
struct HookProvider<T, F, D>
6966
where
7067
F: FnOnce(&T) -> D + 'static,
7168
T: 'static,
7269
D: FnOnce() + 'static,
73-
R: Fn(Option<&T>, Option<&T>) -> bool + 'static,
7470
{
7571
runner: F,
7672
deps: T,
77-
effect_changed_fn: R,
73+
effect_changed_fn: fn(Option<&T>, Option<&T>) -> bool,
7874
}
7975

80-
impl<T, F, D, R> Hook for HookProvider<T, F, D, R>
76+
impl<T, F, D> Hook for HookProvider<T, F, D>
8177
where
8278
F: FnOnce(&T) -> D + 'static,
8379
T: 'static,
8480
D: FnOnce() + 'static,
85-
R: Fn(Option<&T>, Option<&T>) -> bool + 'static,
8681
{
8782
type Output = ();
8883

@@ -93,7 +88,7 @@ where
9388
effect_changed_fn,
9489
} = self;
9590

96-
let state = ctx.next_effect(|_| -> RefCell<UseEffectBase<T, F, D, R>> {
91+
let state = ctx.next_effect(|_| -> RefCell<UseEffectBase<T, F, D>> {
9792
RefCell::new(UseEffectBase {
9893
runner_with_deps: None,
9994
destructor: None,

packages/yew/src/functional/hooks/use_reducer.rs

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -146,28 +146,26 @@ where
146146
/// The base function of [`use_reducer`] and [`use_reducer_eq`]
147147
fn use_reducer_base<'hook, T>(
148148
init_fn: impl 'hook + FnOnce() -> T,
149-
should_render_fn: impl 'static + Fn(&T, &T) -> bool,
149+
should_render_fn: fn(&T, &T) -> bool,
150150
) -> impl 'hook + Hook<Output = UseReducerHandle<T>>
151151
where
152152
T: Reducible + 'static,
153153
{
154-
struct HookProvider<'hook, T, F, R>
154+
struct HookProvider<'hook, T, F>
155155
where
156156
T: Reducible + 'static,
157157
F: 'hook + FnOnce() -> T,
158-
R: 'static + Fn(&T, &T) -> bool,
159158
{
160159
_marker: PhantomData<&'hook ()>,
161160

162161
init_fn: F,
163-
should_render_fn: R,
162+
should_render_fn: fn(&T, &T) -> bool,
164163
}
165164

166-
impl<'hook, T, F, R> Hook for HookProvider<'hook, T, F, R>
165+
impl<'hook, T, F> Hook for HookProvider<'hook, T, F>
167166
where
168167
T: Reducible + 'static,
169168
F: 'hook + FnOnce() -> T,
170-
R: 'static + Fn(&T, &T) -> bool,
171169
{
172170
type Output = UseReducerHandle<T>;
173171

0 commit comments

Comments
 (0)