小马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-09-29 不unsafe是不可能的,它搞这么多乱七八糟的东西是为了规避和限制,方便做到工程上大家把unsafe /macro封装在特定的库里其它人写代码去调用库。没有免费午餐 ♥ 8
MOIiii_ 2024-09-12 之前用到一个bind系统声音输入输出的库,那种结构想在rust里实现功能必须得用unsafe去操作rcrefcell,简直了[笑哭],是一个和pulseaudio相关的库,作者本人回答issues相关问题也说这个了[笑哭] ♥ 7 ↩ 2
Natsuawa_Keiko 2024-06-27 想问个类似茴香豆有四种写法的问题: 对于 unsafe 的 foo 函数, unsafe { Ok(foo()) } 和 Ok(unsafe { foo() }) 哪种写法更被推荐呢? std 里有大量按行包裹的 unsafe, 看上去确实更美观, 但又和 unsafe 块越小越好的观点冲突. ♥ 2 ↩ 2
Comments
避免写unsafe(×) 避免unsafe向外传播(✓)
♥ 98 ↩ 1
其实rust标准库自身也大量使用unsafe。因此与其说不要用unsafe,不如说是要搞清楚哪些条件下一定要unsafe(比如处理循环引用结构,微操裸指针,调c库等),哪些条件下不应该unsafe(如很多萌新被生命周期拷打,unsafe只是为了骗过编译器,并没有理解rustc为什么要阻止你)。只要将unsafe块的逻辑进行严格的检查并及时封装,unsafe没什么不安全的
♥ 41 ↩ 1
其实我一直有个疑问,除了up说到的这三个场景之外,当我语言编写复杂的数据结构时。应不应该使用unsafe呢? 比如双向链表,亦或者假如我这一个游戏,玩家需要指向装备的指针,装备也有一个指向持有者的指针这种节点相互引用,不能以一个树来表示的数据结构。 以上这些例子用safe rust很难表达出来,既不直观,也不高效,还很难编写。在这种情况下,有什么准则来指导应该总safe还是unsafe呢?
♥ 28 ↩ 24
unsafe 应该叫 trust_me
♥ 26
Rust其实unsafe了就和c++差不多了
♥ 16 ↩ 1
文件第一行写unsafe{最后一行写},完美[doge]
♥ 12 ↩ 1
rust底层的智能指针等底层的都是unsafe
♥ 9
不unsafe是不可能的,它搞这么多乱七八糟的东西是为了规避和限制,方便做到工程上大家把unsafe /macro封装在特定的库里其它人写代码去调用库。没有免费午餐
♥ 8
之前用到一个bind系统声音输入输出的库,那种结构想在rust里实现功能必须得用unsafe去操作rcrefcell,简直了[笑哭],是一个和pulseaudio相关的库,作者本人回答issues相关问题也说这个了[笑哭]
♥ 7 ↩ 2
没有安全措施不代表一定不安全[doge]
♥ 6 ↩ 3
老师声音好听[doge]
♥ 5
如果一定要用unsafe,为啥不直接用C或者C++呢。。
♥ 4 ↩ 2
介绍介绍 zed 吧[doge]
♥ 4 ↩ 1
大师[喜欢]
♥ 3 ↩ 1
up主键盘是什么轴?
♥ 2 ↩ 2
想问个类似茴香豆有四种写法的问题: 对于 unsafe 的 foo 函数, unsafe { Ok(foo()) } 和 Ok(unsafe { foo() }) 哪种写法更被推荐呢? std 里有大量按行包裹的 unsafe, 看上去确实更美观, 但又和 unsafe 块越小越好的观点冲突.
♥ 2 ↩ 2
[脱单doge]感觉可以搞个字幕
♥ 2 ↩ 1
请问编辑器是?
♥ 1 ↩ 1
视频的背景音乐可以小一点[doge],今天又学到的了我用不上的知识,谢谢up
♥ 1
up求字体[doge]
♥ 1 ↩ 1