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§

source

type CType

The raw C type.

source

type Ref: ForeignTypeRef<CType = Self::CType>

The type representing a reference to this type.

Required Methods§

source

unsafe fn from_ptr(ptr: *mut Self::CType) -> Self

Constructs an instance of this type from its raw type.

Safety

ptr must be a valid, owned instance of the native type.

source

fn as_ptr(&self) -> *mut Self::CType

Returns a raw pointer to the wrapped value.

Provided Methods§

source

fn into_ptr(self) -> *mut Self::CType

Consumes the wrapper and returns the raw pointer.

Implementors§