focus_tracker_core/
error.rs

1use std::sync::PoisonError;
2use thiserror::Error;
3
4#[derive(Debug, Error)]
5pub enum FocusTrackerError {
6    #[error("{0}")]
7    Error(String),
8
9    #[error("StdSyncPoisonError {0}")]
10    StdSyncPoisonError(String),
11
12    #[error("Unsupported")]
13    Unsupported,
14
15    #[error("Permission denied")]
16    PermissionDenied,
17
18    #[error("No display available")]
19    NoDisplay,
20
21    #[error("Not running in interactive session")]
22    NotInteractiveSession,
23
24    #[error("Platform error: {0}")]
25    Platform(String),
26}
27
28impl FocusTrackerError {
29    pub fn new<S: ToString>(err: S) -> Self {
30        FocusTrackerError::Error(err.to_string())
31    }
32}
33
34pub type FocusTrackerResult<T> = Result<T, FocusTrackerError>;
35
36impl<T> From<PoisonError<T>> for FocusTrackerError {
37    fn from(value: PoisonError<T>) -> Self {
38        FocusTrackerError::StdSyncPoisonError(value.to_string())
39    }
40}