首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
Rust第一课学习-笔记
unravel2025
创建于2022-09-07
订阅专栏
学习陈天老师的Rust第一课笔记
等 19 人订阅
共29篇文章
创建于2022-09-07
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
25|类型系统:如何围绕trait来设计和架构系统?
前言 软件开发的整个行为,基本上可以说是不断创建和迭代接口,然后在这些接口上进行实现的过程 正式开始 用 trait 让代码自然舒服好用 在设计 trait 的时候,除了关注功能,还要注意是否好用、易
24|类型系统:如何在实战中使用trait object?
正式开始 trait object 回顾 当我们在运行时想让某个具体类型,只表现出某个 trait 的行为,可以通过将其赋值给一个 dyn T,无论是 &dyn T,还是 Box<dyn T>,还是
23|类型系统:如何在实战中使用泛型编程?
正式开始 在《架构整洁之道》里 Uncle Bob 说:架构师的工作不是作出决策,而是尽可能久地推迟决策,在现在不作出重大决策的情况下构建程序,以便以后有足够信息时再作出决策 以BufReader讲解
加餐|期中测试:来写一个简单的grep命令行
正式开始 本节需要做一个类似grep的工具 rgrep grep 命令用于查找文件里符合条件的字符串。如果发现某个文件的内容符合所指定的字符串,grep 命令会把含有字符串的那一行显示出; 若不指定任
22|阶段实操(2):构建一个简单的KV server-基本流程
正式开始 实现并验证协议层 先创建一个项目:cargo new kv --lib 在Cargo.toml中添加依赖 在根目录下定义abi.proto 在根目录下创建build.rs,对构建过程进行自定
21|阶段实操(1):构建一个简单的KV server-基本流程
正式开始 架构和设计 怎么算是好的设计? 从系统的主流程开始,搞清楚从客户端的请求到最终客户端收到响应,都会经过哪些主要的步骤 根据这些步骤,思考哪些东西需要延迟绑定,构建主要的接口和 trait 等
20|4 Steps :如何更好地阅读Rust源码?
正式开始 为什么要阅读源码? 没有足够积累,很容易养成 StackOverflow driven 的写代码习惯 平时基础不牢靠,靠边写边学的进步是最慢的 周围能触达的那个最强工程师开发水平的上限,就是
19|闭包:FnOnce、FnMut和Fn,为什么有这么多类型?
正式开始 闭包的作用 作为参数传递给函数; 作为函数返回值; 实现某个 trait,使其能表现出其他行为 闭包的定义 在 Rust 里,闭包可以用 |args| {code} 或者 move |arg
18|错误处理:为什么Rust的错误处理与众不同?
开始学习 错误处理的主流方法 使用返回值(错误码) 使用返回值来表征错误 有个致命的问题:在调用者调用时,错误就必须得到处理或者显式的传播。 使用异常 把异常看成一种关注点分离(Separation
17|数据结构:软件系统核心部件哈希表,内存如何布局?
正式开始 Rust 的哈希表 哈希表最核心的特点就是:巨量的可能输入和有限的哈希表容量 这就会引发哈希冲突,也就是两个或者多个输入的哈希被映射到了同一个位置,所以我们要能够处理哈希冲突 Rust 哈希
16|数据结构:Vec<T>、&[T]、Box<[T]> ,你真的了解集合容器么?
正式开始 主要的数据结构 集合容器 集合容器就是把一系列拥有相同类型的数据放在一起,统一处理. 比如字符串 String、数组 [T; n]、列表 Vec 和哈希表 HashMap、切片slice、循
15|数据结构:这些浓眉大眼的结构竟然都是智能指针?
正式开始 指针和引用 指针是一个持有内存地址的值,可以通过解引用来访问它指向的内存地址,理论上可以解引用到任意数据类型; 引用是一个特殊的指针,它的解引用访问是受限的,只能解引用到它引用数据的类型,不
14|类型系统:有哪些必须掌握的trait?
正式开始 已经学过的trait Clone / Copy trait,约定了数据被深拷贝和浅拷贝的行为; Read / Write trait,约定了对 I/O 读写的行为; Iterator,约定了
13|类型系统:如何使用trait来定义接口?
正式开始 类型系统的本质:对类型进行定义、检查和处理的工具,保证了某个操作处理的数据类型是我们所希望的 特设多态:包括运算符重载,是指同一种行为有很多不同的实现; 子类型多态:把子类型当成父类型使用,
12|类型系统:Rust的类型系统有什么特点?
正式开始 在机器码的世界中,指令仅仅和立即数或者内存打交道,内存中存放的数据都是字节流 类型系统完全是一种工具 类型系统基本概念与分类 类型:是对值的区分,它包含了值在内存中的长度、对齐以及值可以进行
加餐|愚昧之巅:你的Rust学习常见问题汇总
正式开始 所有权问题 Q:想要创建双向链表,该怎么处理? 标准库中LinkedList,它是一个双向链表的实现 一个链表实现参考 Weak 相当于一个弱化版本的 Rc,不参与到引用计数的计算中,而 W
11|内存管理:从创建到消亡,值都经历了什么?
正式开始 Rust内存管理 大部分堆内存的需求在于动态大小,小部分需求是更长的生命周期 Rust默认将堆内存的生命周期和使用它的栈内存的生命周期绑在一起,并留了个小口子 leaked 机制,让堆内存在
10|生命周期:你创建的值究竟能活多久?
正式开始 在 Rust 中,除非显式地做 Box::leak() / Box::into_raw() / ManualDrop 等动作,一般来说,堆内存的生命周期,会默认和其栈内存的生命周期绑定在一起
09|所有权:一个值可以有多个所有者么?
正式开始 运行时动态检查 使用引用计数的智能指针:Rc(Reference counter) 和 Arc(Atomic reference counter) RC 对某个数据结构 T,创建引用计数 R
08|所有权:值的借用是如何工作的?
正式开始 上一小节回顾 当我们进行变量赋值、传参和函数返回时,如果涉及的数据结构没有实现 Copy trait,就会默认使用 Move 语义转移值的所有权,失去所有权的变量将无法继续访问原来的数据;
下一页