nstd_shared_ptr_share

Function nstd_shared_ptr_share 

Source
#[unsafe(no_mangle)]
pub extern "C" fn nstd_shared_ptr_share<'a>( shared_ptr: &NSTDSharedPtr<'a>, ) -> NSTDSharedPtr<'a>
Available on crate feature shared_ptr only.
Expand description

Shares shared_ptr.

§Parameters:

  • const NSTDSharedPtr *shared_ptr - The shared object to share.

§Returns

NSTDSharedPtr shared - A new pointer pointing to the shared data.

§Example

use core::ptr::addr_of;
use nstd_sys::{
    alloc::NSTD_ALLOCATOR,
    core::alloc::nstd_core_alloc_layout_new,
    shared_ptr::{nstd_shared_ptr_get, nstd_shared_ptr_new, nstd_shared_ptr_share},
};

unsafe {
    let v = 39u64;
    let share;
    {
        let size = core::mem::size_of::<u64>();
        let align = core::mem::align_of::<u64>();
        let layout = nstd_core_alloc_layout_new(size, align).unwrap();
        let addr = addr_of!(v).cast();
        let shared_ptr = nstd_shared_ptr_new(&NSTD_ALLOCATOR, layout, addr).unwrap();
        share = nstd_shared_ptr_share(&shared_ptr);
    }
    assert!(*nstd_shared_ptr_get(&share).cast::<u64>() == v);
}