Lines Matching refs:Src
60 pub unsafe trait Project<Src: ?Sized, Dst: ?Sized> {
73 fn project(src: PtrInner<'_, Src>) -> *mut Dst; in project()
83 pub unsafe trait Cast<Src: ?Sized, Dst: ?Sized>: Project<Src, Dst> {}
90 pub unsafe trait CastExact<Src: ?Sized, Dst: ?Sized>: Cast<Src, Dst> {}
128 unsafe impl<Src, Dst> Project<Src, Dst> for CastSized {
130 fn project(src: PtrInner<'_, Src>) -> *mut Dst { in project()
131 static_assert!(Src, Dst => mem::size_of::<Src>() >= mem::size_of::<Dst>()); in project()
137 unsafe impl<Src, Dst> Cast<Src, Dst> for CastSized {}
155 unsafe impl<Src, Dst> Project<Src, Dst> for CastSizedExact {
157 fn project(src: PtrInner<'_, Src>) -> *mut Dst { in project()
158 static_assert!(Src, Dst => mem::size_of::<Src>() == mem::size_of::<Dst>()); in project()
164 unsafe impl<Src, Dst> Cast<Src, Dst> for CastSizedExact {}
168 unsafe impl<Src, Dst> CastExact<Src, Dst> for CastSizedExact {}
190 unsafe impl<Src, Dst> Project<Src, Dst> for CastUnsized
192 Src: ?Sized + KnownLayout,
193 Dst: ?Sized + KnownLayout<PointerMetadata = Src::PointerMetadata>,
196 fn project(src: PtrInner<'_, Src>) -> *mut Dst { in project()
199 static_assert!(Src: ?Sized + KnownLayout, Dst: ?Sized + KnownLayout => { in project()
200 let src = <Src as KnownLayout>::LAYOUT; in project()
212 let metadata = Src::pointer_to_metadata(src.as_ptr()); in project()
218 unsafe impl<Src, Dst> Cast<Src, Dst> for CastUnsized
220 Src: ?Sized + KnownLayout,
221 Dst: ?Sized + KnownLayout<PointerMetadata = Src::PointerMetadata>,
232 unsafe impl<Src, Dst> CastExact<Src, Dst> for CastUnsized
234 Src: ?Sized + KnownLayout,
235 Dst: ?Sized + KnownLayout<PointerMetadata = Src::PointerMetadata>,