use crate::error::CudaResult;
use crate::stream::Stream;
mod device_box;
mod device_buffer;
mod device_slice;
mod device_variable;
pub use self::device_box::*;
pub use self::device_buffer::*;
pub use self::device_slice::*;
pub use self::device_variable::*;
pub trait CopyDestination<O: ?Sized>: crate::private::Sealed {
fn copy_from(&mut self, source: &O) -> CudaResult<()>;
fn copy_to(&self, dest: &mut O) -> CudaResult<()>;
}
pub trait AsyncCopyDestination<O: ?Sized>: crate::private::Sealed {
unsafe fn async_copy_from(&mut self, source: &O, stream: &Stream) -> CudaResult<()>;
unsafe fn async_copy_to(&self, dest: &mut O, stream: &Stream) -> CudaResult<()>;
}