【发布时间】:2021-07-06 14:17:28
【问题描述】:
我正在尝试将to_be_bytes 方法包装到特征中(目前它们是直接从原始类型实现的),以便我可以在泛型类型上使用它。这是我的代码:
trait ToBeBytes {
fn to_be_bytes(&self) -> [u8; mem::size_of::<Self>()];
}
问题出现在mem::size_of::<Self>(),编译器说是这样的
在编译时无法知道
Self类型值的大小
我想出了一个叫做类型占位符的概念,所以我改成这个:
trait ToBeBytes {
type Element;
fn to_be_bytes(&self) -> [u8; mem::size_of::<Self::Element>()];
}
现在编译器说:
未找到
Self的关联类型Element
我尝试了教程中的示例:
pub trait Iterator {
type Item;
fn next(&mut self) -> Option<Self::Item>;
}
然后编译。
那么我的代码和示例之间有什么区别?我怎样才能实现我的目标(将to_be_bytes 包装成特征)?
【问题讨论】:
-
这为我编译,但需要功能标志(取自stackoverflow.com/questions/65461672/…;注意那里的注释和编译器产生的警告):play.rust-lang.org/…
-
您的原始设计可以修复,但需要相同的功能标志:play.rust-lang.org/…
标签: rust