Rust 的好东西:内部可变性

Description
内部可变性是 Rust 里的一个很重要的特性,这个视频来聊聊它是什么以及该怎么用。

里面关于 unsafe 的内容也可以看看我之前的视频:https://www.bilibili.com/video/BV1jw3gekENK

Comments

家勋L 2024-07-02

rust 是我想学好又没学好的语言~

♥ 15 ↩ 1

no-code 2025-08-03

所以RefCell其实就是取悦编译器,让编译器在代码检查上不要为难我们。“我知道我写的代码没问题!是编译器你太笨没看懂。”然而如果在运行时还是对相同对象出现了“在同时拥有可变、不可变引用的条件下,试图通过可变引用修改对象”的情况,还是会panic。也就是视频中up所说的“把编译时的借用检查推迟到运行时”。

♥ 11

bili_4256288 2024-07-01

当你胡乱使用内部可变性时: panic:你好[doge]

♥ 9

main00 2024-07-12

字体可以调大一点吗[笑哭],看着有点累

♥ 4

Gavin-Zheng 2024-07-11

在学 rust[脱单doge][脱单doge]

♥ 3

CatEyeNebula 2024-07-05

好好好,前几天刚看这个,支持UP的优质视频

♥ 2

dream4work 2026-06-12

内部可变性,对于python、go、java等语言的人来说是极其难理解的概念。 直到用Rust写一个带有运行状态的类型后,才能感觉到Rust的约束与其它语言天差地别。 其它语言构造的“对象”,是可以把public方法交给其它对象调用,这是很自然的行为。 在Rust里,是不能的:改变了数据内部的状态 但是,这种代码又是很日常的,不能禁止这种代码表达能力。 这时候,内部可变性就出现了,理解到需求才能理解这个概念本身。 RefCell原理是unsafe,让类型自己记录“借用”的情况,出现不满足规则的申请动作就直接panic,也就是平时说的“推迟到运行时”。RefCell在单线程中用,业务代码要保证`borrow_mut()` 借用用完立即释放。在多线程下,用 `Mutex`/`RwLock` 配合 `RefCell<T>`,实现`borrow_mut()` 借用用完立即释放。

♥ 1 ↩ 1

bigJianHua 2024-07-05

随便刷到的,不知不觉看完了,说的真好,up加油

♥ 1

SCU_永恒 2026-07-04

758522192 欢迎加群一起学习rust(备注加edt) rust嵌入式专用群:947963288(备注哪个视频找到的:vid)

随便看看再说废话 2026-05-11

fn main() { let x: i32 = 111; #【allow(unused_mut)】 let mut p: *mut i32 = &x as *const i32 as *mut i32; unsafe { *p = 222; println!("{}", x); } }

↩ 1

痒气菌 2025-03-30

这个cell真的并发安全吗

Rustfmt 2025-01-19

所以内部可变性就是Cell和RefCell

↩ 1

杰克鱼饼 2024-10-20

Rust+Zed+正确单词发音,靠谱。

↩ 1

wiyshs 2024-10-15

字体再调大写,现在太小了

薄荷水星cc 2024-10-01

求更新!

远野漢娜 2024-08-01

学到了[打call]

世尘微渺 2024-07-25

大师?

旧塩港電気工業製造社 2024-07-23

请问字体是?

nekomeowneko 2024-07-20

zed好用吗,和jetb的比呢,感觉jet的检查错误好慢

↩ 1

40Bit 2024-07-18

有点绕,const pointer 与 pointer to const的区别?