simple_fs/
list_options.rs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
pub struct ListOptions<'a> {
	pub exclude_globs: Option<Vec<&'a str>>,
}

/// Constructors
impl<'a> ListOptions<'a> {
	pub fn new(globs: Option<&'a [&'a str]>) -> Self {
		ListOptions {
			exclude_globs: globs.map(|v| v.to_vec()),
		}
	}
}

/// Getters
impl<'a> ListOptions<'a> {
	pub fn exclude_globs(&'a self) -> Option<&'a [&'a str]> {
		self.exclude_globs.as_deref()
	}
}

// region:    --- Froms

impl<'a> From<&'a [&'a str]> for ListOptions<'a> {
	fn from(globs: &'a [&'a str]) -> Self {
		ListOptions {
			exclude_globs: Some(globs.to_vec()),
		}
	}
}

impl<'a> From<Option<&'a [&'a str]>> for ListOptions<'a> {
	fn from(globs: Option<&'a [&'a str]>) -> Self {
		ListOptions {
			exclude_globs: globs.map(|v| v.to_vec()),
		}
	}
}

impl<'a> From<Vec<&'a str>> for ListOptions<'a> {
	fn from(globs: Vec<&'a str>) -> Self {
		let globs_ref: Vec<&'a str> = globs.to_vec();
		ListOptions {
			exclude_globs: Some(globs_ref),
		}
	}
}

// endregion: --- Froms