文章分类 - Rust语言学习笔记
摘要:生命周期 Rust 中的每一个引用都有其 生命周期(lifetime) 生命周期就是==引用保持有效的作用域== 大多数情况下: 声明周期是隐式的, 可推断的 当引用的声明周期可能以不同的方式互相关联时, 需要我们手动标注生命周期 声明周期避免了悬垂引用 生命周期的主要作用就是为了避免悬垂引用 示例
阅读全文
摘要:Trait Trait 翻译为 特性 特点 Trait 是抽象的定义共享行为 与其他语言中的接口类似, 但是有些区别 定义 把方法签名放在一起, 用于定义实现某种目的所必须的一组行为 Trait 中只有方法的签名, 没有方法的实现(在没有默认实现的情况下) Trait 中可以有多个方法, 无需实现方
阅读全文
摘要:泛型 提高代码的复用能力 处理代码的重复问题 泛型是具体的数据类型或者其他属性的抽象代替 泛型就相当于数据类型的占位符 编译器在编译的时候就会替换泛型为具体的数据类型, 这个过程被称为单态化(monomorphization) 泛型参数名通常使用一个字母, 大多数情况下使用 T 表示, 因为字母 T
阅读全文
摘要:Rust 中常见的集合 向量(vector) 允许我们一个挨着一个地储存一系列数量可变的值 由标准库提供 可储存多个值 存储的值必须是相同数据类型 值在内存中是连续存放的 创建 vector fn main() { // 使用构造函数创建 let v1: Vec<i32> = Vec::new();
阅读全文
摘要:Rust 模块 单元包 包
阅读全文
摘要:枚举 枚举(enumerations)允许我们列举所有可能的值来定义一个类型 这些可能值被称为枚举的成员(variants) 有时称为变体 定义枚举 enum IpAddrKind { V4, V6, } 枚举值 let four = IpAddrKind::V4; let six = IpAddr
阅读全文
摘要:结构体 认识结构体 结构体(struct) 是一个自定义数据类型 允许你命名和包装多个相关的值, 形成一个有意义的组合 定义结构体 使用struct关键字定义一个结构体 结构体的成员叫做字段(field) 例子 struct User { username: String, password: St
阅读全文
摘要:切片(slice) 切片允许你引用集合中一段连续的元素序列,而不用引用整个集合。 切片没有所有权 习题 编写一个函数,该函数接收一个字符串,并返回在该字符串中找到的第一个单词。如果函数在该字符串中并未找到空格,则整个字符串就是一个单词,所以应该返回整个字符串。 尝试解答 fn main() { le
阅读全文
摘要:引用与借用 前一篇文章中讲到: 传递参数会发生所有权的转移 引用避免了所有权转移带来的问题 先看例子 fn main() { let string = String::from("hello"); let length = len(&string); println!("The length of
阅读全文
摘要:所有权 所有权是 Rust 最为与众不同的特性,它让 Rust 无需垃圾回收(garbage collector)即可保障内存安全。因此,理解 Rust 中所有权如何工作是十分重要的。 什么是所有权 Rust 的核心特性就是所有权 所有程序在运行时都必须管理程序所使用的内存 有些语言采用垃圾回器来保
阅读全文
摘要:控制流 if 表达式 if 表达式允许您根据所提供的条件来执行不同的代码分支 在 if 表达式中, 与条件相关的代码块就做 分支(arm) 可选: 可以在 if 表达式之后跟随 else 表达式 例子 fn main() { let num = 3; // if-else表达式 if num < 5
阅读全文
摘要:函数 函数的定义 在 Rust 中, 我们已经使用过 函数(function) main() 函数是程序的入口点, 它是最重要的函数之一 rust 代码中的函数名使用下 划线命名(snake case) 规范 rust 中的函数定义使用 fn 关键字, 关键字后跟随函数名, 函数名之后跟随一对小括号
阅读全文
摘要:数据类型 在 Rust 中, 每一个值都属于某一个 数据类型(data type) Rust 中存在两类数据类型子集: 标量(scalar) 和 复合(compound) 类型 Rust 是静态类型(statically typed) 语言, 在编译期间就需要确定变量的具体数据类型 标量类型 标量(
阅读全文
摘要:变量与可变性 变量的声明使用let关键字 默认情况下变量是不可以被重新赋值的 举个栗子 fn main() { let x = 5; println!("x={}", x); x = 6; // 如果我们对一个不可变得变量进行再次赋值的操作 编译器会抛出一个异常 // ^^^^^^ cannot a
阅读全文
摘要:使用 Rust 开发一个猜数字小游戏 这个小游戏你会认识到那些知识点? 变量如何声明 程序的流程控制 方法、关联函数 项目依赖 (crate) 猜数字游戏的设计目标 生成一个 1 - 100 的随机数 提示玩家输入一个猜测 对比猜测结果并提示玩家猜测结果 如果猜测正确 让程序输出一个庆祝信息并退出程
阅读全文
摘要:昨天我们安装了Rust, 今天我们来编写HelloWorld 1. Hello World 编写并运行这个简单的程序 在昨天创建的 rust 目录内创建一个projects文件夹用于存放项目文件 在projects文件夹内创建项目文件夹hello_world 在hello_world文件夹内创建文件
阅读全文
摘要:1. 了解 Rust (这有利于你迅速上手) Rust 核心: 虽然不是那么明显, 但 Rust 程序设计语言的本质在于赋能(empowerment) Rust 最核心的概念就是所有权系统: 不需要 GC 垃圾回收器, 不需要 VM 环境, 不需要我们亲自管理内存, 也能提供内存安全 Rust 可以
阅读全文

浙公网安备 33010602011771号