我有一个来自wasm-bindgen crate的例子:text 有来自许多Deref实现的方法.尽管我认为具有关联类型的特征可以实现一次

我不知道它是如何实施的 例如,我不知道什么可以用作衍生品;Target=?

推荐答案

如果您一直向下滚动到特征实现,您会发现只有one implementation of Deref个.然后您可以通过点击查看目标还实现了deref.这种情况还在继续.

Rustdoc列出了来自可传递deref的方法,因为它们都是可在类型上调用的.

Web-sys之所以做到这一点,是因为它最接近于模仿JavaScript继承,您可以看到here:

从其父级HTMLElement继承属性.

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

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

取而代之的是实现AsRef,您可以随意多次实现它,它不会扰乱您的方法命名空间或文档,也不具有Deref的严格含义.

Rust相关问答推荐

重新导出proc宏导致未解决的extern crate错误""

有没有办法在Rust中配置常量变量的值?

使用关联类型重写时特征的实现冲突

Rust proc_macro 和 syn:解析空格

是否可以在不直接重复的情况下为许多特定类型实现一个函数?

如何重命名 clap_derive 中的子命令占位符?

要求类型参数有特定的大小?

Rust FFI 和 CUDA C 性能差异

通过mem::transmute将数组展平安全吗?

为什么不能在 Rust 中声明静态或常量 std::path::Path 对象?

在 Rust 中实现资源消耗的安全包装器

哪些特征通过 `Deref` 而哪些不通过?

特征中定义的类型与一般定义的类型之间的区别

将 Futures 的生命周期特征绑定到 fn 参数

`map` 调用在这里有什么用吗?

我如何将特征作为 struct 的拥有字段?

Rust,使用枚举从 HashMap 获取值

如何创建动态创建值并向它们返回borrow 的工厂?

如何用另一个变量向量置换 rust simd 向量?

为什么 u64::trailing_zeros() 在无分支工作时生成分支程序集?