diff --git a/src/macros.rs b/src/macros.rs index c282e74..4c56659 100644 --- a/src/macros.rs +++ b/src/macros.rs @@ -410,7 +410,7 @@ macro_rules! box_tracked { macro_rules! arc_tracked { ($expr:expr) => {{ let obj = $expr; - let ptr = Arc::into_raw(Arc::new(obj)) as *mut _; + let ptr = std::sync::Arc::into_raw(std::sync::Arc::new(obj)) as *mut _; $crate::track_arc(ptr) }}; } @@ -1051,3 +1051,20 @@ macro_rules! cimpl_free { $crate::cimpl_free($ptr as *mut _) }; } + +#[cfg(test)] +mod tests { + // `test_arc_tracked_expands_without_arc_import` tests that a fully qualified Arc name compiles. + // So we can't import Arc here either. + + #[test] + fn test_arc_tracked_expands_without_arc_import() { + let pointer: *mut i32 = crate::arc_tracked!(5i32); + assert!(!pointer.is_null()); + { + let value = crate::checkout_shared::(pointer).expect("new handle OK"); + assert_eq!(*value, 5); + } + assert_eq!(crate::cimpl_free(pointer as *mut std::ffi::c_void), 0); + } +}