1use thiserror::Error;
7
8pub type Result<T> = std::result::Result<T, UnslothError>;
10
11#[derive(Error, Debug)]
13#[non_exhaustive]
14pub enum UnslothError {
15 #[error("kernel error: {0}")]
17 Kernel(String),
18
19 #[error("out of memory: required {required} bytes, available {available} bytes")]
21 OutOfMemory {
22 required: usize,
24 available: usize,
26 },
27
28 #[error("device not available: {0}")]
30 DeviceNotAvailable(String),
31
32 #[error("shape mismatch: expected {expected:?}, got {actual:?}")]
34 ShapeMismatch {
35 expected: Vec<usize>,
37 actual: Vec<usize>,
39 },
40
41 #[error("invalid configuration: {0}")]
43 InvalidConfig(String),
44
45 #[error("quantization error: {0}")]
47 Quantization(String),
48
49 #[error("ternary operation error: {0}")]
51 Ternary(String),
52
53 #[error("candle error: {0}")]
55 Candle(#[from] candle_core::Error),
56}