pub fn from_arc(arc: Arc<T>) -> Self {
        let p = Arc::as_ptr(&arc) as *mut T;
        // SAFETY: The pointer was returned by `Arc::as_ptr` and so is not null
        unsafe {
            Self {
                data: NonNull::new_unchecked(p),
                alloc: arc,
            }
        }
    }
/// Creates a new `Marc` from an [`Arc`] that shares ownership of the `Arc`'s data.
///
/// Like [`Marc::new`], this method requires `T: Send + Sized + 'static`. If you have an
/// `Arc<T>` where `T: ?Sized`, then you can create an `Marc<T>` via [`Marc::from_borrow`].
///
/// As long as the returned `Marc` is alive, the strong count of the `Arc` will be at least one.
/// This is also the case if any `Marc`'s derived from the return value via [`Clone`] and
/// [`Marc::map`] are alive. The strong count of the input `Arc` could be observed by another
/// `Arc` also sharing ownership of the data. It is not specified whether clones of the return
/// value will be reflected in that strong count.
///
/// This function is essentially free to call. After inlining, it will consist of one to two
/// pointer copies.


As long as the returned `Marc` is alive, the strong count of the `Arc` will be at least one.

This function is essentially free to call. After inlining, it will consist of one to two
pointer copies.
As long as the returned ` Marc ` is alive the strong count of the ` Arc ` will be at least one . This function is essentially free to call . After inlining it will consist of one to two pointer copies .
pub fn from_arc(arc: Arc<T>) -> Self {
        let p = Arc::as_ptr(&arc) as *mut T;
        // SAFETY: The pointer was returned by `Arc::as_ptr` and so is not null
        unsafe {
            Self {
                data: NonNull::new_unchecked(p),
                alloc: arc,
            }
        }
    }
pub fn from_arc ( arc : Arc < T > ) -> Self { let p = Arc :: as_ptr ( & arc ) as * mut T ; // SAFETY: The pointer was returned by `Arc::as_ptr` and so is not null unsafe { Self { data : NonNull :: new_unchecked ( p ) , alloc : arc , } } }
Creates a new `Marc` from an [`Arc`] that shares ownership of the `Arc`'s data.
Creates a new ` Marc ` from an [ ` Arc ` ] that shares ownership of the ` Arc ` ' s data .
arc
Arc<T>
arc
Arc<T>