读取文件哈。

但分成了lib.rs和main.rs。

按文档上不行,自己胡乱的调通,但原理不熟悉。

里面的套路代码还是蛮多的。

src/lib.rs

use std::io::Read;
use std::error::Error;

pub struct Config {
    pub query: String,
    pub filename: String,
}

impl Config {
    pub fn new(args: &[String]) -> Result<Config, &'static str> {
     {
        return Err("not enough arguments.");
    }
        let query = args[].clone();
        let filename = args[].clone();

        Ok(Config { query, filename })
    }
}

pub fn run(config: Config) -> Result<(), Box<Error>> {
    let mut file = std::fs::File::open(config.filename)?;
    let mut contents = String::new();
    file.read_to_string(&mut contents)?;

    println!("With text:\n{}", contents);

    Ok(())

}

src/main.rs

use std::env;
use std::process;

extern crate minigrep;

fn main() {
    let args: Vec<String> = env::args().collect();
    let config = minigrep::Config::new(&args).unwrap_or_else(|err| {
    println!("Problem parsing arguments: {}", err);
    process::exit();
    });

    println!("Search for {}", config.query);
    println!("In file {}", config.filename);

    if let Err(e) = minigrep::run(config) {
    println!("Application error: {}", e);
    process::exit();
    };
}

Rust第一次综合练习的更多相关文章

  1. Rust第一次---centos 7下的安装,配置,测试

    现在安装都依赖于网络,命令比较简单. 一,运行脚本,安装runstup 1,运行如下脚本: curl https://sh.rustup.rs -sSf | sh 2,输入默认项1,完成余下的安装 二 ...

  2. 基于CameraLink的逻辑综合和版图设计

    前期接口设计用的是Vivado18.3+Modelsim10.6,逻辑综合及版图生成的环境是Ubuntu16,逻辑综合用的工具Design Compiler,生成版图用的工具是Encounter. 下 ...

  3. Rust第二次综合练习

    啊,啊,啊 原来我一直用的linux rust1.1的老版本, 很多书上的写法都不行,得调试. 今天早上,换成了win rust1.3版本, 于是,可以按书上标准的语法来弄了. 一,main.rs u ...

  4. 腾讯2020校园招聘-后台&综合-第一次笔试 题解

    对数据结构和算法感兴趣的可以关注一下https://github.com/MCQ1999/Datastructure_Algorithm_Solutions,分享算法题的解题思路和代码~ 1.压缩算法 ...

  5. 记第一次正式线上笔试(Tencent——正式考-技术研发类-综合-2018实习生招聘)

    选择题做的跟傻逼一样,不多说了..大学只打了ACM还不是计算机科班出身的我,连好多名词都不认识..... 三道编程题很简单,下面给出三道题的大致题意以及题解. 1.给出n和m,满足(2m)可以整除n. ...

  6. 牛客腾讯2020校园招聘-后台&综合-第一次笔试

    第一题 Q: 小Q想要给他的朋友发送一个神秘字符串,但是他发现字符串的过于长了,于是小Q发明了一种压缩算法对字符串中重复的部分进行了压缩,对于字符串中连续的m个相同字符串S将会压缩为m|S,例如字符串 ...

  7. IP第一次实验:静态综合

  8. Rust到底值不值得学--Rust对比、特色和理念

    前言 其实我一直弄不明白一点,那就是计算机技术的发展,是让这个世界变得简单了,还是变得更复杂了. 当然这只是一个玩笑,可别把这个问题当真. 然而对于IT从业者来说,这可不是一个玩笑.几乎每一次的技术发 ...

  9. Android 综合揭秘 —— 全面剖释 Service 服务

    引言 Service 服务是 Android 系统最常用的四大部件之一,Android 支持 Service 服务的原因主要目的有两个,一是简化后台任务的实现,二是实现在同一台设备当中跨进程的远程信息 ...

随机推荐

  1. win10python安装iis

    django部署iis https://www.cnblogs.com/guangang/articles/9268644.html python部署iis https://www.cnblogs.c ...

  2. c# 第27节 结构、枚举

    本节内容: 1:为什么要有结构 2:结构体的声明和使用 3:为什么要有枚举.常识大考验 4:枚举的声明 5:枚举的使用 6:枚举的各种转换 1:为什么要有结构 2:结构体的声明和使用 结构的声明位置: ...

  3. 一,java框架学习

    一,java框架学习 Hibernate概述Hibernate是一个开放源代码的ORM(对象关系映射)框架,对jdbc进行了轻量级的封装,是的java开发人员可以使用面向对象编程思想操作数据库,简化操 ...

  4. python 生成sql语句

    1. 别名 s = '' name = ['张三', '李四', '王五'] for i in range(len(name)): s += "'" + name[i] + &qu ...

  5. 让人又爱又恨的this

    this是个神奇的东西, 既可以帮助我们把模拟的类实例化. 又可以在事件绑定里准确指向触发元素. 还可以帮助我们在对象方法中操作对象的其他属性或方法. 甚至可以在使用apply.call.bing.f ...

  6. BootStrap、jQuery UI、bxSlider组件使用

    组件的使用 首先需要将组件下载下来放在统同级目录下 导入组件 使用组件 BootStrap 示例: <!DOCTYPE html> <html lang="en" ...

  7. antd模块组件文档思维导图整理

  8. LeetCode 2:两数相加 Add Two Numbers

    ​给出两个 非空 的链表用来表示两个非负的整数.其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字.如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和 ...

  9. Shell基本运算符之算术、关系运算符

    Shell 运算符 =============================摘自菜鸟教程================================= Shell和其他编程语言一样,支持多种运算 ...

  10. sudo: ulimit: command not found

    在这看到的:http://stackoverflow.com/questions/17483723/command-not-found-when-using-sudo-ulimit 修改系统文件打开数 ...