Generics 类型参数数目错误:应为1,但找到0

Generics 类型参数数目错误:应为1,但找到0,generics,rust,Generics,Rust,我正在尝试将的引用传递给函数: 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 = Buf

我正在尝试将的引用传递给函数:

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(())
}
这里缺少什么?

查看可以清楚地看出,
BufReader
有一个必须指定的泛型类型参数:

impl<R: Read> BufReader<R> {
impl BufReader{
将函数更改为类型参数的帐户。您可以允许任何泛型类型:

use std::io::Read;

fn parse_cmp<R: Read>(buf: &mut BufReader<R>)
使用std::io::Read;
fn解析\u cmp(buf:&mut BufReader)
您还可以使用特定的混凝土类型:

fn parse_cmp(buf: &mut BufReader<File>)
fn parse_cmp(buf:&mut BufReader)
查看可以清楚地看出,
BufReader
有一个必须指定的泛型类型参数:

impl<R: Read> BufReader<R> {
impl BufReader{
将函数更改为类型参数的帐户。您可以允许任何泛型类型:

use std::io::Read;

fn parse_cmp<R: Read>(buf: &mut BufReader<R>)
使用std::io::Read;
fn解析\u cmp(buf:&mut BufReader)
您还可以使用特定的混凝土类型:

fn parse_cmp(buf: &mut BufReader<File>)
fn parse_cmp(buf:&mut BufReader)