tmux_layout/config/
includes.rs1use 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}