From f6155006c5e53b5ce5e3779844495b7d5ed86b3d Mon Sep 17 00:00:00 2001 From: Josh Leeb-du Toit Date: Sat, 19 Dec 2020 09:53:02 +1100 Subject: [PATCH] Simplify Config::load Simplify Config::load by using the fs::read_to_string function provided in std. Additionally, we update the type of the config_path argument to be generic over AsRef which is generally preferred over &str for file path arguments. --- src/config.rs | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/src/config.rs b/src/config.rs index ced5c37..3b42d30 100644 --- a/src/config.rs +++ b/src/config.rs @@ -1,6 +1,5 @@ use serde::Deserialize; -use std::fs; -use std::io::prelude::*; +use std::{fs, path::Path}; #[derive(Deserialize)] pub struct Config { @@ -13,12 +12,8 @@ pub struct Config { } impl Config { - pub fn load(config_path: &str) -> anyhow::Result { - let mut file = fs::File::open(config_path)?; - let mut contents = String::new(); - - file.read_to_string(&mut contents)?; - - Ok(toml::from_str(&contents)?) + pub fn load>(config_path: P) -> anyhow::Result { + let buf = fs::read_to_string(config_path)?; + toml::from_str(&buf).map_err(|e| e.into()) } }