- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我想从 TCPStream
中读取一行,向其中写入另一行,然后重复。问题是 BufReader::new
取得了我的 TCPStream
变量的所有权:
let stream = ...; // TCPStream
let reader = BufReader::new(stream); // moved its value
// can't use stream here anymore
有什么简单的解决方案?
最佳答案
let mut stream = ...;
let reader = BufReader::new(&stream);
let writer = BufWriter::new(&stream);
如果我们仔细查看 BufReader::new
,我们会发现它接受类型为 R
的参数 inner
,其中 R
只是实现 Read
的任何类型:
impl<R: Read> BufReader<R> {
pub fn new(inner: R) -> BufReader<R> { ... }
}
然后我们看一下 Read
并看到这个实现:
impl<'a> Read for &'a TcpStream
所以我们可以传递一个对new
函数的引用,像这样:
let reader = BufReader::new(&stream);
我们将对 BufWriter
和 Write
做同样的事情,并且会看到确实有这个实现:
impl<'a> Write for &'a TcpStream
因此,我们可以再次使用不可变引用来创建 BufWriter
。
关于rust - 如果 BufReader 取得流的所有权,我如何在其上读取和写入行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35869078/
我正在尝试从文件中读取一些行,跳过前几行并打印其余行,但在移动后我不断收到有关已用值的错误: use std::fs::File; use std::io::{self, BufRead, BufRe
我正在尝试对一个 io::stdio 实例和一个包装文件的 BufReader 进行类型双关,这样我就可以在假定缓冲输入源的情况下编写代码。我已经尝试了几种尝试将 io::stdio() 转换为 Bu
我的应用程序使用一个非常大的文件,并从小窗口内的各种偏移量执行许多非常小的读取。我将直接文件读取替换为通过 BufReader 读取。然后我使用进程监视器(来自 Sysinternals 套件)检查了
我正在尝试创建一个函数来返回字符串在文件中的位置。这是我的代码: use std::{ fs::File, io::{BufRead, BufReader, Seek, SeekFro
为了更好地使用 Rust,我决定实现一个简单的词法分析器来逐行分析一些文档。 因为我必须在特性 BufRead 的行上至少迭代两次,所以我正在克隆我的 BufRead 的行,但我得到以下错误: err
第二次尝试访问变量sentences 导致value used here after move ,我想了解如何在不引起此问题的情况下存储总数。 我试图复制迭代器,但找不到使其工作的方法或正确的方法。
这个问题在这里已经有了答案: Why is it possible to implement Read on an immutable reference to File? (1 个回答) 关闭 6
我想打开一个文件并使用 lines() 作为 BufReader 读取其内容。我还希望能够查找到文件末尾并写入一些新行。 使用 let mut file 让我写入文件,但是一旦我将文件提供给 BufR
我的意图是访问 TcpStream 并在将 TcpStream 作为属性保存的结构的两种不同方法中执行两次读取操作。 第一个操作执行良好,但是当我尝试在第二个方法上加载剩余字节时,无法填充缓冲区。 我
BufReadCmd对于加载远程文件非常有用,例如当你:e protocol://some/file.txt 当您想设置 filetype=text 时,诀窍就来了。完成后 BufReadCmd .这
This question already has answers here: How to get the current cursor position in file? (2个答案) How t
我正在使用 fdpass crate通过 unix 套接字将文件描述符从一个进程发送到另一个进程(我不关心兼容性,只有 unix 没问题)。 使用 mio 我设法监听这些文件描述符上的事件: let
在下面的代码中创建字符串缓冲区是我发现的最快方法,因为没有完成分配重新分配如果我没理解错的话 pub extern fn rust_print_file() -> *mut PackChar {
我希望这段代码在每个循环中读取 3 个字节而不打印,但是文件的每 8000 个字节左右,它只读取两个字节: use std::error::Error; use std::fs::File; use
看完 std::io::BufReader 文档,我不确定如何最好地传递 BufReader功能之间。允许多种排列,但哪种排列最好? 我有一个接受文件的函数: use std::{fs::File,
我想从 TCPStream 中读取一行,向其中写入另一行,然后重复。问题是 BufReader::new 取得了我的 TCPStream 变量的所有权: let stream = ...; // TC
我正在尝试了解 Rust 中的一些基本内容。 我想创建一个工具,从一个文件中读取 512 个字节,并将这些字节复制到另一个文件中。然后从输入文件中取出接下来的 8 个字节并跳过它们。然后从输入文件中取
我有一个相当简单的代码,它使用 TcpStream 和 SslStream,使用 BufReader 逐行读取套接字。有时迭代器只是停止返回任何带有 Ok(0) 的数据: let mut stream
我是一个新的 vim 用户,按照本指南使 vim 自动缩进 python 代码并标记不必要的空格:https://realpython.com/blog/python/vim-and-python-a
我的 vim 配置有问题... 打开 python (.py) 文件时出现此错误: Error detected while processing BufRead Auto commands for
我是一名优秀的程序员,十分优秀!