1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
use crate::storage::Handle;

/// Recursively replace a (partial) object referenced by another partial object
pub trait Replace<T> {
    /// Recursively replace the referenced object
    fn replace(&mut self, object: Handle<T>) -> &mut Self;
}

impl<T, R, const N: usize> Replace<T> for [R; N]
where
    R: Replace<T>,
{
    fn replace(&mut self, object: Handle<T>) -> &mut Self {
        for item in self.iter_mut() {
            item.replace(object.clone());
        }

        self
    }
}