所以我目前正在使用
rustc 1.36.0-每晚(8dd4aae9a 2019-05-04)
并在我的lib.rs中启用
#![功能(专业化)]
在我的库包装箱的模块中,有以下内容,这些内容无法编译。据我了解,即使没有f32
,它也应该编译,但无论哪种情况,它都不会编译。
f64
众所周知,Eq
和Hash
都不是NaN
也不是reinterpret_cast<u32>
,这是因为Nan
这个问题,例如在{{ 3}}。使用不安全的HashKey<T> where T : Hash
解决方法,因为我并不关心f32
。
因此,我对任何f64
都有一个特征哈希的暗示,而对Hash
和conflicting implementations of trait `std::hash::Hash` for type `naive::HashKey<f32>`:
conflicting implementation for `naive::HashKey<f32>`
note: upstream crates may add new impl of trait `std::hash::Hash` for type `f32` in future versionsrustc(E0119)
naive.rs(10, 1): first implementation here
naive.rs(18, 1): conflicting implementation for `naive::HashKey<f32>`
都有暗示,它们不是{{1}}指出的。因此,这甚至都不是专业化的,因为这三个隐式涵盖了正交情况。
尽管有所有奇妙的逻辑,但我得到了错误:
{{1}}
哪个会引起问题:
我做错什么了吗?怎么做对?既然这些impls引用的是没有重叠的类型集,那么为什么这首先是一个问题?