非公开Unsound函数标记unsafe的时机咨询:求权威指导资源与大型项目实践案例
非公开Unsound函数标记unsafe的时机咨询:求权威指导资源与大型项目实践案例
各位Rust开发者们好,最近我在学习《Rustonomicon》的时候,看到了一个关于Vec实现的示例——一个本身unsound但没有标记为unsafe的私有函数:
fn make_room(&mut self) { // grow the capacity self.cap += 1; }
这个函数故意没加unsafe标记,尽管它会破坏Vec的内部不变性,但因为它是私有(非pub)的,所以对外的公共API依然是安全的。顺着这个思路想,似乎所有私有函数都没必要标记unsafe?毕竟就算像这个函数一样,允许同模块内的安全代码触发段错误,也不会影响外部的安全保证。
那问题来了:什么时候应该给一个unsound的私有函数标记unsafe呢?
我不想让这个问题变成纯主观讨论,所以想请教大家:有没有权威的指导文档或者规范提到过这方面的准则?或者能不能分享一些大型Rust项目里的相关实践案例呀?
备注:内容来源于stack exchange,提问作者ChrisB
相关产品推荐
相关产品推荐

