coins_bip39/wordlist/
italian.rs1use crate::{Wordlist, WordlistError};
2use once_cell::sync::Lazy;
3
4pub const RAW_ITALIAN: &str = include_str!("./words/italian.txt");
6
7pub static PARSED: Lazy<Vec<&'static str>> = Lazy::new(|| RAW_ITALIAN.lines().collect());
9
10#[derive(Clone, Debug, PartialEq, Eq, Copy)]
11pub struct Italian;
13
14impl Wordlist for Italian {
15 fn get_all() -> &'static [&'static str] {
16 PARSED.as_slice()
17 }
18
19 fn get_index(word: &str) -> Result<usize, WordlistError> {
21 Self::get_all()
22 .binary_search(&word)
23 .map_err(|_| crate::WordlistError::InvalidWord(word.to_string()))
24 }
25}
26
27#[cfg(test)]
28mod tests {
29 use super::*;
30
31 use crate::WordlistError;
32
33 #[test]
34 fn test_get() {
35 assert_eq!(Italian::get(3), Ok("abete"));
36 assert_eq!(Italian::get(2044), Ok("zucchero"));
37 assert_eq!(Italian::get(2048), Err(WordlistError::InvalidIndex(2048)));
38 }
39
40 #[test]
41 fn test_get_index() {
42 assert_eq!(Italian::get_index("abete"), Ok(3));
43 assert_eq!(Italian::get_index("zucchero"), Ok(2044));
44 assert_eq!(
45 Italian::get_index("qualcheparolaacaso"),
46 Err(WordlistError::InvalidWord("qualcheparolaacaso".to_string()))
47 );
48 }
49
50 #[test]
51 fn test_get_all() {
52 assert_eq!(Italian::get_all().len(), 2048);
53 }
54}