当前位置: 首页 > news >正文

东莞网站设计费用wordpress调用用户数据库

东莞网站设计费用,wordpress调用用户数据库,北京网站优化团队,多合一网站建设往期回顾 Rust 实战一 | 用 RustRover 开发猜数字游戏Rust 安装与版本更新 代码开源地址:https://github.com/0604hx/rust-journey 🥗 准备工作 类别名称版本编程语言Rust1.88.0IDERustRover2025.1 开发目标 grep (缩写来自Globally sear…

封面

往期回顾

  • Rust 实战一 | 用 RustRover 开发猜数字游戏
  • Rust 安装与版本更新

代码开源地址:https://github.com/0604hx/rust-journey


🥗 准备工作

类别名称版本
编程语言Rust1.88.0
IDERustRover2025.1

开发目标

grep (缩写来自Globally search a Regular Expression and Print),Unix/Linux 下鼎鼎大名的文本搜索工具,它能使用特定模式匹配(包括正则表达式)搜索文本,并默认输出匹配行。

我们这一章就山寨下 grep 的功能,基于 rust 实现简易版的文本搜索,基本语法:grep.exe <PATTERN> <PATH>,支持额外项:

  • -c:统计目标词出现次数
  • -n:显示目标词出现的行及对应的行号(默认开启)

使用示例:

# 在 README.md 中检索“集成显卡”
./grep.exe 集成显卡 README.md
# 统计“集成显卡”出现的次数
./grep.exe -c 集成显卡 README.md
# 显示目标词在文件中出现的行及其行号
./grep.exe -n 集成显卡 README.md

工具库

clap

A full featured, fast Command Line Argument Parser for Rust

功能最全面的参数解析库,支持自动生成帮助信息、子命令、验证等。

colored

(Rust) Coloring terminal so simple you already know how to do it !

简单易用的终端颜色库,支持为文本添加颜色、样式(加粗、下划线等)。

use colored::Colorize;fn main() {println!("{}", "错误信息".red().bold());println!("{}", "成功提示".green());
}

indicatif

A command line progress reporting library for Rust

强大的进度条库,支持多种进度指示器(条形、旋转器等)、多任务并行显示。

演示图片


⚒️ 开始实施

执行流程

  1. 程序运行后,解析命令行参数,若参数不合规则报错
  2. 判断待检索文件是否存在,不存在则报错;
  3. 按行读取文件内容,检索关键字,找到则数量+1;
  4. 显示检索结果,程序结束。
程序开始
解析命令行参数
参数是否合法?
判断文件是否存在
输出参数错误信息
程序结束
文件是否存在?
按行读取文件内容
输出文件不存在错误
检索关键字
是否找到关键字?
计数器+1
继续读取下一行
是否文件结束?
显示检索结果

处理命令行参数

关于 clap 的使用,可以参考:clap/examples/tutorial_derive

use clap::Parser;#[derive(Parser)]
#[command(version, about)]
struct GrepArgs{/*short           表示开启标记的短参数:-nlong            默认长参数为 --number,这里配置为 --line_numberdefault_value_t 设置默认值*//// 显示关键词所在行及其行号#[arg(short, long="line_number",default_value_t = false)]number: bool,/// 检索词keyword: String,/// 文件名path: String
}

这样我们就能接受三个参数值,其中<KEYWORD><PATH> 是必填项。编译程序,执行./grep.exe -h,可以看到如下结果:


文件检索

判断文件是否存在

let path = Path::new("abc.txt");
if path.metadata().map_or(false, |meta| meta.is_file()) {// 文件存在后的操作
}

检索关键字

let keyword = "keyword";
// 按行读取文件内容
let file = File::open(path)?;
let reader = BufReader::new(file);
let mut count = 0;for line in reader.lines() {let line = line?;if line.contains(keyword) {//包含检索词}
}

完整代码

use std::fs::File;
use std::io::{BufRead, BufReader};
use std::path::Path;
use std::{io, process};
use std::time::Instant;
use clap::{arg, Parser};
use colored::Colorize;#[derive(Parser)]
#[command(version, about)]
struct GrepArgs{/*short           表示开启标记的短参数:-nlong            默认长参数为 --number,这里配置为 --line_numberdefault_value_t 设置默认值*//// 显示关键词所在行及其行号#[arg(short, long="line_number",default_value_t = false)]number: bool,/// 检索词keyword: String,/// 文件名path: String
}fn main()-> io::Result<()> {let args = GrepArgs::parse();// 判断文件是否存在let path = Path::new(&args.path);if !path.metadata().map_or(false, |meta| meta.is_file()) {println!("⌈{}⌋ 不存在或不是一个文件😔", args.path.red());process::exit(1);}let started = Instant::now();let gray = (128, 128, 128);let file = File::open(path)?;let reader = BufReader::new(file);let mut count = 0;for (index, line) in reader.lines().enumerate() {let line = line?;if line.contains(&args.keyword) {count += 1;// 格式化输出检索到的行(按需添加行号)println!("{}{}",if args.number { format!("{:<5} ", index+1).custom_color(gray).to_string()} else { String::new() },line.replace(&args.keyword, &args.keyword.magenta().to_string()))}}let output = format!("在 {} 找到{}个关键字,耗时{:.2?}", args.path, count, started.elapsed());println!("\n{}", output.custom_color(gray));Ok(())
}

运行结果

打包构建

RustRover 内打包非常简单,选择构建模式release,然后点击构建按钮(快捷键 CTRL+F9),等待一会就完成打包,本次的程序构建后文件大小为710KB

📢 总结

本次我们学习了如何使用 Rust 开发命令行工具,以及文件读取。

如何借助 AI 加速学习

Rust 学习过程中,豆包给了我非常大的帮助,碰到 Rust 莫名其妙(从Java/JavaScript 程序老登的角度看)的语法,问 AI 可以从熟悉的思维方式理解是什么意思👍。

总之一句话,现在的 AI 在这方面很给力,用好 AI 真的能大大提高工作学习的效率!

http://www.dtcms.com/a/468852.html

相关文章:

  • 网站建设都需要哪些东西至道品牌设计公司
  • 在线网页制作网站成都房产网最新楼盘二手房信息
  • 制作网站找哪个公司好钦州市住房和城乡建设局网站
  • 烟台市最好的专业做网站的公司seo服务平台选择
  • 网站在哪里备案wordpress 仿 主题
  • 做网站可以用什么数据库行政事业单位网站建设建议
  • python做项目的网站wordpress循环评论
  • 网站建设公司投诉电话集客营销软件
  • wordpress网站发布文章厚街做网站的公司
  • 爱建站大全网怎么建设网站平台
  • 商务网站建设策划书的格式长沙做黄叶和网站的公司有哪些
  • 西宁建站网站推广销售
  • 个人网站什么好青春网页制作素材
  • 温州论坛网站首页大型网站故障
  • 宁波建网站选哪家好点网站开发的就业前景
  • 织梦做的网站首页排版错误备案期间网站要关闭吗
  • 郑州网站推广公司网站开发 足球球队信息
  • 门户类网站注重什么广州玩的地方有哪些地方
  • 自媒体素材视频网站网站与服务器的关系
  • 做企业网站项目h5混搭php建设网站
  • 中国建设银行官网首页网站网站建设硬件需求
  • 企业门户网站建设现状中国搜索引擎排名
  • 深圳网站做优化哪家公司好wordpress数据库主机
  • 网站网站建设多少钱领券购买网站是怎么做的
  • 万宁市住房和城乡建设厅网站wordpress登陆帐号报错404
  • 用ul做的网站为何浮动不上去查询注册过哪些网站
  • 西红柿怎么做网站上海那家公司做响应式网站建设
  • 专业建设专业网站制作公司广东省农业农村厅彭彬
  • 中山本地网站建设推广企业设计好看的企业网站
  • 企业网站优化的方案linux wordpress 区别