+14
-1
upload/src/config.rs
+14
-1
upload/src/config.rs
···
1
-
use std::fs;
1
+
use std::{fmt, fs};
2
2
3
+
#[derive(Debug)]
3
4
pub struct Config {
4
5
pub user: String,
5
6
pub pword: String,
6
7
pub dir: String,
7
8
}
8
9
10
+
#[derive(Debug)]
9
11
pub enum ConfigErr {
10
12
TooManyDirectories,
11
13
NotEnoughArgs(String),
12
14
UnknownArg(String),
13
15
NotADirectory,
16
+
}
17
+
18
+
impl fmt::Display for ConfigErr {
19
+
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
20
+
match self {
21
+
ConfigErr::TooManyDirectories => write!(f, "Too many directories"),
22
+
ConfigErr::NotEnoughArgs(args) => write!(f, "Missing {}", args),
23
+
ConfigErr::UnknownArg(arg) => write!(f, "Unknown arg {}", arg),
24
+
ConfigErr::NotADirectory => write!(f, "Not a directory"),
25
+
}
26
+
}
14
27
}
15
28
16
29
pub fn extract() -> Result<Config, ConfigErr> {
+4
-12
upload/src/main.rs
+4
-12
upload/src/main.rs
···
2
2
3
3
fn main() -> Result<(), ()> {
4
4
// get config items
5
-
let config = match config::extract() {
6
-
Ok(v) => v,
7
-
Err(err) => {
8
-
match err {
9
-
config::ConfigErr::TooManyDirectories => println!("Too many directories"),
10
-
config::ConfigErr::NotEnoughArgs(args) => println!("Missing {}", args),
11
-
config::ConfigErr::UnknownArg(arg) => println!("Unknown arg {}", arg),
12
-
config::ConfigErr::NotADirectory => println!("Not a directory"),
13
-
}
14
-
return Err(());
15
-
}
16
-
};
5
+
let config = config::extract().or_else(|x| {
6
+
println!("{}", x);
7
+
Err(())
8
+
})?;
17
9
18
10
println!(
19
11
"user: {}