KaitaiStream for T {}`,rust"/>

首页 > 解决方案 > 通用`impl的Rust trait implKaitaiStream for T {}`

问题描述

我对这条锈迹感到困惑:

impl<T: Read + Seek> KaitaiStream for T {}

看起来它正在尝试KaitaiStream为某些结构“T”实现。

但是 T 是未知的,那么这条线是什么意思呢?这是否意味着所有实现的东西Read + Seek现在也将实现KaitaiStream

标签: rust

解决方案


语法分解为:implement KaitaiStreamfor all types Tthat implementation both Readand Seek

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

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

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

这些东西一起有效地构成KaitaiStreamRead + Seek. 实现的任何类型都KaitaiStream必须实现Read + Seek,并且实现的任何类型都“免费”Read + Seek获得实现。KaitaiStream

由于它的定义方式,方法 ofKaitaiStream只能[1]使用and的方法,因此它提供这些方法的所有默认实现是有意义的。ReadSeek


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


推荐阅读