17、Rust 中的不安全代码与并发编程

Rust 中的不安全代码与并发编程

1. 应对对不安全代码的恐惧

在编写 Rust 代码时,使用不安全代码可能会让人感到恐惧。但实际上,编写安全的不安全代码不仅是可能的,而且大多数时候并不困难。关键在于谨慎处理不安全代码,在使用不安全代码之前,要确保没有安全的实现方式可供替代。

2. 管理不安全边界

2.1 局部推理的问题

在编写不安全代码时,人们往往会进行局部推理,即只考虑当前不安全代码块本身是否安全,而不考虑它与代码库其他部分的交互。然而,这种局部推理往往会带来问题。例如,使用 Pin::new_unchecked 生成类型字段的固定引用时,代码在编写时可能是安全的,但后续如果为该类型添加了 Unpin 的安全实现,那么之前的不安全代码可能就不再安全了。

2.2 安全检查的边界

安全性是一个需要在与不安全代码块相关的所有代码的隐私边界上进行检查的属性。隐私边界可以理解为“任何可以摆弄不安全部分的代码部分”。例如,如果在一个标记为 pub pub(crate) 的模块中声明了一个公共类型 Foo ,那么同一 crate 中的其他代码都可以为 Foo 实现方法和特性。因此,如果不安全代码的安全性依赖于 Foo 不实现特定的特性或具有特定签名的方法,那么每次为 Foo 添加实现时,都需要重新检查该不安全代码块的安全性。如果 Foo 不是整个

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值