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图像处理第11节-故障风 RGB 通道偏移:错位错色制造电子故障
rust·webassembly·图形学
花褪残红青杏小4 小时前
Rust图像处理第10节-浮雕/雕刻滤镜:邻域差值生成凹凸效果
rust·webassembly·图形学
Rockbean5 小时前
10分钟Solana-性能web3-2.4 Rust 编程基础三:结构体、枚举、错误处理与集合
rust·web3·智能合约
doiito6 小时前
【Agent Harness】Gliding Horse 上下文感知与智能压缩:让 Agent 的“注意力”永不偏移
ai·rust·架构设计·系统设计·ai agent
花褪残红青杏小1 天前
Rust图像处理第9节-Sobel 边缘检测:第一个真正用卷积的算法
rust·webassembly·图形学
doiito1 天前
【Agent Harness】Gliding Horse L2 作战地图深度优化:给多 Agent 上下文装上“精准导航”
ai·rust·架构设计·系统设计·ai agent
花褪残红青杏小2 天前
Rust图像处理第8节-暗角 & 复古胶片特效:四周衰减中心高亮
rust·webassembly·图形学
独孤留白2 天前
从C到Rust:Rust 的 Trait 不是Interface,那是什么?
rust