focus_tracker_core/
error.rs1use 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}