1 use docopt::Docopt; 2 use serde::Deserialize; 3 4 // Write the Docopt usage string. 5 const USAGE: &'static str = " 6 Usage: cp [-a] <source> <dest> 7 cp [-a] <source>... <dir> 8 9 Options: 10 -a, --archive Copy everything. 11 "; 12 13 #[derive(Debug, Deserialize)] 14 struct Args { 15 arg_source: Vec<String>, 16 arg_dest: String, 17 arg_dir: String, 18 flag_archive: bool, 19 } 20 main()21fn main() { 22 let args: Args = Docopt::new(USAGE) 23 .and_then(|d| d.deserialize()) 24 .unwrap_or_else(|e| e.exit()); 25 println!("{:?}", args); 26 } 27