如何解决使用自定义哈希函数序列化rust HashMap
我正在尝试使用应用bincode::serialize_into(writer,cache)?;
的自定义哈希函数序列化rust HashMap,其中cache
是定义如下的结构对象:
use std::hash::{BuildHasherDefault,Hasher};
use serde::{Deserialize,Serialize};
#[derive(Deserialize,Serialize)]
pub(crate) struct Cache<S>
where
S: Default + Hasher,{
records: HashMap<DNA,Mapping,BuildHasherDefault<S>>,}
编译时,我收到一个错误the trait 'cli::_::_serde::Serialize' is not implemented for 'S'
,它指向cache
变量。
如本issue的自定义哈希函数序列化中所述(在我的情况下为FnvHasher),应该只需要实现BuildHasher特性即可。
该特性已经由BuildHasherDefault实现,用于创建BuildHasher
实例。
编辑:
为了说明这个问题,我创建了一个playground example(因为在操场上没有二进制代码,所以我使用serde_json代替)。
如示例所示,可以使用自定义哈希函数(在这种情况下为custom_hashmap
)创建并序列化HashMap FnvHasher
。
但这不适用于使用自定义哈希函数包装HashMap的缓存对象cache
。在那种情况下,编译器要求添加Serialize
FnvHasher
特征版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。