yew_side_effect/
collections.rs

1use std::ops::Deref;
2use std::rc::Rc;
3
4/// A collection of all registered side effect values of a certain side effect.
5///
6/// This struct can be dereferenced to an `&[Rc<T>]`. You can use it like a normal slice.
7#[derive(Debug)]
8pub struct SideEffects<T> {
9    inner: Vec<Rc<T>>,
10}
11
12impl<T> Deref for SideEffects<T> {
13    type Target = [Rc<T>];
14
15    fn deref(&self) -> &Self::Target {
16        &*self.inner
17    }
18}
19
20impl<T> SideEffects<T> {
21    pub(crate) fn new(from: Vec<Rc<T>>) -> Self {
22        Self { inner: from }
23    }
24}
25
26impl<T> Clone for SideEffects<T> {
27    fn clone(&self) -> Self {
28        Self {
29            inner: self.inner.clone(),
30        }
31    }
32}
33
34impl<T> Default for SideEffects<T> {
35    fn default() -> Self {
36        Self { inner: Vec::new() }
37    }
38}
39
40impl<T: PartialEq> PartialEq for SideEffects<T> {
41    fn eq(&self, other: &Self) -> bool {
42        self.inner == other.inner
43    }
44}