如何解决如何为 Box<dyn Trait> 字段指定关联类型的值?
我想为一个特征创建一个装箱结构字段,其中特征具有关联的类型。下面是一个使用 digest::Digest 的示例:
use digest::Digest;
struct Crypto {
digest: Box<dyn Digest>,}
编译失败,报错:
必须指定关联类型OutputSize
(来自特征digest::Digest
)的值
有时我可能想使用 sha2::Sha256 和其他时候 sha2::Sha512,每个都有不同的 OutputSize
。是否可以创建具有动态关联类型的盒装结构字段?如果是这样,如何?
解决方法
您可以创建自己的特征,并在所有返回 Digest
或 Box<[u8]>
而不是 Vec<u8>
的 GenericArray
实例中为其提供全面的实现,但您不需要因为 digest
的作者已经为您创建了 DynDigest
特征:
use digest::DynDigest;
struct Crypto {
digest: Box<dyn DynDigest>,}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。