是谁说 Rust 里不要写 Unsafe 的?

Description
新手向,聊一聊 Rust 里关于 unsafe 的常见误区有哪些,以及如何正确使用 unsafe。

P.S. 第一次做解说类视频,请大家多多指教!!

Comments

AlphaFoxz 2024-06-24

避免写unsafe(×) 避免unsafe向外传播(✓)

♥ 98 ↩ 1

小马TX_Official 2024-10-27

其实rust标准库自身也大量使用unsafe。因此与其说不要用unsafe,不如说是要搞清楚哪些条件下一定要unsafe(比如处理循环引用结构,微操裸指针,调c库等),哪些条件下不应该unsafe(如很多萌新被生命周期拷打,unsafe只是为了骗过编译器,并没有理解rustc为什么要阻止你)。只要将unsafe块的逻辑进行严格的检查并及时封装,unsafe没什么不安全的

♥ 41 ↩ 1

Happy-Feet 2024-06-24

其实我一直有个疑问,除了up说到的这三个场景之外,当我语言编写复杂的数据结构时。应不应该使用unsafe呢? 比如双向链表,亦或者假如我这一个游戏,玩家需要指向装备的指针,装备也有一个指向持有者的指针这种节点相互引用,不能以一个树来表示的数据结构。 以上这些例子用safe rust很难表达出来,既不直观,也不高效,还很难编写。在这种情况下,有什么准则来指导应该总safe还是unsafe呢?

♥ 28 ↩ 24

上班狠狠摸鱼 2024-07-28

unsafe 应该叫 trust_me

♥ 26

时雨的说 2024-07-09

Rust其实unsafe了就和c++差不多了

♥ 16 ↩ 1

蚌妮氓 2024-07-07

文件第一行写unsafe{最后一行写},完美[doge]

♥ 12 ↩ 1

改变自己5566 2024-07-05

rust底层的智能指针等底层的都是unsafe

♥ 9

江户川西西 2024-09-29

不unsafe是不可能的,它搞这么多乱七八糟的东西是为了规避和限制,方便做到工程上大家把unsafe /macro封装在特定的库里其它人写代码去调用库。没有免费午餐

♥ 8

MOIiii_ 2024-09-12

之前用到一个bind系统声音输入输出的库,那种结构想在rust里实现功能必须得用unsafe去操作rcrefcell,简直了[笑哭],是一个和pulseaudio相关的库,作者本人回答issues相关问题也说这个了[笑哭]

♥ 7 ↩ 2

小白不是核心 2024-07-09

没有安全措施不代表一定不安全[doge]

♥ 6 ↩ 3

莱欧斯利的2778 2024-06-25

老师声音好听[doge]

♥ 5

杨朱门徒我楚人也 2025-07-28

如果一定要用unsafe,为啥不直接用C或者C++呢。。

♥ 4 ↩ 2

threemoredays 2024-06-24

介绍介绍 zed 吧[doge]

♥ 4 ↩ 1

三咲智子 2024-06-24

大师[喜欢]

♥ 3 ↩ 1

struct786 2024-07-03

up主键盘是什么轴?

♥ 2 ↩ 2

Natsuawa_Keiko 2024-06-27

想问个类似茴香豆有四种写法的问题: 对于 unsafe 的 foo 函数, unsafe { Ok(foo()) } 和 Ok(unsafe { foo() }) 哪种写法更被推荐呢? std 里有大量按行包裹的 unsafe, 看上去确实更美观, 但又和 unsafe 块越小越好的观点冲突.

♥ 2 ↩ 2

SoonIter 2024-06-25

[脱单doge]感觉可以搞个字幕

♥ 2 ↩ 1

贱蛤卸甲 2024-07-10

请问编辑器是?

♥ 1 ↩ 1

智神今天开摆了吗 2024-07-09

视频的背景音乐可以小一点[doge],今天又学到的了我用不上的知识,谢谢up

♥ 1

-CYLIX- 2024-07-03

up求字体[doge]

♥ 1 ↩ 1