ferrijs_std/utils/
clone.rs1use rquickjs::{class::JsClass, Class, Ctx, Object, Result, Value};
4
5pub trait StructuredClone<'js>: JsClass<'js> {
6 fn structured_clone(&self, ctx: &Ctx<'js>) -> Result<Value<'js>>;
7}
8
9pub fn clone_platform_object<'js, T>(
10 ctx: &Ctx<'js>,
11 object: &Object<'js>,
12) -> Result<Option<Value<'js>>>
13where
14 T: StructuredClone<'js>,
15{
16 if let Some(class) = Class::<T>::from_object(object) {
17 return Ok(Some(class.borrow().structured_clone(ctx)?));
18 }
19 Ok(None)
20}