lindera_dictionary/dictionary_loader/
character_definition.rs

1use 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}