Rust 的好东西:内部可变性
Description
内部可变性是 Rust 里的一个很重要的特性,这个视频来聊聊它是什么以及该怎么用。 里面关于 unsafe 的内容也可以看看我之前的视频:https://www.bilibili.com/video/BV1jw3gekENK
内部可变性是 Rust 里的一个很重要的特性,这个视频来聊聊它是什么以及该怎么用。 里面关于 unsafe 的内容也可以看看我之前的视频:https://www.bilibili.com/video/BV1jw3gekENK
Comments
rust 是我想学好又没学好的语言~
♥ 15 ↩ 1
所以RefCell其实就是取悦编译器,让编译器在代码检查上不要为难我们。“我知道我写的代码没问题!是编译器你太笨没看懂。”然而如果在运行时还是对相同对象出现了“在同时拥有可变、不可变引用的条件下,试图通过可变引用修改对象”的情况,还是会panic。也就是视频中up所说的“把编译时的借用检查推迟到运行时”。
♥ 11
当你胡乱使用内部可变性时: panic:你好[doge]
♥ 9
字体可以调大一点吗[笑哭],看着有点累
♥ 4
在学 rust[脱单doge][脱单doge]
♥ 3
好好好,前几天刚看这个,支持UP的优质视频
♥ 2
内部可变性,对于python、go、java等语言的人来说是极其难理解的概念。 直到用Rust写一个带有运行状态的类型后,才能感觉到Rust的约束与其它语言天差地别。 其它语言构造的“对象”,是可以把public方法交给其它对象调用,这是很自然的行为。 在Rust里,是不能的:改变了数据内部的状态 但是,这种代码又是很日常的,不能禁止这种代码表达能力。 这时候,内部可变性就出现了,理解到需求才能理解这个概念本身。 RefCell原理是unsafe,让类型自己记录“借用”的情况,出现不满足规则的申请动作就直接panic,也就是平时说的“推迟到运行时”。RefCell在单线程中用,业务代码要保证`borrow_mut()` 借用用完立即释放。在多线程下,用 `Mutex`/`RwLock` 配合 `RefCell<T>`,实现`borrow_mut()` 借用用完立即释放。
♥ 1 ↩ 1
随便刷到的,不知不觉看完了,说的真好,up加油
♥ 1
758522192 欢迎加群一起学习rust(备注加edt) rust嵌入式专用群:947963288(备注哪个视频找到的:vid)
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
这个cell真的并发安全吗
所以内部可变性就是Cell和RefCell
↩ 1
Rust+Zed+正确单词发音,靠谱。
↩ 1
字体再调大写,现在太小了
求更新!
学到了[打call]
大师?
请问字体是?
zed好用吗,和jetb的比呢,感觉jet的检查错误好慢
↩ 1
有点绕,const pointer 与 pointer to const的区别?