Rust,这门号称“跑得快如C++、安全如堡垒”的编程语言,不仅在区块链、嵌入式领域大杀四方,连写个命令行工具都能让你爽到飞起。今天,我们就用Rust从0到1打造一个文本统计工具(类似Linux的wc),带你体验Rust的超快与超安全,还要听听Python和Go粉丝的“吐槽”。准备好了吗?Ferris已经挥爪催你开工了!
为什么用Rust写CLI工具?命令行工具(CLI)是程序员的“瑞士军刀”,从自动化脚本到数据处理,样样离不开。Rust为啥是写CLI的绝佳选择?让我们看看它的三大超能力:
Rust写CLI工具的真正魅力在于“极致体验”——它不仅快,还让你从开发到部署都省心。相比Python的解释执行,Rust的二进制文件可以直接丢到服务器运行;相比C++的复杂内存管理,Rust让你专注逻辑,告别段错误。
实战:3分钟打造一个文本统计CLI好了,废话少说,我们来实战!我们将用Rust写一个wordcount工具,输入文件名就能统计行数、单词数、字符数,类似Linux的wc命令。Ferris已经准备好它的“魔法工具箱”了!第一步:召唤Cargo,创建项目Rust的Cargo是你的“编程管家”,几秒钟就能搭建项目框架。打开终端,输入:
cargo new wordcount --bin
cd wordcountCargo会生成一个项目目录,包含src/main.rs(主代码文件)和Cargo.toml(配置文件)。Ferris挥爪:“看,我的管家多贴心,连文件夹都帮你整理好了!”第二步:写核心逻辑我们让工具读取文件,统计行数、单词数、字符数。代码如下:
use std::env;
use std::fs;
fn main() {
// 获取命令行参数
let args: Vec<String> = env::args().collect();
if args.len() != 2 {
eprintln!("Usage: {} <filename>", args[0]);
std::process::exit(1);
}
// 读取文件内容
let filename = &args[1];
let contents = fs::read_to_string(filename).expect("Failed to read file");
// 统计行数、单词数、字符数
let lines = contents.lines().count();
let words = contents.split_whitespace().count();
let chars = contents.chars().count();
// 输出结果
println!("Lines: {}\nWords: {}\nChars: {}", lines, words, chars);
}代码亮点:
运行cargo run -- example.txt,你会看到类似:
Lines: 10
Words: 50
Chars: 300Ferris跳舞庆祝:“看,3分钟搞定一个CLI工具,跑得比Python快100倍!”
第三步:加点料,用clap提升逼格想让你的CLI更专业?Rust的crates.io(“魔法商店”)有个神器——clap库,能轻松解析命令行选项。修改Cargo.toml,添加依赖:
[dependencies]
clap = { version = "4.5", features = ["derive"] }重写代码,支持选项如--lines(只显示行数):
use clap::Parser;
use std::fs;
#[derive(Parser)]
struct Args {
#[arg(short, long)]
lines: bool,
#[arg(short, long)]
words: bool,
#[arg(short, long)]
chars: bool,
file: String,
}
fn main() {
let args = Args::parse();
let contents = fs::read_to_string(&args.file).expect("Failed to read file");
if args.lines {
println!("Lines: {}", contents.lines().count());
}
if args.words {
println!("Words: {}", contents.split_whitespace().count());
}
if args.chars {
println!("Chars: {}", contents.chars().count());
}
}运行cargo run -- --lines example.txt,只输出行数。Ferris拍爪:“几行代码就让你的CLI媲美Linux命令,够酷吧!”
Rust vs. 其他语言:CLI开发谁更强?为了让你更直观感受Rust的魅力,我们来场“CLI工具大对决”:
Rust写CLI工具不仅是“现在好用”,还代表了未来趋势。它的二进制部署让DevOps工程师爱不释手,内存安全让运维省心,crates.io的生态让功能扩展无压力。想发布自己的工具?用cargo publish一键推到crates.io,Ferris会为你鼓掌!
Rust让你在开发CLI时既能享受高性能,又能拥有现代化开发体验(Cargo、clap)。但它也有“高冷”一面:借用检查器严格,初学者可能被“教导主任”吓跑。这让Rust更适合那些愿意花时间换取极致效果的程序员。