gutenberg-rs 0.1.0

This crate is used to get information and data from gutenberg (https://www.gutenberg.org/)
Documentation
use crate::fst_parser::ParseResult;
use crate::fst_parser_type::ParseType;

#[derive(Debug, Copy, Clone)]
pub struct GutenbergFileEntry {
    pub file_link_id: i32,
    pub file_type_id: i32,
}

pub struct Book {
    pub publisher_id: i32,
    pub title_id: i32,
    pub rights_id: i32,
    pub gutenberg_book_id: usize,
    pub date_issued: String,
    pub num_downloads: i32,

    pub language_ids: Vec<usize>,
    pub subject_ids: Vec<usize>,
    pub author_ids: Vec<usize>,
    pub bookshelf_ids: Vec<usize>,

    pub files: Vec<GutenbergFileEntry>,
}

impl Book {
    #[allow(dead_code)]
    fn get_str(ids: &Vec<usize>, parse_type: ParseType, parse_result: &ParseResult) -> String {
        ids.iter()
            .map(|x| {
                let mut res = "".to_string();
                if let Some(item) = parse_result
                    .field_dictionaries[parse_type as usize]
                    .get_index(*x) {
                        res = item.0.to_string()
                    }
                res
            })
            .collect::<Vec<_>>()
            .join("|")
    }

    #[allow(dead_code)]
    fn get_str_single(id: i32, parse_type: ParseType, parse_result: &ParseResult) -> String {
        if id >= 0 {
            if let Some(item) = parse_result.field_dictionaries[parse_type as usize]
                .get_index(id as usize) {
                return item.0.to_string();
            }
            else {
                return "".to_string();
            }
        }
        "".to_string()
    }

    #[allow(dead_code)]
    pub fn debug(&self, parse_result: &ParseResult) {
        if self.language_ids.len() > 1 {
            println!("---------BOOK {} -------", self.gutenberg_book_id);
            println!(
                "- title: {}",
                Book::get_str_single(self.title_id, ParseType::Title, parse_result)
            );
            println!(
                "- publisher: {}",
                Book::get_str_single(self.publisher_id, ParseType::Publisher, parse_result)
            );
            println!(
                "- rights: {}",
                Book::get_str_single(self.rights_id, ParseType::Rights, parse_result)
            );
            println!("- date issued: {}", self.date_issued);
            println!("- number of downloads: {}", self.num_downloads);
            println!(
                "- languages: {}",
                Book::get_str(&self.language_ids, ParseType::Language, parse_result)
            );
            println!(
                "- bookshelves: {}",
                Book::get_str(&self.bookshelf_ids, ParseType::Bookshelf, parse_result)
            );
            println!(
                "- subjects: {}",
                Book::get_str(&self.subject_ids, ParseType::Subject, parse_result)
            );
            println!(
                "- authors: {}",
                Book::get_str(&self.author_ids, ParseType::Author, parse_result)
            );
        }
    }
}