[英]Rust trait impl for generic `impl<T: Read + Seek> KaitaiStream for T {}`
我对这行 rust 感到困惑:
impl<T: Read + Seek> KaitaiStream for T {}
看起来它正在尝试为某些结构“T”实现KaitaiStream
。
但是 T 是未知的,那么这条线是什么意思呢? 这是否意味着所有实现Read + Seek
的东西现在也将实现KaitaiStream
?
分解的语法如下:为所有实现Read
和Seek
的类型T
实现KaitaiStream
。
请注意,特征本身是这样定义的:
pub trait KaitaiStream: Read + Seek {
// methods...
}
这意味着:所有KaitaiStream
的实现也必须实现Read
和Seek
。
这些东西一起有效地使KaitaiStream
成为Read + Seek
的同义词。 任何实现KaitaiStream
的类型都必须实现Read + Seek
,任何实现Read + Seek
的类型都“免费”获得KaitaiStream
实现。
由于它的定义方式, KaitaiStream
的方法可能仅[1]使用Read
和Seek
的方法,因此它提供了这些方法的所有默认实现是有道理的。
[1] Rust 的未来版本将包括trait specialization ,这将允许您为特定类型额外实现更有效(或只是不同)的实现。 如果没有specialization
,这些实现将与默认值冲突并且是不允许的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.