如何“多次”实施Deref?

Emp*_*pty 2 rust

我有一个来自 wasm-bindgen 板条箱的示例: text \n有来自许多 Deref 实现的方法。虽然我认为具有关联类型的特征可以实现一次

\n

我不知道它是如何实现的\n我不知道\xe2\x80\x99t,例如,什么可以用作 Deref<Target = ?>

\n

dre*_*ato 7

如果您一直向下滚动到特征实现,您将看到只有一种Deref. 然后您可以单击并查看目标也实现了 deref。这还在继续。

Rustdoc 列出了传递 deref 中的方法,因为它们都可以在类型上调用。

Web-sys 这样做是因为它最接近地模仿 JavaScript 继承,您可以在这里看到:

从其父级HTMLElement继承属性。

您可以以相同的方式遍历它们,但Object省略了 except ,因为所有内容都继承自Object.

如果您正在编写本机 Rust 代码,则不应这样做。这不仅会像这里一样创建巨大的、重复的文档页面,而且也不符合 的精神Deref,它应该廉价地生成对指针类型中包含的值的引用。这仅在 web-sys 中完成,因为它的类型实际上是在 JavaScript 中。

相反,implementAsRef可以实现任意多次,它不会使您的方法命名空间或文档混乱,并且不保留 的严格含义Deref