DeviceCreationAnyAPI

Trait DeviceCreationAnyAPI 

Source
pub trait DeviceCreationAnyAPI<T>
where Self: DeviceRawAPI<T>,
{ // Required methods unsafe fn empty_impl( &self, len: usize, ) -> Result<Storage<DataOwned<Self::Raw>, T, Self>>; fn full_impl( &self, len: usize, fill: T, ) -> Result<Storage<DataOwned<Self::Raw>, T, Self>> where T: Clone; fn outof_cpu_vec( &self, vec: Vec<T>, ) -> Result<Storage<DataOwned<Self::Raw>, T, Self>>; fn from_cpu_vec( &self, vec: &[T], ) -> Result<Storage<DataOwned<Self::Raw>, T, Self>> where T: Clone; fn uninit_impl( &self, len: usize, ) -> Result<Storage<DataOwned<<Self as DeviceRawAPI<MaybeUninit<T>>>::Raw>, MaybeUninit<T>, Self>> where Self: DeviceRawAPI<MaybeUninit<T>>; unsafe fn assume_init_impl( storage: Storage<DataOwned<<Self as DeviceRawAPI<MaybeUninit<T>>>::Raw>, MaybeUninit<T>, Self>, ) -> Result<Storage<DataOwned<<Self as DeviceRawAPI<T>>::Raw>, T, Self>> where Self: DeviceRawAPI<MaybeUninit<T>>; }

Required Methods§

Source

unsafe fn empty_impl( &self, len: usize, ) -> Result<Storage<DataOwned<Self::Raw>, T, Self>>

§Safety

This function is unsafe because it does not initialize the memory.

Source

fn full_impl( &self, len: usize, fill: T, ) -> Result<Storage<DataOwned<Self::Raw>, T, Self>>
where T: Clone,

Source

fn outof_cpu_vec( &self, vec: Vec<T>, ) -> Result<Storage<DataOwned<Self::Raw>, T, Self>>

Source

fn from_cpu_vec( &self, vec: &[T], ) -> Result<Storage<DataOwned<Self::Raw>, T, Self>>
where T: Clone,

Source

fn uninit_impl( &self, len: usize, ) -> Result<Storage<DataOwned<<Self as DeviceRawAPI<MaybeUninit<T>>>::Raw>, MaybeUninit<T>, Self>>
where Self: DeviceRawAPI<MaybeUninit<T>>,

Source

unsafe fn assume_init_impl( storage: Storage<DataOwned<<Self as DeviceRawAPI<MaybeUninit<T>>>::Raw>, MaybeUninit<T>, Self>, ) -> Result<Storage<DataOwned<<Self as DeviceRawAPI<T>>::Raw>, T, Self>>
where Self: DeviceRawAPI<MaybeUninit<T>>,

§Safety

This function is unsafe because it assumes that the input storage is fully initialized.

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.

Implementors§

Source§

impl<T> DeviceCreationAnyAPI<T> for DeviceCpuSerial
where Self: DeviceRawAPI<T, Raw = Vec<T>> + DeviceRawAPI<MaybeUninit<T>, Raw = Vec<MaybeUninit<T>>>,

Source§

impl<T> DeviceCreationAnyAPI<T> for DeviceFaer
where Self: DeviceRawAPI<T, Raw = Vec<T>> + DeviceRawAPI<MaybeUninit<T>, Raw = Vec<MaybeUninit<T>>>,