1use snafu::Snafu;
2
3pub type Result<T, E = Error> = std::result::Result<T, E>;
4
5#[derive(Debug, Snafu)]
6#[snafu(visibility(pub))]
7pub enum Error {
8 #[snafu(display("shape mismatch: expected {expected:?}, got {actual:?}"))]
10 ShapeMismatch { expected: Vec<usize>, actual: Vec<usize> },
11
12 #[snafu(display("size mismatch: expected {expected}, got {actual}"))]
13 SizeMismatch { expected: usize, actual: usize },
14
15 #[snafu(display("copy operation failed: {reason}"))]
17 CopyFailed { reason: String },
18
19 #[snafu(display("invalid device: {device}"))]
21 InvalidDevice { device: String },
22
23 #[snafu(display("buffer not allocated"))]
25 NotAllocated,
26
27 #[snafu(display("buffer is not CPU-accessible (device buffers require copyout)"))]
29 NotCpuAccessible,
30
31 #[snafu(display("type mismatch: buffer has {actual:?}, requested {expected:?}"))]
33 TypeMismatch { expected: morok_dtype::DType, actual: morok_dtype::DType },
34
35 #[snafu(display("ndarray shape error: {source}"))]
37 NdarrayShape { source: ndarray::ShapeError },
38
39 #[snafu(display("invalid view: offset {offset} + size {size} exceeds buffer size {buffer_size}"))]
41 InvalidView { offset: usize, size: usize, buffer_size: usize },
42
43 #[snafu(display("runtime error: {message}"))]
45 Runtime { message: String },
46
47 #[cfg(feature = "cuda")]
48 #[snafu(display("CUDA error: {source}"))]
50 CudaError { source: cudarc::driver::DriverError },
51}