Trait FreeForeign

Source
pub trait FreeForeign {
    type Foreign;

    // Required method
    unsafe fn free_foreign(p: *mut Self::Foreign);
}
Expand description

A type for which there is a canonical representation as a C datum.

Required Associated Types§

Source

type Foreign

The representation of Self as a C datum. Typically a struct, though there are exceptions for example c_char for strings, since C strings are of char * type).

Required Methods§

Source

unsafe fn free_foreign(p: *mut Self::Foreign)

Free the C datum pointed to by p.

§Safety

p must be NULL or point to valid data.

let foreign = "Hello, world!".clone_to_foreign();
unsafe {
    String::free_foreign(foreign.into_inner());
}

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.

Implementations on Foreign Types§

Source§

impl FreeForeign for bool

Source§

impl FreeForeign for f32

Source§

impl FreeForeign for f64

Source§

impl FreeForeign for i8

Source§

impl FreeForeign for i16

Source§

impl FreeForeign for i32

Source§

impl FreeForeign for i64

Source§

impl FreeForeign for isize

Source§

impl FreeForeign for str

Source§

impl FreeForeign for u8

Source§

impl FreeForeign for u16

Source§

impl FreeForeign for u32

Source§

impl FreeForeign for u64

Source§

impl FreeForeign for usize

Source§

impl FreeForeign for CString

Source§

impl FreeForeign for String

Source§

impl FreeForeign for CStr

Source§

impl<'a, B> FreeForeign for Cow<'a, B>
where B: 'a + ToOwned + ?Sized + FreeForeign,

Source§

impl<T> FreeForeign for Option<T>
where T: FreeForeign,

Source§

impl<T> FreeForeign for [T]
where T: FixedAlloc,

Source§

impl<T> FreeForeign for Box<T>
where T: FreeForeign,

Source§

impl<T> FreeForeign for Vec<T>

Source§

impl<T, const N: usize> FreeForeign for [T; N]
where T: FixedAlloc,

Implementors§