我有一个来自 wasm-bindgen 板条箱的示例: text \n有来自许多 Deref 实现的方法。虽然我认为具有关联类型的特征可以实现一次
\n我不知道它是如何实现的\n我不知道\xe2\x80\x99t,例如,什么可以用作 Deref<Target = ?>
\n如果您一直向下滚动到特征实现,您将看到只有一种Deref. 然后您可以单击并查看目标也实现了 deref。这还在继续。
HtmlCanvasElement实施Deref<Target = HtmlElement>HtmlElement实施Deref<Target = Element>Element实施Deref<Target = Node>Node实施Deref<Target = EventTarget>EventTarget实施Deref<Target = Object>Object实施Deref<Target = JsValue>Rustdoc 列出了传递 deref 中的方法,因为它们都可以在类型上调用。
Web-sys 这样做是因为它最接近地模仿 JavaScript 继承,您可以在这里看到:
从其父级HTMLElement继承属性。
您可以以相同的方式遍历它们,但Object省略了 except ,因为所有内容都继承自Object.
如果您正在编写本机 Rust 代码,则不应这样做。这不仅会像这里一样创建巨大的、重复的文档页面,而且也不符合 的精神Deref,它应该廉价地生成对指针类型中包含的值的引用。这仅在 web-sys 中完成,因为它的类型实际上是在 JavaScript 中。
相反,implementAsRef可以实现任意多次,它不会使您的方法命名空间或文档混乱,并且不保留 的严格含义Deref。
| 归档时间: |
|
| 查看次数: |
121 次 |
| 最近记录: |