2025-06-24 20:27:06 +02:00
|
|
|
use serde::de::StdError;
|
2025-06-23 20:59:49 +02:00
|
|
|
use std::fmt;
|
|
|
|
|
use std::sync::PoisonError;
|
2025-06-23 20:27:16 +02:00
|
|
|
use thiserror::Error;
|
|
|
|
|
|
2025-06-23 20:59:49 +02:00
|
|
|
pub type NyxResult<T, E = NyxError> = Result<T, E>;
|
2025-06-23 20:27:16 +02:00
|
|
|
|
|
|
|
|
#[derive(Debug, Error)]
|
|
|
|
|
pub enum NyxError {
|
2025-06-24 20:27:06 +02:00
|
|
|
#[error("I/O error: {0}")]
|
|
|
|
|
Io(#[from] std::io::Error),
|
|
|
|
|
|
|
|
|
|
#[error("SQLite error: {0}")]
|
|
|
|
|
Sql(#[from] rusqlite::Error),
|
|
|
|
|
|
|
|
|
|
#[error("tree-sitter error: {0}")]
|
|
|
|
|
TreeSitter(#[from] tree_sitter::LanguageError),
|
2025-06-23 20:27:16 +02:00
|
|
|
|
2025-06-24 20:27:06 +02:00
|
|
|
#[error("connection-pool error: {0}")]
|
|
|
|
|
Pool(#[from] r2d2::Error),
|
2025-06-23 20:27:16 +02:00
|
|
|
|
2025-06-24 20:27:06 +02:00
|
|
|
#[error("time error: {0}")]
|
|
|
|
|
Time(#[from] std::time::SystemTimeError),
|
2025-06-23 20:27:16 +02:00
|
|
|
|
2025-06-24 20:27:06 +02:00
|
|
|
#[error("poisoned lock: {0}")]
|
|
|
|
|
Poison(String),
|
2025-06-23 20:27:16 +02:00
|
|
|
|
2025-06-24 20:27:06 +02:00
|
|
|
#[error(transparent)]
|
|
|
|
|
Other(#[from] Box<dyn StdError + Send + Sync + 'static>),
|
2025-06-23 20:27:16 +02:00
|
|
|
|
2025-06-24 20:27:06 +02:00
|
|
|
#[error("{0}")]
|
|
|
|
|
Msg(String),
|
2025-06-23 20:59:49 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
impl<T> From<PoisonError<T>> for NyxError
|
|
|
|
|
where
|
2025-06-24 20:27:06 +02:00
|
|
|
T: fmt::Debug,
|
2025-06-23 20:59:49 +02:00
|
|
|
{
|
2025-06-24 20:27:06 +02:00
|
|
|
fn from(err: PoisonError<T>) -> Self {
|
|
|
|
|
NyxError::Poison(err.to_string())
|
|
|
|
|
}
|
2025-06-23 20:59:49 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
impl From<&str> for NyxError {
|
2025-06-24 20:27:06 +02:00
|
|
|
fn from(s: &str) -> Self {
|
|
|
|
|
NyxError::Msg(s.to_owned())
|
|
|
|
|
}
|
2025-06-23 20:59:49 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
impl From<String> for NyxError {
|
2025-06-24 20:27:06 +02:00
|
|
|
fn from(s: String) -> Self {
|
|
|
|
|
NyxError::Msg(s)
|
|
|
|
|
}
|
2025-06-23 20:59:49 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
impl From<Box<dyn std::error::Error>> for NyxError {
|
2025-06-24 20:27:06 +02:00
|
|
|
fn from(err: Box<dyn std::error::Error>) -> Self {
|
|
|
|
|
NyxError::Msg(err.to_string())
|
|
|
|
|
}
|
2025-06-23 20:59:49 +02:00
|
|
|
}
|