rust - 我应该使用什么特征来从文件、TCP 连接、简单字符串中读取字节流......?

标签 rust

我想写一些可以读取字节的代码:

  • 标准输入
  • 文件
  • 一个字符串
  • TCP

也许还有其他人。在 Rust 中执行此操作的最佳方法是什么?

我认为 std::io::Read 特性是可行的方法,但它似乎至少缺少字符串的实现(我只需要这个特殊的测试 - 也许我可以使用别的东西)?

最佳答案

您可能会发现使用 impl<'_> Read for &' [u8] trait 会有所帮助用于从字符串中读取字节。如类型所示,您必须首先将漂亮的字符串转换为一段字节。这是一个简短的示例。

use std::fs::File;
use std::io::{Error, Read, BufReader};

fn whoo<T: Read>(mut readable: T) {
    let mut buffer = [0; 10];
    readable.read(&mut buffer).expect("panic");
    println!("{:?}", buffer);
}

fn main() -> Result<(), Error> {
    whoo("hello there".as_bytes());
    whoo("".as_bytes());

    let dict = File::open("/usr/share/dict/words")?;
    let reader = BufReader::new(dict);
    whoo(reader);

    Ok(())
}

关于rust - 我应该使用什么特征来从文件、TCP 连接、简单字符串中读取字节流......?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55818973/

相关文章:

json - 如何将 Serde 与包含不同对象的 JSON 数组一起使用以获取成功和错误?

concurrency - Rust 中的进程隔离

rust - 如何将类型存储在数组中?

macros - 如何在宏中添加前缀/后缀标识符?

rust - 反转字符串的一部分

rust - 如果我想将单个可变对象传递给函数的多个参数,我该怎么办?

regex - RE2 (Rust) 正则表达式不能按预期工作

rust - 借用的值(value)活得不够长,需要静态生命周期

join - Diesel 连接无法推断类型

rust - 在不复制操作数的情况下重载 Add-operator