diff --git a/src/context/file_access_interface.rs b/src/context/file_access_interface.rs index 10d1536..ff8d9e3 100644 --- a/src/context/file_access_interface.rs +++ b/src/context/file_access_interface.rs @@ -1,13 +1,15 @@ +use std::fmt::Debug; use std::path::Path; -pub trait FileAccessInterface { - fn read_file>(&self, path: P) -> Result>; +pub trait FileAccessInterface: Debug { + fn read_file(&self, path: &dyn AsRef) -> Result>; } +#[derive(Debug, Clone)] pub struct LocalFileAccessInterface; impl FileAccessInterface for LocalFileAccessInterface { - fn read_file>(&self, path: P) -> Result> { + fn read_file(&self, path: &dyn AsRef) -> Result> { Ok(std::fs::read_to_string(path)?) } } diff --git a/src/context/global_settings.rs b/src/context/global_settings.rs index 4b68272..4601b24 100644 --- a/src/context/global_settings.rs +++ b/src/context/global_settings.rs @@ -1,27 +1,26 @@ -// use super::FileAccessInterface; -// use super::LocalFileAccessInterface; +use super::FileAccessInterface; +use super::LocalFileAccessInterface; use crate::types::Object; // TODO: Ultimately, I think we'll need most of this: https://orgmode.org/manual/In_002dbuffer-Settings.html #[derive(Debug, Clone)] -// , F: FileAccessInterface pub struct GlobalSettings<'g, 's> { pub radio_targets: Vec<&'g Vec>>, - // pub file_access: F, + pub file_access: &'g dyn FileAccessInterface, } impl<'g, 's> GlobalSettings<'g, 's> { - pub fn new() -> Self { + pub fn new() -> GlobalSettings<'g, 's> { GlobalSettings { radio_targets: Vec::new(), - // file_access: LocalFileAccessInterface, + file_access: &LocalFileAccessInterface, } } } impl<'g, 's> Default for GlobalSettings<'g, 's> { - fn default() -> Self { + fn default() -> GlobalSettings<'g, 's> { GlobalSettings::new() } }