php_tokio/
borrow_unchecked.rs1use ext_php_rs::binary_slice::{BinarySlice, PackSlice};
21
22#[inline(always)]
23pub unsafe fn borrow_unchecked<
24 'original,
25 'unbounded,
26 Ref: BorrowUnchecked<'original, 'unbounded>,
27>(
28 reference: Ref,
29) -> Ref::Unbounded {
30 unsafe { BorrowUnchecked::borrow_unchecked(reference) }
31}
32
33#[doc(hidden)]
34pub unsafe trait BorrowUnchecked<'original, 'unbounded> {
35 type Unbounded;
36
37 unsafe fn borrow_unchecked(self) -> Self::Unbounded;
38}
39
40unsafe impl<'original, 'unbounded, T: 'unbounded> BorrowUnchecked<'original, 'unbounded>
41 for &'original T
42{
43 type Unbounded = &'unbounded T;
44
45 #[inline(always)]
46 unsafe fn borrow_unchecked(self) -> Self::Unbounded {
47 unsafe { ::core::mem::transmute(self) }
48 }
49}
50
51unsafe impl<'original, 'unbounded, T: 'unbounded> BorrowUnchecked<'original, 'unbounded>
52 for &'original mut T
53{
54 type Unbounded = &'unbounded mut T;
55
56 #[inline(always)]
57 unsafe fn borrow_unchecked(self) -> Self::Unbounded {
58 unsafe { ::core::mem::transmute(self) }
59 }
60}
61
62unsafe impl<'original, 'unbounded, T: 'unbounded + PackSlice> BorrowUnchecked<'original, 'unbounded>
63 for BinarySlice<'original, T>
64{
65 type Unbounded = BinarySlice<'unbounded, T>;
66
67 #[inline(always)]
68 unsafe fn borrow_unchecked(self) -> Self::Unbounded {
69 unsafe { ::core::mem::transmute(self) }
70 }
71}