rapid/app/
mod.rs

1mod run;
2mod default;
3
4use std::io::Write;
5
6pub use self::run::*;
7pub use self::default::*;
8
9pub struct App<TStdout, TStderr>
10    where TStdout: Write + Send + 'static,
11          TStderr: Write + Send + 'static
12{
13    name:    String,
14    usage:   String,
15    version: String,
16    stdout:  TStdout,
17    stderr:  TStderr,
18    exit:    bool
19}
20
21impl<TStdout: Write + Send + 'static, TStderr: Write + Send + 'static> App<TStdout, TStderr> {
22    pub fn new(stdout: TStdout, stderr: TStderr) -> Self {
23        Self {
24            name:    String::default(),
25            usage:   String::default(),
26            version: String::default(),
27            exit:    true,
28            stdout,
29            stderr
30        }
31    }
32
33    pub fn name<S: Into<String>>(mut self, value: S) -> Self {
34        self.name = value.into();
35        self
36    }
37
38    pub fn usage<S: Into<String>>(mut self, value: S) -> Self {
39        self.usage = value.into();
40        self
41    }
42
43    pub fn version<S: Into<String>>(mut self, value: S) -> Self {
44        self.version = value.into();
45        self
46    }
47
48    pub fn stdout<S: Into<TStdout>>(mut self, value: S) -> Self {
49        self.stdout= value.into();
50        self
51    }
52
53    pub fn stderr<S: Into<TStderr>>(mut self, value: S) -> Self {
54        self.stderr = value.into();
55        self
56    }
57
58    pub fn exit<S: Into<bool>>(mut self, value: S) -> Self {
59        self.exit= value.into();
60        self
61    }
62}