Rust是否具有所有实体"继承"或实现的类型或特征?

quu*_*x00 5 rust

在Java中,所有对象都继承自java.lang.Object.在Go中,所有类型/结构都实现空接口interface {}.Rust语言中是否有类似的结构?

如果答案是否定的,那是什么让它变得没必要?是因为Rust中的所有实体(模块除外)都可以按类型参数化吗?这是否消除了对所有Rust实体/结构/枚举共享的共同"超类型"或共同特征的需求?

Erc*_*den 8

是的,有一个特点.是的std::any::Any.

来自文档:

Any特性由所有'静态类型实现,可用于动态类型

  • -0:`Any`是*不是*常见的基类或超类型或类似的东西.它确实更类似于Go的`interface {}`.但它不是惯用语 - 几乎总是泛型或其他一些特性应该是你使用的. (8认同)
  • 此外,与`interface {}`或其他示例不同,`Any`实际上只是一个在libstd中定义的特征,并且像`impl <T> Any for T`一样实现,即根本不是语言或编译器的基础.(尽管它在内部使用单个编译器内部函数来获取每种类型的唯一ID.) (7认同)