Rust 为什么io::copy要求读写器都是可变引用?
为什么需要将reader和writer参数都作为可变引用传递 我可以理解为什么编写器需要进行变异,以适应写入其中的数据,从而改变其内部状态Rust 为什么io::copy要求读写器都是可变引用?,rust,immutability,traits,Rust,Immutability,Traits,为什么需要将reader和writer参数都作为可变引用传递 我可以理解为什么编写器需要进行变异,以适应写入其中的数据,从而改变其内部状态 然而,为什么阅读器也必须标记为可变引用?如果我只读取数据,那么我不需要对给定类型的引用而不是可变引用吗?因为读取类型通常是一次性的:从中读取,就是对其进行变异 以标准输入为例:您只能从中读取一次,因此某些内容必须发生变化。当您从套接字读取数据时,几乎可以肯定的是,您正在修改一个内部缓冲区,该缓冲区用于解释您获得的网络数据包之间的差异,以及您在任何给定时刻想要
然而,为什么阅读器也必须标记为可变引用?如果我只读取数据,那么我不需要对给定类型的引用而不是可变引用吗?因为
读取
类型通常是一次性的:从中读取,就是对其进行变异
以标准输入为例:您只能从中读取一次,因此某些内容必须发生变化。当您从套接字读取数据时,几乎可以肯定的是,您正在修改一个内部缓冲区,该缓冲区用于解释您获得的网络数据包之间的差异,以及您在任何给定时刻想要读取的数据量。如何从链
读取,该链用于将可读内容连接在一起;如果没有变异,它就无法跟踪它应该从哪一个读取
当然,
Read
类型可能不需要可变访问来执行读取,但这不是普遍正确的,因为它不是普遍正确的,Read
特性需要可变访问。这实际上是一个非常清晰的解释。谢谢