1. 参数解析
需要安装clap
库,可通过cargo add clap --features derive
命令安装
[dependencies] clap = { version = "4.1.11" , features = ["derive" ] }
1.1 解析命令行参数
此应用程序使用 clap
构建器样式描述其命令行界面的结构。文档还提供了另外两种可用的方法去实例化应用程序。在构建器样式中,short
和 long
选项控制用户将要键入的标志;short
标志看起来像 -f
,long 标志看起来像 --file
。
use clap::{Arg, Command};fn main () { let matches = Command::new ("命令行-测试" ) .version ("0.1.0" ) .author ("Hackerman Jones <hckrmnjones@hack.gov>" ) .about ("参数解析教学" ) .arg ( Arg::new ("file" ) .short ('f' ) .long ("file" ) .help ("A cool file" ), ) .arg ( Arg::new ("num" ) .short ('n' ) .long ("number" ) .help ("Five less than your favorite number" ), ) .get_matches (); let binding = String ::from ("a.txt" ); let myfile = matches.get_one::<String >("file" ).unwrap_or (&binding); println! ("传递的文件是: {}" , myfile); let num_str = matches.get_one::<String >("num" ); match num_str { None => println! ("不知道你最喜欢的数字是什么。" ), Some (s) => match s.parse::<i32 >() { Ok (n) => println! ("你喜欢的数字是 {}." , n + 5 ), Err (_) => println! ("那不是一个数字! {}" , s), }, } }
cargo run -- -f abc.txt -n 100
传递的文件是: abc.txt 你喜欢的数字是 105.
2. ANSI
终端
需要安装ansi_term
库,可通过cargo add ansi_term
命令安装
[dependencies] ansi_term = "0.12.1"
ansi_term
中有两种主要的数据结构:ANSIString
和 Style
。Style
包含样式信息:颜色,是否粗体文本,或者是否闪烁,或者其它样式。还有 Colour
变量,代表简单的前景色样式。ANSIString
是与 Style
配对的字符串。
2.1 打印彩色文本到终端
use ansi_term::Colour;fn main () { println! ( "This is {} in color, {} in color and {} in color" , Colour::Red.paint ("红色" ), Colour::Blue.paint ("蓝色" ), Colour::Green.paint ("绿色" ) ); }
This is 红色 in color, 蓝色 in color and 绿色 in color
2.2 终端中的粗体文本
对于比简单的前景色变化更复杂的事情,代码需要构造 Style
结构体。Style::new()
创建结构体,并链接属性。
use ansi_term::Style;fn main () { println! ("{} and 这不是" , Style::new ().bold ().paint ("这是加粗" )); }
2.3 终端中的粗体和彩色文本
Colour
模块实现了许多类似 Style
的函数,并且可以链接方法。
use ansi_term::Colour;use ansi_term::Style;fn main () { println! ( "{}, {} and {}" , Colour::Yellow.paint ("这是黄色的" ), Style::new ().bold ().paint ("这是加粗的" ), Colour::Yellow.bold ().paint ("这是黄色并加粗的" ) ); }
这是黄色的, 这是加粗的 and 这是黄色并加粗的