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}