Rust首入TIOBE前十!从零搭建你的第一个Rust CLI工具(保姆级教程)
📅 2026/7/10 21:35:47
👁️ 次浏览
背景说实话看到TIOBE 7月榜单的时候我愣了一下——Rust居然进前十了这在25年的TIOBE历史上还是头一回。之前大家总说Rust是未来语言现在看来这个未来真的来了。学Rust最大的痛点是什么不是语法难是不知道从哪开始。你打开官网看到的是The Book——600多页。谁有耐心啃完所以我决定换个路子直接上手做一个能用的东西一边做一边学。准备工作安装Rust这个最简单一行命令搞定curl--protohttps--tlsv1.2-sSfhttps://sh.rustup.rs|shWindows用户去官网下载rustup-init.exe。装完验证一下rustc--version# 输出类似: rustc 1.81.0 (eeb6c4e5f 2024-08-13)cargo--version# 输出类似: cargo 1.81.0 (eeb6c4e5f 2024-08-13)项目目标我们今天要做的一个命令行文件搜索工具。功能类似grep但更简单——指定目录和关键词递归搜索所有文件显示匹配的行号和内容。听起来简单但会用到Rust的核心特性错误处理、所有权、生命周期、标准库文件操作。开始写代码第一步创建项目cargonew mygrepcdmygrepcargo new会生成这样的目录结构mygrep/ ├── Cargo.toml # 依赖管理 └── src/ └── main.rs # 入口文件第二步解析命令行参数我们先让程序能接收两个参数搜索目录和关键词。usestd::env;usestd::process;fnmain(){letargs:VecStringenv::args().collect();ifargs.len()3{eprintln!(用法: {} 目录 关键词,args[0]);process::exit(1);}letdirargs[1];letkeywordargs[2];println!(在 {} 中搜索: {},dir,keyword);}这里有个小设计用eprintln!而不是println!输出错误信息。这样就算管道重定向标准输出错误信息也能在终端看到。第三步遍历目录Rust的标准库提供了WalkDir吗没有。但有个第三方库walkdir干这个事。在Cargo.toml里加上[dependencies] walkdir 2.5然后写递归搜索逻辑usewalkdir::WalkDir;usestd::fs;usestd::io::{self,BufRead};fnsearch_file(path:std::path::Path,keyword:str)-io::ResultVec(usize,String){letfilefs::File::open(path)?;letreaderio::BufReader::new(file);letmutmatchesVec::new();for(i,line)inreader.lines().enumerate(){letlineline?;ifline.contains(keyword){matches.push((i1,line));}}Ok(matches)}注意这里的?操作符——Rust的传播错误方式。遇到无法读取的文件直接返回错误不会panic崩溃。第四步主循环fnmain(){letargs:VecStringenv::args().collect();ifargs.len()3{eprintln!(用法: {} 目录 关键词,args[0]);process::exit(1);}letdirargs[1];letkeywordargs[2];forentryinWalkDir::new(dir){letentrymatchentry{Ok(e)e,Err(_)continue,// 权限不足的目录直接跳过};ifentry.file_type().is_file(){letpathentry.path();matchsearch_file(path,keyword){Ok(matches){if!matches.is_empty(){println!( {}:,path.display());for(line_no,line)inmatches{println!( {}: {},line_no,line.trim());}println!();}}Err(_){eprintln!(⚠️ 无法读取: {},path.display());}}}}}第五步运行看看在项目目录下创建一个测试文件echoHello Rusttest.txtechoRust is awesometest.txtcargorun.Rust输出 ./test.txt: 1: Hello Rust 2: Rust is awesome成了虽然功能简单但已经覆盖了Rust最核心的几个概念。踩坑记录1. 生命周期第一个坑刚开始我把keyword传进search_file的时候返回值里的引用怎么都搞不定。后来发现直接传str就完事了——别想复杂了。2. BufReader 比直接 read 快得多测了一个 200MB 的日志文件用fs::read_to_string直接内存爆了。换成BufReader 逐行读取内存占用从 200MB 降到 4KB。这个教训挺深刻的。3. 编码问题Windows 下中文文件默认是 GBK 编码Rust 的String是 UTF-8。遇到非 UTF-8 文件lines()会返回错误。加个编码检测可以解决正文篇幅有限放到下期讲。总结这一篇我们从零搭建了一个能用的命令行搜索工具涉及了环境搭建和项目创建命令行参数解析递归目录遍历文件读取和行匹配错误处理?操作符、模式匹配Rust 的 TIOBE 排名进前十不是偶然——它的内存安全特性和性能优势正在被越来越多的企业认可。微软、谷歌、亚马逊都在往 Rust 迁移核心基础设施。现在上车不晚。完整代码在 GitHub需要的自取。有什么问题欢迎留言讨论
F3D:重新定义专业3D可视化的开源解决方案 【免费下载链接】f3d Fast and minimalist 3D viewer. 项目地址: https://gitcode.com/GitHub_Trending/f3/f3d
在当今数字化设计浪潮中,3D可视化已成为设计师、工程师和科研人员不可或缺的工具。然而&am…
📅 2026/7/10 21:35:47
OpenMetadata:为AI和人类构建可信数据上下文的语义平台 【免费下载链接】OpenMetadata The Open Context Layer for Data and AI , OpenMetadata is the open platform for building trusted data context and business semantics for humans, AI assistants, and a…
📅 2026/7/10 21:35:47
Tambo AI完全指南:构建智能生成式UI的React开发神器 【免费下载链接】hydra-ai Generative UI SDK for React 项目地址: https://gitcode.com/GitHub_Trending/hy/hydra-ai
Tambo AI(原名Hydra-ai)是一款革命性的开源生成式UI工具包&a…
📅 2026/7/10 21:34:46
1. 项目背景与核心需求 两节串联锂离子电池的电压平衡问题在实际应用中非常普遍。当电池组中的单体电池存在容量、内阻等参数差异时,充电过程中容易出现某节电池过充而另一节未充满的情况。这不仅影响电池组整体性能,更可能引发安全隐患。 传统被动均衡…
📅 2026/7/10 22:46:08
该方案主要适用于面临转型挑战的大型贸易集团企业,尤其是在系统建设、业务管理、风险防控等方面存在问题的企业。主要内容为:针对中国对外贸易行业及企业面临的诸多挑战,提出以 “管理信息化” 助推企业转型。通过构建统一指标和数据体系,明确系统架构,选用适配软件,运用…
📅 2026/7/10 22:46:08
核心要点
区域创新资源精准配置需借助数智工具实现资源可视化、智能匹配与闭环管理,打破传统模式痛点。科研成果转化痛点主要源于信息不对称、转化周期长、匹配效率低,数智化可提升5倍以上匹配效率。数智化产品核心价值在于资源可视化、匹配智能化和转化…
📅 2026/7/10 22:46:08
5分钟上手Ratchet:从安装到运行第一个WebGPU ML模型 🚀 【免费下载链接】ratchet A cross-platform browser ML framework. 项目地址: https://gitcode.com/gh_mirrors/ratche/ratchet
Ratchet是一个革命性的跨平台浏览器机器学习框架,…
📅 2026/7/10 22:46:08
2026 年的香港,加密货币支付和场外(OTC)交易业务正处在一套日趋清晰的双重监管框架之下。不少创始人此前误以为存在单一的"加密货币牌照",但事实并非如此——香港的监管路径,走的是两条平行的轨道。
业务涉…
📅 2026/7/10 22:46:08
方案 1:对应软件内关闭「资源管理器挂载」(推荐,干净无残留)1. 百度网盘双击打开百度网盘 PC 客户端;右上角设置 → 设置 → 通用;取消勾选:在我的电脑显示百度网盘盘符 / 资源管理器侧边图标&a…
📅 2026/7/10 22:45:08
一、为什么接口自动化测试,适合用AI赋能?
大家可自行先思考一个问题:
AI赋能测试全流程,为什么优先推荐从接口自动化切入?
有三个典型原因:
接口输入结构化,AI最擅长"吃"
接口有OpenA…
📅 2026/7/10 0:00:53
终极原神FPS解锁器完整指南:轻松突破60帧限制 【免费下载链接】genshin-fps-unlock unlocks the 60 fps cap 项目地址: https://gitcode.com/gh_mirrors/ge/genshin-fps-unlock
原神FPS解锁器是一款专为《原神》玩家设计的开源工具,通过先进的Wri…
📅 2026/7/10 0:00:53
YesPlayMusic:如何用高颜值播放器重塑你的网易云音乐体验?🎵 【免费下载链接】YesPlayMusic 高颜值的第三方网易云播放器,支持 Windows / macOS / Linux :electron: 项目地址: https://gitcode.com/gh_mirrors/ye/YesPlayMusic…
📅 2026/7/10 0:00:53
1. 项目背景与核心需求 在嵌入式系统开发中,快速精确的数据检索是一个常见但极具挑战性的需求。特别是在工业控制、医疗设备和物联网终端等场景下,系统往往需要在毫秒级时间内完成关键参数的读取和写入操作。传统基于Flash存储的方案存在擦写次数有限、操…
📅 2026/7/9 15:10:35
1. 工业电流环信号传输的基础认知在工业自动化领域,4-20mA电流环传输技术已经持续服役超过半个世纪。这种看似简单的信号传输方式之所以能经久不衰,核心在于其独特的抗干扰能力——电流信号在长距离传输时几乎不受线路电阻和电压波动的影响。我曾在化工厂…
📅 2026/7/9 14:14:01
最近在项目里尝试用 YOLO 做目标检测,从环境搭建到模型训练,再到推理部署,整个过程踩了不少坑。网上的资料虽然多,但要么版本老旧,要么步骤零散不成体系,对于刚入门的新手来说,很容易卡在某个环…
📅 2026/7/9 15:10:36
目录
第一步:选对模板,省心一半
第二步:打开扫码点餐功能
开启功能按钮
桌台管理与桌码生成
第三步:个性化设计,打造品牌感
调整点餐页面
设置点餐规则 你还在让顾客站着排队点餐吗?2025年ÿ…
📅 2026/7/9 15:10:36
在业务中快速构建一个能理解私有文档、准确回答专业问题的智能助手,是很多开发团队面临的共同挑战。传统方案往往需要从零开始搭建复杂的 RAG(检索增强生成)系统,涉及文档解析、向量化、检索、大模型调用等多个环节,整…
📅 2026/7/9 15:10:36
FAE放射组学分析工具:医学影像特征探索的完整解决方案 【免费下载链接】FAE FeAture Explorer 项目地址: https://gitcode.com/gh_mirrors/fae/FAE
你是否曾经面对海量医学影像数据感到无从下手?想要从CT、MRI等影像中提取有价值的定量特征&#…
📅 2026/7/9 15:10:36