Rust
泛型
泛型定义 我一直把泛型理解为类型系统中的参数,因为在 TS 中,类型和执行代码存在隔离。泛型定义就好像一个类型中的函数,通过传入参数得到具体的类型。同时,能通过泛型约束参数,返回值或结构体字段之间的关系.
Copy
fn get_value<T>(v: T) -> T {
v
}…
模块
package package 是一个或多个 crate 组成的集合. Cargo 项目是一个包.
一个包能包含一个或多个二进制项,但只能包含一个库。这是为啥??要发布的原因吗。要创建其他二进制项,将文件放在 src/bin 目录下即可被编译成独立的二进制文件.
crate
cr…
数据类型
变量 Rust 里的变量分为可变和不可变, 分别可以对标 JS 里的 let 和 const 声明. 我不理解, 明明都叫变量了为啥还分可不可变, 白马非马?
Copy
// 声明不可变变量
let x = 1;
// 声明可变变量
let mut y = 1;
mut 是 m…
所有权
蛋疼, 在工作电脑上写了一半编程概念的笔记忘 push 了. 用着 Obsidian 的 git 插件, 又不喜欢自动备份, 每次写完得记着手动同步. 一刷圣经到后面就意识到所有权是一系列看起来就复杂的设计的源头, 当时都打算刷一半返回来再看几遍所有权了…
控制流
Rust 里的控制流与其他语言没什么差异. if
if 的条件不带 (), 条件必须是 bool 类型.
if 是表达式, JS 三元表达式效果直接达成了:
Copy
let x = if true { 1 } else { 2 }
循环
循环控制的 loop 以前没见过…
结构体
第一遍边抄示例边看文档, 一天能过两大章, 现在写着笔记, 两天不过半章. 😔 可变性
如果想修改某个字段的值, 则结构体实例必须是可变的.
结构体更新语法
结构体更新语法 有点像 JS 里的 Spread 语法, 但只能用旧的实例创建同一结构体实例. 这啥场景用…
集合
Vector 对比[[数据类型#数组]], Vector 更像 JS 里的数组概念, 可以进行增删元素的操作, 但还是只能存相同类型的值.
Copy
let v: Vec<i32> = Vec::new();
let v = vec![1, 2, 3];
let num = v…
前言
首先,关于为什么只有二刷的笔记,是因为我一刷的时候没想起来做笔记这茬. 第一遍没看太明白,当然也没抱一遍就会的期望。开始记笔记的时候,已经把常见编程概念刷过去了,最近学习计划略微有些紧张,前面的以后有机会再补上吧. 不过,也不一定补.
很久没有像现在这样的动力去学,去写一些东西了…