摘要:
练习编码 实现一个简单的grep工具。 建立项目: > cargo new minigrep Created binary (application) `minigrep` package 接收命令行参数 use std::env; fn main() { // args返回一迭代器,collect 阅读全文
摘要:
编写自动化测试 编写和运行测试 一个测试就是一个函数,用于验证非测试代码的功能是否和预期一致。 测试函数体通常执行3个操作(3A): Arrange:准备数据/状态 Act:运行被测代码 Assert:断言结果 测试函数: 测试函数需要使用test属性(attribute)进行标注,Attribut 阅读全文
摘要:
生命周期 生命周期应是rust语言最与众不同的概念。 rust的每个引用都有自己的生命周期。 生命周期:引用保持有效的作用域。 大多数情况:生命周期是隐式的、可被推断的。 当引用的生命周期可能以不同的方式相互关联时,需要手动标注生命周期。 生命周期存在的目的:避免悬垂引用(dangling refe 阅读全文
摘要:
Trait Trait告诉Rust编译器某些类型具有哪些并可与其它类型共享的功能。 Trait:抽象的定义共享行为。 Trait bounds(约束):泛型类型参数指定为实现了特定行为的类型。 Trait与其它语言的接口(interface)类似,但有些区别。 定义一个Trait Trait的定义: 阅读全文
摘要:
提取函数消除重复代码 fn get_largest(list: &[i32]) -> i32 { let mut max_num = list[0]; for &i in list { if i > max_num { max_num = i; } } max_num } fn main() { l 阅读全文
摘要:
错误处理 不可恢复的错误与panic!宏 rust语言的错误处理: rust语言具有较高的可靠性,有完备的错误处理机制,大部分情况下,能在编译是提示错误,并处理完错误。 rust没有类似异常处理的机制 错误的分类: 可恢复错误:使用Result<T, E>机制,如文件未找到,可再次尝试。 不可恢复: 阅读全文
摘要:
HashMap<K, V> 键值对的形式存储数据,一个键(key)对应一个值(value)。适用于通过K(任何类型)来搜索数据,而不是通过下标索引的场景。 Hash函数:决定如何在内存中存放K和V。 创建HashMap new函数创建 创建空HashMap:new()函数。 添加数据:insert( 阅读全文
摘要:
rust的字符串 字符串简介 字符串:UTF-8格式,byte的集合,提供了一些解析byte为文本的方法。 rust的核心语言层面,只有一个字符串类型:字符串切片str(或&str)。 字符串切片:对存储在其他地方、UTF-8编码的字符串的引用 其中字符串字面值,存储在二进制文件中,也是字符串切片。 阅读全文
摘要:
常用集合——vector 集合的数据存放在堆里,无需在编译时确定大小。 使用vector vector可存放多个值,Vec<T>叫做vector。 由标准库提供 可存储多个值 只能存储相同类型的数据 值在内存中连续存放 1)创建vector: 使用Vec::new函数 let v: Vec<i32> 阅读全文
摘要:
use关键字 可用use关键字将 路径导入到作用域内,导入的内容仍然遵循私有性原则。可使用相对路径和绝对路径的方式。 mod modu1 { pub mod modu2 { pub fn test_func1() {} fn test_private() {} } } use crate::modu 阅读全文