错误的类型参数数量:预期为1但找到0

Ger*_*ann 10 generics rust

我正在尝试传递一个std::io::BufReader函数的引用,但得到此错误消息std::io::BufReader.

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

struct CompressedMap;

fn parse_cmp(buf: &mut BufReader) -> CompressedMap {
    unimplemented!()
}

fn main() -> Result<(), Box<dyn std::error::Error>> {
    let mut buf = BufReader::new(File::open("data/nyc.cmp")?);

    let map = parse_cmp(&mut buf);

    Ok(())
}
Run Code Online (Sandbox Code Playgroud)

我在这里错过了什么?

A.B*_*.B. 15

看看BufferedReader的实现就清楚了:

impl<R: Read> BufReader<R> {
Run Code Online (Sandbox Code Playgroud)

将您的功能更改为:

use std::io::Read;

fn parse_cmp<R: Read>(buf: &mut BufReader<R>)
Run Code Online (Sandbox Code Playgroud)

您也可以定义具体类型:

fn parse_cmp(buf: &mut BufReader<File>)
Run Code Online (Sandbox Code Playgroud)