#![warn(clippy::verbose_file_reads)]
use std::env::temp_dir;
use std::fs::File;
use std::io::Read;

struct Struct;
// To make sure we only warn on File::{read_to_end, read_to_string} calls
impl Struct {
    pub fn read_to_end(&self) {}

    pub fn read_to_string(&self) {}
}

fn main() -> std::io::Result<()> {
    let path = "foo.txt";
    // Lint shouldn't catch this
    let s = Struct;
    s.read_to_end();
    s.read_to_string();
    // Should catch this
    let mut f = File::open(path)?;
    let mut buffer = Vec::new();
    f.read_to_end(&mut buffer)?;
    //~^ verbose_file_reads

    // ...and this
    let mut string_buffer = String::new();
    f.read_to_string(&mut string_buffer)?;
    //~^ verbose_file_reads

    Ok(())
}
