tmux_layout/config/
includes.rs

1use serde::{de::DeserializeOwned, Deserialize, Serialize};
2use thiserror::Error;
3
4#[derive(Debug, Default, PartialEq, Eq, Serialize, Deserialize)]
5pub struct NoIncludes;
6
7#[derive(Debug, Default, PartialEq, Eq, Serialize, Deserialize)]
8pub struct FilePathIncludes(pub Vec<String>);
9
10pub trait ConfigIncludes: Serialize + DeserializeOwned + Default + sealed::Sealed {
11    fn is_empty(&self) -> bool;
12}
13
14impl ConfigIncludes for NoIncludes {
15    fn is_empty(&self) -> bool {
16        true
17    }
18}
19
20impl ConfigIncludes for FilePathIncludes {
21    fn is_empty(&self) -> bool {
22        self.0.is_empty()
23    }
24}
25
26impl sealed::Sealed for NoIncludes {}
27impl sealed::Sealed for FilePathIncludes {}
28
29#[derive(Debug, Error)]
30#[error("unresolved includes")]
31pub struct UnresolvedIncludes;
32
33mod sealed {
34    pub trait Sealed {}
35}