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

Rust 读写csv文件

在Rust中,可以使用csv等库来高性能读写CSV文件。

首先,需要在Cargo.toml文件中添加依赖项:

[dependencies]
csv = "1.1"

分别定义读写CSV文件函数:

  • csv_file.rs
use csv::ReaderBuilder;
use csv::WriterBuilder;
use std::fs::File;pub fn read_csv_file(path: &str) -> Result<(), csv::Error> {let file = File::open(path)?;let mut reader = ReaderBuilder::new().from_reader(file);for result in reader.records() {let record = result?;// 处理每一行的数据println!("{:?}", record);}Ok(())
}pub fn write_csv_file(path: &str, headers: Vec<String>, records: Vec<Vec<String>>) -> Result<(), csv::Error> {let file = File::create(path)?;let mut writer = WriterBuilder::new().from_writer(file);writer.write_record(headers)?;for record in records {writer.write_record(record)?;writer.flush()?;}Ok(())
}

写入数据,再读取数据示例:

  • main.rs
mod utils;
mod macros;fn main() {// 保存的文件路径和文件名let path = "D://file.csv";// 写入CSV文件头let headers = vec_s!["number", "Name", "Age", "City"];let mut records = vec![];// 写入CSV文件内容for i in 0..10 {records.push(vec_s![i, "Alice", "30", "New York"]);records.push(vec_s![i, "Bob", "25", "San Francisco"]);records.push(vec_s![i, "Charlie", "22", "Los Angeles"]);}utils::csv_file::write_csv_file(path, headers, records).expect("Failed to write CSV file");utils::csv_file::read_csv_file(path).expect("Failed to read CSV file");
}

vec_s!是一个保存字符串类型的宏,该文章进行了详细讲解:Rust 宏

相关文章:

  • 【MySQL】事务?隔离级别?锁?详解MySQL并发控制机制
  • 配电房轨道式巡检机器人方案
  • 3.6作业
  • Redis基础入门
  • 【动态规划】45. 跳跃游戏 II
  • 数字创新的风口:创业者如何在Web3时代抢占先机
  • MySQL——事务
  • 铅酸蓄电池废水处理技术盘点
  • 重磅:2024广州国际酒店工程照明展览会
  • 鸿蒙 进程模型-公共事件
  • 设计模式——2_3 迭代器(Iterator)
  • 【JavaEE】_前端POST请求使用json向后端传参
  • 飞天使-学以致用-devops知识点3-安装jenkins
  • 中文版国产Figma简单好上手
  • 学术论文GPT的源码解读与二次开发:从ChatPaper到gpt_academic
  • SegmentFault for Android 3.0 发布
  • 【跃迁之路】【699天】程序员高效学习方法论探索系列(实验阶段456-2019.1.19)...
  • 2017前端实习生面试总结
  • canvas 绘制双线技巧
  • 百度地图API标注+时间轴组件
  • 半理解系列--Promise的进化史
  • 互联网大裁员:Java程序员失工作,焉知不能进ali?
  • 一些css基础学习笔记
  • # 日期待t_最值得等的SUV奥迪Q9:空间比MPV还大,或搭4.0T,香
  • (1)(1.13) SiK无线电高级配置(六)
  • (PWM呼吸灯)合泰开发板HT66F2390-----点灯大师
  • (三)c52学习之旅-点亮LED灯
  • (生成器)yield与(迭代器)generator
  • (一)使用IDEA创建Maven项目和Maven使用入门(配图详解)
  • .NET Conf 2023 回顾 – 庆祝社区、创新和 .NET 8 的发布
  • .NET Core 2.1路线图
  • .net core 6 使用注解自动注入实例,无需构造注入 autowrite4net
  • .net 打包工具_pyinstaller打包的exe太大?你需要站在巨人的肩膀上-VC++才是王道
  • .net 开发怎么实现前后端分离_前后端分离:分离式开发和一体式发布
  • .NET 使用 JustAssembly 比较两个不同版本程序集的 API 变化
  • .NET 自定义中间件 判断是否存在 AllowAnonymousAttribute 特性 来判断是否需要身份验证
  • .NET中两种OCR方式对比
  • @RunWith注解作用
  • [ web基础篇 ] Burp Suite 爆破 Basic 认证密码
  • []error LNK2001: unresolved external symbol _m
  • []我的函数库
  • [2544]最短路 (两种算法)(HDU)
  • [ai笔记4] 将AI工具场景化,应用于生活和工作
  • [AS3]URLLoader+URLRequest+JPGEncoder实现BitmapData图片数据保存
  • [Asp.net MVC]Asp.net MVC5系列——Razor语法
  • [AutoSar]状态管理(五)Dcm与BswM、EcuM的复位实现
  • [BZOJ4337][BJOI2015]树的同构(树的最小表示法)
  • [CLickhouse] 学习小计
  • [Django 0-1] Core.Handlers 模块
  • [hdu 2826] The troubles of lmy [简单计算几何 - 相似]
  • [hive]中的字段的数据类型有哪些
  • [HTML]Web前端开发技术18(HTML5、CSS3、JavaScript )HTML5 基础与CSS3 应用——喵喵画网页
  • [JavaWeb学习] idea新建web项目
  • [Java基础]—JDBC
  • [JDBC-1] JDBC Base Template