如果不是为了物体安全,Rust会有什么安全保障?

sgl*_*div 2 rust

我试图理解对象安全的想法.我从文档中知道,对象安全是以下保持:

  • 这个特性不需要 Self: Sized
  • 它的所有方法都是对象安全的

如果物体安全所需的两个条件中的任何一个被丢弃,那么可以想象可以导致安全失败的安全保证可以实现什么?

She*_*ter 8

自我评估的大小:重新审视对象安全:

只有当编译器可以自动为其自身实现时,特征才是对象安全的,方法是通过存储在特征对象中的vtable将每个方法实现为动态函数调用.

如果没有对象安全规则,可以编写具有特征对象满足的类型签名的函数,其中内部使得无法实际使用特征对象.

我认为,回想起"对象安全"的措辞选择可能是一个糟糕的,因为它似乎与记忆安全无关,在Rust中正常使用术语"(un)safe".

对象"能力"可能更接近事实; 能够通过特征对象引用的特征.