veloren_server/
error.rs

1use crate::persistence::error::PersistenceError;
2use network::{NetworkError, ParticipantError, StreamError};
3use std::fmt::{self, Display};
4
5#[derive(Debug)]
6pub enum Error {
7    NetworkErr(NetworkError),
8    ParticipantErr(ParticipantError),
9    StreamErr(StreamError),
10    DatabaseErr(rusqlite::Error),
11    PersistenceErr(PersistenceError),
12    RtsimError(ron::Error),
13    Other(String),
14}
15
16impl From<NetworkError> for Error {
17    fn from(err: NetworkError) -> Self { Error::NetworkErr(err) }
18}
19
20impl From<ParticipantError> for Error {
21    fn from(err: ParticipantError) -> Self { Error::ParticipantErr(err) }
22}
23
24impl From<StreamError> for Error {
25    fn from(err: StreamError) -> Self { Error::StreamErr(err) }
26}
27
28// TODO: Don't expose rusqlite::Error from persistence module
29impl From<rusqlite::Error> for Error {
30    fn from(err: rusqlite::Error) -> Self { Error::DatabaseErr(err) }
31}
32
33impl From<PersistenceError> for Error {
34    fn from(err: PersistenceError) -> Self { Error::PersistenceErr(err) }
35}
36
37impl Display for Error {
38    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
39        match self {
40            Self::NetworkErr(err) => write!(f, "Network Error: {}", err),
41            Self::ParticipantErr(err) => write!(f, "Participant Error: {}", err),
42            Self::StreamErr(err) => write!(f, "Stream Error: {}", err),
43            Self::DatabaseErr(err) => write!(f, "Database Error: {}", err),
44            Self::PersistenceErr(err) => write!(f, "Persistence Error: {}", err),
45            Self::RtsimError(err) => write!(f, "Rtsim Error: {}", err),
46            Self::Other(err) => write!(f, "Error: {}", err),
47        }
48    }
49}