无法将文件内容读取为字符串-结果未在名为`read_to_string`的范围内实现任何方法 [英] Unable to read file contents to string - Result does not implement any method in scope named `read_to_string`

查看:192
本文介绍了无法将文件内容读取为字符串-结果未在名为`read_to_string`的范围内实现任何方法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我按照代码从 Rust by Example 打开文件:

I followed the code to open a file from Rust by Example:

use std::{env, fs::File, path::Path};

fn main() {
    let args: Vec<_> = env::args().collect();
    let pattern = &args[1];

    if let Some(a) = env::args().nth(2) {
        let path = Path::new(&a);
        let mut file = File::open(&path);
        let mut s = String::new();
        file.read_to_string(&mut s);
        println!("{:?}", s);
    } else {
        //do something
    }
}

但是,我收到这样的消息:

However, I got a message like this:

error[E0599]: no method named `read_to_string` found for type `std::result::Result<std::fs::File, std::io::Error>` in the current scope
  --> src/main.rs:11:14
   |
11 |         file.read_to_string(&mut s);
   |              ^^^^^^^^^^^^^^ method not found in `std::result::Result<std::fs::File, std::io::Error>`

我在做什么错了?

推荐答案

让我们看看您的错误消息:

Let's look at your error message:

error[E0599]: no method named `read_to_string` found for type `std::result::Result<std::fs::File, std::io::Error>` in the current scope
  --> src/main.rs:11:14
   |
11 |         file.read_to_string(&mut s);
   |              ^^^^^^^^^^^^^^ method not found in `std::result::Result<std::fs::File, std::io::Error>`

错误消息几乎是它在罐子上所说的-类型 结果 具有方法 read_to_string 。这实际上是关于特征的方法阅读

The error message is pretty much what it says on the tin - the type Result does not have the method read_to_string. That's actually a method on the trait Read.

您有一个结果,因为 File :: open(& path)可能失败。失败用 Result 类型表示。 结果可以是 Ok (这是成功案例),或者是 Err ,失败案例。

You have a Result because File::open(&path) can fail. Failure is represented with the Result type. A Result may be either an Ok, which is the success case, or an Err, the failure case.

您需要以某种方式处理失败案例。最简单的方法就是使用 expect 死于失败:

You need to handle the failure case somehow. The easiest is to just die on failure, using expect:

let mut file = File::open(&path).expect("Unable to open");

您还需要携带 Read 可以访问 read_to_string

You'll also need to bring Read into scope to have access to read_to_string:

use std::io::Read;

我会强烈推荐通读 Rust编程语言 并处理示例。 具有的可恢复错误结果 将非常相关。我认为这些文档是一流的!

I'd highly recommend reading through The Rust Programming Language and working the examples. The chapter Recoverable Errors with Result will be highly relevant. I think these docs are top-notch!

这篇关于无法将文件内容读取为字符串-结果未在名为`read_to_string`的范围内实现任何方法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆