繁体   English   中英

通用`impl的Rust trait impl<t: read + seek> KaitaiStream for T {}`</t:>

[英]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

分解的语法如下:为所有实现ReadSeek的类型T实现KaitaiStream

请注意,特征本身是这样定义的:

pub trait KaitaiStream: Read + Seek {
   // methods...
}

这意味着:所有KaitaiStream的实现也必须实现ReadSeek

这些东西一起有效地使KaitaiStream成为Read + Seek的同义词。 任何实现KaitaiStream的类型都必须实现Read + Seek ,任何实现Read + Seek的类型都“免费”获得KaitaiStream实现。

由于它的定义方式, KaitaiStream的方法可能[1]使用ReadSeek的方法,因此它提供了这些方法的所有默认实现是有道理的。


[1] Rust 的未来版本将包括trait specialization ,这将允许您为特定类型额外实现更有效(或只是不同)的实现。 如果没有specialization ,这些实现将与默认值冲突并且是不允许的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM