diff options
| -rw-r--r-- | libs/binder/rust/src/binder.rs | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/libs/binder/rust/src/binder.rs b/libs/binder/rust/src/binder.rs index 6bf9cd5c4c..69c384419b 100644 --- a/libs/binder/rust/src/binder.rs +++ b/libs/binder/rust/src/binder.rs @@ -587,6 +587,15 @@ macro_rules! declare_binder_interface { f.pad(stringify!($interface)) } } + + // Convert a &dyn $interface to Box<dyn $interface> + impl std::borrow::ToOwned for dyn $interface { + type Owned = Box<dyn $interface>; + fn to_owned(&self) -> Self::Owned { + self.as_binder().into_interface() + .expect(concat!("Error cloning interface ", stringify!($interface))) + } + } }; } |