lindera_dictionary/dictionary_loader/
character_definition.rs1use std::path::Path;
2
3#[cfg(feature = "compress")]
4use crate::decompress::decompress;
5use crate::dictionary::character_definition::CharacterDefinition;
6#[cfg(feature = "compress")]
7use crate::error::LinderaErrorKind;
8use crate::util::read_file;
9use crate::LinderaResult;
10
11pub struct CharacterDefinitionLoader {}
12
13impl CharacterDefinitionLoader {
14 #[allow(unused_mut)]
15 pub fn load(input_dir: &Path) -> LinderaResult<CharacterDefinition> {
16 let mut data = read_file(input_dir.join("char_def.bin").as_path())?;
17
18 #[cfg(feature = "compress")]
19 {
20 let compressed_data = bincode::deserialize_from(data.as_slice())
21 .map_err(|err| LinderaErrorKind::Deserialize.with_error(err))?;
22 data = decompress(compressed_data)
23 .map_err(|err| LinderaErrorKind::Decompress.with_error(err))?;
24 }
25
26 CharacterDefinition::load(data.as_slice())
27 }
28}