diff --git a/CHANGELOG.md b/CHANGELOG.md index e14ba84f..79481d87 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,8 @@ ## Other +- Load cached assets as fast as integrated assets, see #1753 (@Enselic) + ## Syntaxes diff --git a/src/assets.rs b/src/assets.rs index 3c125316..d9f4420d 100644 --- a/src/assets.rs +++ b/src/assets.rs @@ -1,7 +1,6 @@ use std::collections::BTreeMap; use std::ffi::OsStr; -use std::fs::{self, File}; -use std::io::BufReader; +use std::fs; use std::path::Path; use syntect::dumps::{dump_to_file, from_binary, from_reader}; @@ -298,15 +297,14 @@ fn asset_to_cache(asset: &T, path: &Path, description: &str } fn asset_from_cache(path: &Path, description: &str) -> Result { - let asset_file = File::open(&path).chain_err(|| { + let contents = fs::read(path).chain_err(|| { format!( "Could not load cached {} '{}'", description, path.to_string_lossy() ) })?; - from_reader(BufReader::new(asset_file)) - .chain_err(|| format!("Could not parse cached {}", description)) + from_reader(&contents[..]).chain_err(|| format!("Could not parse cached {}", description)) } #[cfg(test)] @@ -316,7 +314,7 @@ mod tests { use std::ffi::OsStr; use std::fs::File; - use std::io::Write; + use std::io::{BufReader, Write}; use tempfile::TempDir; use crate::input::Input;