1 个不稳定版本
0.2.0 | 2022年6月30日 |
---|
#35 在 #charset
150 每月下载量
用于 encoding-next
20KB
266 行
- 字符编码接口。
-
原始增量接口
- 以
raw_
开头名称的方法构成了原始增量接口, - 为编码器和解码器提供的最低API。
- 此接口将整个输入分为四部分
-
- 已处理的 字节不会影响未来结果。
-
- 未处理的 字节可能会影响未来结果
- 并且可以成为未来输入的有问题序列的一部分。
-
- 有问题 的字节是导致错误条件的第一个字节。
-
- 剩余的 字节尚未处理或读取,
- 因此调用者应再次提供任何剩余的字节。
- 以下图说明了连续的
raw_feed
调用示例 -
- 第1次 raw_feed :第2次 raw_feed :第3次 raw_feed
- ----------+----:---------------:--+--+---------
-
| : : | |
- ----------+----:---------------:--+--+---------
- 已处理 未处理 | 剩余的
-
problematic
-
- 由于这些部分可以跨越多个输入序列到
raw_feed
, raw_feed
返回两个偏移量(一个可选的),- 调用者可以使用这些偏移量跟踪有问题序列。
- 第一个偏移量(元组中的第一个
usize
)指向第一个未处理的字节, - 或者为零,如果未处理的字节在当前调用之前已经开始。
- (第一个未处理的字节也可以在偏移量 0 处,
- 这对调用者来说没有区别。)
- 第二个偏移量(在
CodecError
结构体中的upto
字段,如果有的话), - 指向第一个剩余的字节。
- 如果调用者需要通过有问题序列恢复错误,
- 那么调用者开始保存未处理的字节,当第一个偏移量小于输入长度时,
- 在第一个偏移量为零时追加任何新的未处理字节,
- 当第一个偏移量变为非零时丢弃未处理字节,
- 在第一个偏移量小于输入长度时保存新的未处理字节。
- 然后调用者检查错误条件
- 并可以使用保存的未处理字节进行错误恢复。
- 或者,如果调用者只想用固定字符串(如 U+FFFD)
- 替换有问题序列,
- 则只需丢弃第一个序列并输出固定字符串作为错误。
- 然后必须从第二个偏移量再次提供输入字节。