Lines Matching defs:ArcInner
133 ptr: NonNull<ArcInner<T>>,
134 // NB: this informs dropck that objects of type `ArcInner<T>` may be used in `<Arc<T> as
136 // `<Arc<T> as Drop>::drop` and the distinction between `T` and `ArcInner<T>` is not presently
142 _p: PhantomData<ArcInner<T>>,
147 struct ArcInner<T: ?Sized> {
152 impl<T: ?Sized> ArcInner<T> {
153 /// Converts a pointer to the contents of an [`Arc`] into a pointer to the [`ArcInner`].
159 unsafe fn container_of(ptr: *const T) -> NonNull<ArcInner<T>> {
168 // `ArcInner<T>` is the same since `ArcInner` is a struct with `T` as its last field.
172 let ptr = ptr as *const ArcInner<T>;
179 // SAFETY: The pointer can't be null since you can't have an `ArcInner<T>` value at the null
231 let value = ArcInner {
246 /// Constructs a new [`Arc`] from an existing [`ArcInner`].
252 unsafe fn from_inner(inner: NonNull<ArcInner<T>>) -> Self {
274 // SAFETY: As `ptr` points to a valid allocation of type `ArcInner`,
288 let ptr = unsafe { ArcInner::container_of(ptr) };
371 // `KBox<ArcInner<T>>`, so that type is what determines the alignment.
373 const FOREIGN_ALIGN: usize = <KBox<ArcInner<T>> as ForeignOwnable>::FOREIGN_ALIGN;
385 let inner = unsafe { NonNull::new_unchecked(ptr.cast::<ArcInner<T>>()) };
396 let inner = unsafe { NonNull::new_unchecked(ptr.cast::<ArcInner<T>>()) };
549 inner: NonNull<ArcInner<T>>,
577 unsafe fn new(inner: NonNull<ArcInner<T>>) -> Self {
598 let ptr = unsafe { ArcInner::container_of(ptr) };
761 try_init!(ArcInner {