fj_core/operations/
derive.rs

1//! Mark a stored object as derived from another
2//!
3//! See [`DeriveFrom`].
4
5use crate::{
6    objects::{AnyObject, Stored},
7    storage::Handle,
8    Core,
9};
10
11/// Mark a store object as derived from another
12pub trait DeriveFrom {
13    /// Mark this object as derived from the other object provided
14    fn derive_from(self, original: &Self, core: &mut Core) -> Self;
15}
16
17impl<T> DeriveFrom for Handle<T>
18where
19    Self: Into<AnyObject<Stored>>,
20{
21    fn derive_from(self, original: &Self, core: &mut Core) -> Self {
22        core.layers
23            .presentation
24            .derive_object(original.clone().into(), self.clone().into());
25        self
26    }
27}