常用组合
基础框架:
┌──────┐
│ │
└──────┘
指针:
●───>
●──>
连接:
─────
│
├──
└──
箭头:
───>
──→
⟶
➜
对勾/叉:
✅
❌
箭头
// 实线
┌──────────┐ ┌──────────┐
│ 数据A │──────────>│ 数据B │
└──────────┘ └──────────┘
┌──────────┐
│ 源数据 │
│ ptr: ●──┼─────────> 堆内存
│ len: 5 │
└──────────┘
// 虚线
┌──────────┐ ┌──────────┐
│ 数据A │ ─ ─ ─ ─ >│ 数据B │
└──────────┘ └──────────┘
┌──────────┐
│ 引用 │
│ ptr: ● │ ┈┈┈┈┈┈┈> 指向的数据
└──────────┘
// 分支
┌──────────┐ ┌──────────┐
│ r1: &x │─────┐ │ │
└──────────┘ │ │ x: 42 │
├───>│ │
┌──────────┐ │ └──────────┘
│ r2: &x │─────┤
└──────────┘ │
│
┌──────────┐ │
│ r3: &x │─────┘
└──────────┘
┌──────────┐
┌───>│ 堆数据1 │
│ └──────────┘
┌──────────┐│
│ String ││ ┌──────────┐
│ ptr: ●──┼┴───>│ 堆数据2 │
│ cap: 10 │ └──────────┘
│ len: 5 │
└──────────┘
unicode字符表
盒绘字符(Box Drawing)
单线:
─ 水平线
│ 垂直线
┌ 左上角
┐ 右上角
└ 左下角
┘ 右下角
├ 左接口
┤ 右接口
┬ 上接口
┴ 下接口
┼ 十字交叉
双线:
═ 水平双线
║ 垂直双线
╔ 左上角
╗ 右上角
╚ 左下角
╝ 右下角
╠ 左接口
╣ 右接口
╦ 上接口
╩ 下接口
╬ 十字交叉
混合:
╒ ═ + │
╓ ─ + ║
╞ ═ + │
╟ ─ + ║
箭头符号
→ 右箭头
← 左箭头
↑ 上箭头
↓ 下箭头
↔ 双向箭头
⇒ 粗右箭头
⇐ 粗左箭头
⇑ 粗上箭头
⇓ 粗下箭头
⟶ 长右箭头
⟵ 长左箭头
➜ 实心右箭头
➤ 三角右箭头
特殊符号
● 实心圆(指针)
○ 空心圆
◆ 实心菱形
◇ 空心菱形
■ 实心方块
□ 空心方块
▲ 实心三角
△ 空心三角
✓ 对勾
✗ 叉号
… 省略号
┈ 虚线
┉ 粗虚线
模板
1.rust结构体字段布局
struct Ticket {
┌─────────────────┐
│ title: String │ → [ptr][cap][len] → 堆: "标题"
├─────────────────┤
│ desc: String │ → [ptr][cap][len] → 堆: "描述"
├─────────────────┤
│ status: String │ → [ptr][cap][len] → 堆: "To-Do"
└─────────────────┘
72 bytes (栈)
}
2.借用检查器视角
Timeline(时间线):
─────────────────────────────────────>
let x = 42;
│
├─ let r1 = &x; ┌─────────────┐
│ │ r1 有效期 │
│ ├─ let r2 = &x; ├─────────────┤
│ │ │ r2 有效期 │
│ │ println!(r2); ─┘ │
│ │ │
│ println!(r1); ──────────────────┘
│
└─ let m = &mut x; ┌─────────────┐
│ m 有效期 │
m.add(10); ──────┘
3.内存对齐
Memory Layout:
0x0000 ┌────────┬────────┬────────┬────────┐
│ byte │ byte │ byte │ byte │
├────────┴────────┴────────┴────────┤
0x0004 │ u32 (4 bytes) │
├───────────────────────────────────┤
0x0008 │ u64 (8 bytes) │
│ │
└───────────────────────────────────┘
4.函数调用栈
Call Stack:
┌─────────────────────┐
│ main() │
│ ┌───────────────┐ │
│ │ x = 42 │ │
│ └───────────────┘ │
├─────────────────────┤
│ foo(x) │
│ ┌───────────────┐ │
│ │ param = 42 │ │
│ │ result = ... │ │
│ └───────────────┘ │
├─────────────────────┤
│ bar() │
│ ┌───────────────┐ │
│ │ ... │ │
│ └───────────────┘ │
└─────────────────────┘
5.树形结构
root
│
┌─────┼─────┐
│ │ │
●──> ●──> ●──>
node1 node2 node3
│ │
┌──┴──┐ ┌──┴──┐
│ │ │ │
●──> ●──> ●──> ●──>
leaf leaf leaf leaf
6.生命周期
'a: ────────────────────────────────
▲
│ outlives
│
'b: ──────────┴─────────
7.闭包捕获
┌──────────────────┐
│ 外部作用域 │
│ ┌────────────┐ │
│ │ x = 10 │ │
│ └────────────┘ │
│ │ │
│ ▼ │
│ ┌────────────┐ │
│ │ 闭包 │ │
│ │ |_| x+1 │◄─┤ 捕获 x
│ └────────────┘ │
└──────────────────┘