#[derive(thiserror::Error, Debug)] pub enum DbError { #[error("RocksDb error: {}", additional_info.as_deref().unwrap_or("No additional info"))] RocksDbError { #[source] error: rocksdb::Error, additional_info: Option, }, #[error("Serialization error: {}", additional_info.as_deref().unwrap_or("No additional info"))] SerializationError { #[source] error: borsh::io::Error, additional_info: Option, }, #[error("Logic Error: {additional_info}")] DbInteractionError { additional_info: String }, } impl DbError { pub fn rocksdb_cast_message(rerr: rocksdb::Error, message: Option) -> Self { Self::RocksDbError { error: rerr, additional_info: message, } } pub fn borsh_cast_message(berr: borsh::io::Error, message: Option) -> Self { Self::SerializationError { error: berr, additional_info: message, } } pub fn db_interaction_error(message: String) -> Self { Self::DbInteractionError { additional_info: message, } } }