From 500c9def8699fe9fb124ea3c95f28b7b2a9c18f1 Mon Sep 17 00:00:00 2001 From: numzero Date: Thu, 7 May 2026 20:25:51 +0300 Subject: [PATCH] add conversion macros --- src/lib.rs | 2 +- src/opt.rs | 10 ++++++++++ src/ptr.rs | 10 ++++++++++ 3 files changed, 21 insertions(+), 1 deletion(-) diff --git a/src/lib.rs b/src/lib.rs index 96eb417..938c17e 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,4 +1,4 @@ pub mod opt; pub mod ptr; -pub use ptr::OwnRef; +pub use ptr::{OwnRef, to_own_ref}; diff --git a/src/opt.rs b/src/opt.rs index 8c3df79..5fdcdf9 100644 --- a/src/opt.rs +++ b/src/opt.rs @@ -40,6 +40,16 @@ impl OwnRef<'_, T> { } } +#[macro_export] +macro_rules! _to_opt_own_ref { + ($var:ident) => { + let mut $var = Some($var); + let $var = OwnRef::from_option(&mut $var); + }; +} + +pub use _to_opt_own_ref as to_own_ref; + #[cfg(test)] mod tests { use super::*; diff --git a/src/ptr.rs b/src/ptr.rs index 0c34691..5f0d2a7 100644 --- a/src/ptr.rs +++ b/src/ptr.rs @@ -66,6 +66,16 @@ impl OwnRef<'_, dyn std::any::Any> { } } +#[macro_export] +macro_rules! _to_ptr_own_ref { + ($var:ident) => { + let mut $var = ManuallyDrop::new($var); + let $var = unsafe { OwnRef::from_manually_drop(&mut $var) }; + }; +} + +pub use _to_ptr_own_ref as to_own_ref; + #[cfg(test)] mod tests { use super::*;