1use thiserror::Error;
4
5pub type Result<T> = std::result::Result<T, Error>;
7
8#[derive(Debug, Error)]
10pub enum Error {
11 #[error("parse error: {0}")]
13 Parse(String),
14
15 #[error("cyclic dependency detected: {0}")]
17 CyclicDependency(String),
18
19 #[error("cell not found: {0}")]
21 CellNotFound(String),
22
23 #[error("compilation failed{}: {message}", cell_id.as_ref().map(|id| format!(" for cell {}", id)).unwrap_or_default())]
25 Compilation {
26 cell_id: Option<String>,
27 message: String,
28 },
29
30 #[error("failed to load library: {0}")]
32 LibraryLoad(#[from] libloading::Error),
33
34 #[error("serialization error: {0}")]
36 Serialization(String),
37
38 #[error("deserialization error: {0}")]
40 Deserialization(String),
41
42 #[error("schema evolution error: {0}")]
44 SchemaEvolution(String),
45
46 #[error("IO error: {0}")]
48 Io(#[from] std::io::Error),
49
50 #[error("IPC error: {0}")]
52 Ipc(String),
53
54 #[error("toolchain error: {0}")]
56 Toolchain(String),
57
58 #[error("execution error: {0}")]
60 Execution(String),
61
62 #[error("execution aborted")]
64 Aborted,
65
66 #[error("invalid operation: {0}")]
68 InvalidOperation(String),
69}