---
title: Rust 借用检查的内化过程
date: '2022-07-25 18:48:21'
draft: false
summary: 很多人学 Rust 时的对抗感，来自借用规则还没内化；一旦理解到位，编译器就会从阻力变成助手。
slug: rust-borrow-checker-can-be-tamed
syndication:
- platform: Weibo
  url: https://weibo.com/1648815335/LDWlXzFv6
tags:
- rust
- borrow-checker
- move
- learning
topics:
- software-engineering
type: post
---

Rust 新手有很长一段时间都会觉得自己是在和编译器搏斗，仿佛编译器就是专门来和你作对的。

这种感觉其实很正常。问题通常不在语法，而在借用检查。只要借用检查的规则还没有真正内化，写代码时就会一直有一种“我明明知道自己想干什么，但编译器就是不让我过”的挫败感。

但一旦你开始理解借用检查的脾气，这种关系会反过来。编译器不再只是拦路，而会逐渐变成一种助手，帮助你把本来很容易在运行期出问题的状态关系，在编译期就收紧。

我后来会觉得，理解 `Move` 的借用检查机制，其实是个很好的过渡路径。因为它比 `Rust` 的实现更简单，更容易帮助人把核心概念想清楚。等这层理解建立起来，再回头看 `Rust`，很多原来看起来像是在“故意刁难”的地方，就会突然顺很多。

<!-- WEIBO_MEDIA_START -->
## 原微博中的媒体

![](./weibo-4795191058501012-1.jpg)
<!-- WEIBO_MEDIA_END -->
