simple_fs/list/
list_options.rs1#[derive(Default)]
3pub struct ListOptions<'a> {
4 pub exclude_globs: Option<Vec<&'a str>>,
5
6 pub relative_glob: bool,
11
12 pub depth: Option<usize>,
14}
15
16impl<'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
35impl<'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
48impl<'a> ListOptions<'a> {
50 pub fn exclude_globs(&'a self) -> Option<&'a [&'a str]> {
51 self.exclude_globs.as_deref()
52 }
53}
54
55impl<'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