Rust每周一库: structopt

标准库提供了std::env::args()用来获取命令行的参数,第一个值是程序的名称,这和其它语言中的获取参数的方式类似:

1
2
3
4
5
6
7
let args: Vec<String> = env::args().collect();
let query = &args[1];
let filename = &args[2];
println!("Searching for {}", query);
println!("In file {}", filename);

但是在产品开发的过程中,我们需要比较多的程序参数,并且需要一定的规则和校验,这个时候我们就需要使用其它的一些库对这些参数进行解析,比如structopt库。

阅读全文

Rust每周一库: log

这周了解一下 rust 的日志系统。

日志库是产品级软件开发中经常使用的组件,用来记录系统运行的日志,经常我们会把日志按照重要性分成几个级别,有时候会输出到终端中,有时候会输出到日志文件,或者输出到某个集中的日志处理系统中。

Java中曾经广泛使用的是apache log4j日志库,后来slf4j逐渐流行并广泛使用,slf4j是一个日志门面,具体的日志还是可以通过log4j或者logback等日志框架来实现。 通过定义统一的日志门面,可以让开发者不必拘泥于日志框架的选择,使用统一的日志记录方式,可以自多个日志框架中灵活切换。

rust也有类似的“日志门面”库, 也就是log库。

阅读全文

Rust每周一库: lazy_static

八月中秋白露,路上行人凄凉。小桥明月桂花香,日夜千思万想。 心中万般宁静,青春好读文章。 十年苦读在书房,方见才学益广。

辛弃疾《西江月·夜行黄沙道中》

lazy_static 是rust中广泛使用的一个库,一直处于“Most Downloaded”下载列表的前十中,每天的下载量也是上万次。

它使用简单,切换方便,功能专一,同时支持stdno-std,也是一个我们学习rust开发的很好的例子。

lazy_static可以帮助你实现延迟初始化static常量的功能。

阅读全文

Rust每周一库: LRU

今天我们来学习lru库。

LRU置换算法是一种很常用的缓存淘汰算法,称作最近最少使用(Least Recently Used)算法。缓存的大小是有限的,一旦放入对象的时候超过了缓存的容量,需要根据一个算法剔除一些对象,LRU就是一种剔除算法,它是把最近很少使用的对象剔除出去,也就是剔除最久没有访问的对象。

阅读全文