pub unsafe trait ForeignType: Sized {
type CType;
type Ref: ForeignTypeRef<CType = Self::CType>;
// Required methods
unsafe fn from_ptr(ptr: *mut Self::CType) -> Self;
fn as_ptr(&self) -> *mut Self::CType;
// Provided method
fn into_ptr(self) -> *mut Self::CType { ... }
}
Expand description
A type implemented by wrappers over foreign types.
§Safety
Implementations of ForeignType
must guarantee the following:
Self::from_ptr(x).as_ptr() == x
Self::from_ptr(x).into_ptr(x) == x
Self::from_ptr(x).deref().as_ptr(x) == x
Self::from_ptr(x).deref_mut().as_ptr(x) == x
Self::from_ptr(x).as_ref().as_ptr(x) == x
Self::from_ptr(x).as_mut().as_ptr(x) == x
Required Associated Types§
Sourcetype Ref: ForeignTypeRef<CType = Self::CType>
type Ref: ForeignTypeRef<CType = Self::CType>
The type representing a reference to this type.
Required Methods§
Provided Methods§
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.