simple_fs/list/
list_options.rs

1/// Note: In the future, the lifetime might be removed, and iter_files will take Option<&ListOptions>.
2#[derive(Default)]
3pub struct ListOptions<'a> {
4	pub exclude_globs: Option<Vec<&'a str>>,
5
6	/// When this is true,
7	/// - the glob will be relative to the directory of the list, rather than including it.
8	///
9	/// By default, it is false.
10	pub relative_glob: bool,
11
12	/// For now, only used in dir list
13	pub depth: Option<usize>,
14}
15
16/// Constructors
17impl<'a> ListOptions<'a> {
18	pub fn new(globs: Option<&'a [&'a str]>) -> Self {
19		ListOptions {
20			exclude_globs: globs.map(|v| v.to_vec()),
21			relative_glob: false,
22			depth: None,
23		}
24	}
25
26	pub fn from_relative_glob(val: bool) -> Self {
27		ListOptions {
28			exclude_globs: None,
29			relative_glob: val,
30			depth: None,
31		}
32	}
33}
34
35/// Setters
36impl<'a> ListOptions<'a> {
37	pub fn with_exclude_globs(mut self, globs: &'a [&'a str]) -> Self {
38		self.exclude_globs = Some(globs.to_vec());
39		self
40	}
41
42	pub fn with_relative_glob(mut self) -> Self {
43		self.relative_glob = true;
44		self
45	}
46}
47
48/// Getters
49impl<'a> ListOptions<'a> {
50	pub fn exclude_globs(&'a self) -> Option<&'a [&'a str]> {
51		self.exclude_globs.as_deref()
52	}
53}
54
55// region:    --- Froms
56
57impl<'a> From<&'a [&'a str]> for ListOptions<'a> {
58	fn from(globs: &'a [&'a str]) -> Self {
59		ListOptions {
60			exclude_globs: Some(globs.to_vec()),
61			relative_glob: false,
62			depth: None,
63		}
64	}
65}
66
67impl<'a> From<Option<&'a [&'a str]>> for ListOptions<'a> {
68	fn from(globs: Option<&'a [&'a str]>) -> Self {
69		ListOptions {
70			exclude_globs: globs.map(|v| v.to_vec()),
71			relative_glob: false,
72			depth: None,
73		}
74	}
75}
76
77impl<'a> From<Vec<&'a str>> for ListOptions<'a> {
78	fn from(globs: Vec<&'a str>) -> Self {
79		let globs_ref: Vec<&'a str> = globs.to_vec();
80		ListOptions {
81			exclude_globs: Some(globs_ref),
82			relative_glob: false,
83			depth: None,
84		}
85	}
86}
87
88// endregion: --- Froms