rust表格文件处理

为什么选择 csv 而不是 excel

  • Excel 是一个二进制文件,只能用 Microsoft Excel 文档
  • Excel 导入数据时消耗更多的内存
  • Csv 是纯文本格式
  • 所以您应该转换一下
rust 复制代码
// 需求:拿到title是Professor的人的姓名

const MOCK_DATA: &'static str = include_str!("dept_data.csv");

// 先声明包含vector的工具结构体
struct Names<'a> {
    inner: Vec<&'a str>,
}

struct Titles<'a> {
    inner: Vec<&'a str>,
}

// 创建结构体返回结果
#[derive(Debug)]
struct ProfessorInfo{
    name: String,
    title: String,
}

impl ProfessorInfo {
    // 生成vec的方法
    fn generate_vec(names: Names, titles: Titles) -> Vec<ProfessorInfo>{
        let data = names.inner.iter().zip(titles.inner.iter());
        let mut res_vec: Vec<ProfessorInfo> = Vec::new();
        for (name, title) in data
            .filter(|tuple_item|tuple_item.1.to_string().contains("Professor"))
            .take(3)
        {
            let item = ProfessorInfo {
                name: name.to_string(),
                title: title.to_string(),
            };
            res_vec.push(item);
        }
        res_vec
    }
}


fn main() {
    // 从csv字符串中提取数据
    let data: Vec<_> = MOCK_DATA.split('\n').skip(1).collect();

    let names: Vec<_> = data.iter()
        .filter_map(|line| line.split(',').nth(1))
        .collect();
    let names = Names { inner: names };

    let titles: Vec<_> = data.iter()
        .filter_map(|line| line.split(',').nth(4))
        .collect();
    let titles = Titles { inner: titles };

    let back = ProfessorInfo::generate_vec(names, titles);
    println!("{:?}", back);
}
相关推荐
蚂蚁背大象3 小时前
Rust 所有权系统是为了解决什么问题
后端·rust
布列瑟农的星空4 小时前
前端都能看懂的rust入门教程(五)—— 所有权
rust
Java水解1 天前
Rust嵌入式开发实战——从ARM裸机编程到RTOS应用
后端·rust
Pomelo_刘金1 天前
Rust:所有权系统
rust
Ranger09291 天前
鸿蒙开发新范式:Gpui
rust·harmonyos
DongLi014 天前
rustlings 学习笔记 -- exercises/05_vecs
rust
郑州光合科技余经理5 天前
代码展示:PHP搭建海外版外卖系统源码解析
java·开发语言·前端·后端·系统架构·uni-app·php
feifeigo1235 天前
matlab画图工具
开发语言·matlab
dustcell.5 天前
haproxy七层代理
java·开发语言·前端
norlan_jame5 天前
C-PHY与D-PHY差异
c语言·开发语言