zxcvbn 1.0.0

An entropy-based password strength estimator, originally for Javascript by Dropbox.
Documentation
use std::collections::HashMap;

lazy_static! {
    pub static ref QWERTY: HashMap<char, Vec<Option<&'static str>>> = {
        let mut table = HashMap::with_capacity(94);
        table.insert('!', vec![Some("`~"), None, None, Some("2@"), Some("qQ"), None]);
        table.insert('"', vec![Some(";:"), Some("[{"), Some("]}"), None, None, Some("/?")]);
        table.insert('#', vec![Some("2@"), None, None, Some("4$"), Some("eE"), Some("wW")]);
        table.insert('$', vec![Some("3#"), None, None, Some("5%"), Some("rR"), Some("eE")]);
        table.insert('%', vec![Some("4$"), None, None, Some("6^"), Some("tT"), Some("rR")]);
        table.insert('&', vec![Some("6^"), None, None, Some("8*"), Some("uU"), Some("yY")]);
        table.insert('\'', vec![Some(";:"), Some("[{"), Some("]}"), None, None, Some("/?")]);
        table.insert('(', vec![Some("8*"), None, None, Some("0)"), Some("oO"), Some("iI")]);
        table.insert(')', vec![Some("9("), None, None, Some("-_"), Some("pP"), Some("oO")]);
        table.insert('*', vec![Some("7&"), None, None, Some("9("), Some("iI"), Some("uU")]);
        table.insert('+', vec![Some("-_"), None, None, None, Some("]}"), Some("[{")]);
        table.insert(',', vec![Some("mM"), Some("kK"), Some("lL"), Some(".>"), None, None]);
        table.insert('-', vec![Some("0)"), None, None, Some("=+"), Some("[{"), Some("pP")]);
        table.insert('.', vec![Some(",<"), Some("lL"), Some(";:"), Some("/?"), None, None]);
        table.insert('/', vec![Some(".>"), Some(";:"), Some("'\""), None, None, None]);
        table.insert('0', vec![Some("9("), None, None, Some("-_"), Some("pP"), Some("oO")]);
        table.insert('1', vec![Some("`~"), None, None, Some("2@"), Some("qQ"), None]);
        table.insert('2', vec![Some("1!"), None, None, Some("3#"), Some("wW"), Some("qQ")]);
        table.insert('3', vec![Some("2@"), None, None, Some("4$"), Some("eE"), Some("wW")]);
        table.insert('4', vec![Some("3#"), None, None, Some("5%"), Some("rR"), Some("eE")]);
        table.insert('5', vec![Some("4$"), None, None, Some("6^"), Some("tT"), Some("rR")]);
        table.insert('6', vec![Some("5%"), None, None, Some("7&"), Some("yY"), Some("tT")]);
        table.insert('7', vec![Some("6^"), None, None, Some("8*"), Some("uU"), Some("yY")]);
        table.insert('8', vec![Some("7&"), None, None, Some("9("), Some("iI"), Some("uU")]);
        table.insert('9', vec![Some("8*"), None, None, Some("0)"), Some("oO"), Some("iI")]);
        table.insert(':', vec![Some("lL"), Some("pP"), Some("[{"), Some("'\""), Some("/?"), Some(".>")]);
        table.insert(';', vec![Some("lL"), Some("pP"), Some("[{"), Some("'\""), Some("/?"), Some(".>")]);
        table.insert('<', vec![Some("mM"), Some("kK"), Some("lL"), Some(".>"), None, None]);
        table.insert('=', vec![Some("-_"), None, None, None, Some("]}"), Some("[{")]);
        table.insert('>', vec![Some(",<"), Some("lL"), Some(";:"), Some("/?"), None, None]);
        table.insert('?', vec![Some(".>"), Some(";:"), Some("'\""), None, None, None]);
        table.insert('@', vec![Some("1!"), None, None, Some("3#"), Some("wW"), Some("qQ")]);
        table.insert('A', vec![None, Some("qQ"), Some("wW"), Some("sS"), Some("zZ"), None]);
        table.insert('B', vec![Some("vV"), Some("gG"), Some("hH"), Some("nN"), None, None]);
        table.insert('C', vec![Some("xX"), Some("dD"), Some("fF"), Some("vV"), None, None]);
        table.insert('D', vec![Some("sS"), Some("eE"), Some("rR"), Some("fF"), Some("cC"), Some("xX")]);
        table.insert('E', vec![Some("wW"), Some("3#"), Some("4$"), Some("rR"), Some("dD"), Some("sS")]);
        table.insert('F', vec![Some("dD"), Some("rR"), Some("tT"), Some("gG"), Some("vV"), Some("cC")]);
        table.insert('G', vec![Some("fF"), Some("tT"), Some("yY"), Some("hH"), Some("bB"), Some("vV")]);
        table.insert('H', vec![Some("gG"), Some("yY"), Some("uU"), Some("jJ"), Some("nN"), Some("bB")]);
        table.insert('I', vec![Some("uU"), Some("8*"), Some("9("), Some("oO"), Some("kK"), Some("jJ")]);
        table.insert('J', vec![Some("hH"), Some("uU"), Some("iI"), Some("kK"), Some("mM"), Some("nN")]);
        table.insert('K', vec![Some("jJ"), Some("iI"), Some("oO"), Some("lL"), Some(",<"), Some("mM")]);
        table.insert('L', vec![Some("kK"), Some("oO"), Some("pP"), Some(";:"), Some(".>"), Some(",<")]);
        table.insert('M', vec![Some("nN"), Some("jJ"), Some("kK"), Some(",<"), None, None]);
        table.insert('N', vec![Some("bB"), Some("hH"), Some("jJ"), Some("mM"), None, None]);
        table.insert('O', vec![Some("iI"), Some("9("), Some("0)"), Some("pP"), Some("lL"), Some("kK")]);
        table.insert('P', vec![Some("oO"), Some("0)"), Some("-_"), Some("[{"), Some(";:"), Some("lL")]);
        table.insert('Q', vec![None, Some("1!"), Some("2@"), Some("wW"), Some("aA"), None]);
        table.insert('R', vec![Some("eE"), Some("4$"), Some("5%"), Some("tT"), Some("fF"), Some("dD")]);
        table.insert('S', vec![Some("aA"), Some("wW"), Some("eE"), Some("dD"), Some("xX"), Some("zZ")]);
        table.insert('T', vec![Some("rR"), Some("5%"), Some("6^"), Some("yY"), Some("gG"), Some("fF")]);
        table.insert('U', vec![Some("yY"), Some("7&"), Some("8*"), Some("iI"), Some("jJ"), Some("hH")]);
        table.insert('V', vec![Some("cC"), Some("fF"), Some("gG"), Some("bB"), None, None]);
        table.insert('W', vec![Some("qQ"), Some("2@"), Some("3#"), Some("eE"), Some("sS"), Some("aA")]);
        table.insert('X', vec![Some("zZ"), Some("sS"), Some("dD"), Some("cC"), None, None]);
        table.insert('Y', vec![Some("tT"), Some("6^"), Some("7&"), Some("uU"), Some("hH"), Some("gG")]);
        table.insert('Z', vec![None, Some("aA"), Some("sS"), Some("xX"), None, None]);
        table.insert('[', vec![Some("pP"), Some("-_"), Some("=+"), Some("]}"), Some("'\""), Some(";:")]);
        table.insert('\\', vec![Some("]}"), None, None, None, None, None]);
        table.insert(']', vec![Some("[{"), Some("=+"), None, Some("\\|"), None, Some("'\"")]);
        table.insert('^', vec![Some("5%"), None, None, Some("7&"), Some("yY"), Some("tT")]);
        table.insert('_', vec![Some("0)"), None, None, Some("=+"), Some("[{"), Some("pP")]);
        table.insert('`', vec![None, None, None, Some("1!"), None, None]);
        table.insert('a', vec![None, Some("qQ"), Some("wW"), Some("sS"), Some("zZ"), None]);
        table.insert('b', vec![Some("vV"), Some("gG"), Some("hH"), Some("nN"), None, None]);
        table.insert('c', vec![Some("xX"), Some("dD"), Some("fF"), Some("vV"), None, None]);
        table.insert('d', vec![Some("sS"), Some("eE"), Some("rR"), Some("fF"), Some("cC"), Some("xX")]);
        table.insert('e', vec![Some("wW"), Some("3#"), Some("4$"), Some("rR"), Some("dD"), Some("sS")]);
        table.insert('f', vec![Some("dD"), Some("rR"), Some("tT"), Some("gG"), Some("vV"), Some("cC")]);
        table.insert('g', vec![Some("fF"), Some("tT"), Some("yY"), Some("hH"), Some("bB"), Some("vV")]);
        table.insert('h', vec![Some("gG"), Some("yY"), Some("uU"), Some("jJ"), Some("nN"), Some("bB")]);
        table.insert('i', vec![Some("uU"), Some("8*"), Some("9("), Some("oO"), Some("kK"), Some("jJ")]);
        table.insert('j', vec![Some("hH"), Some("uU"), Some("iI"), Some("kK"), Some("mM"), Some("nN")]);
        table.insert('k', vec![Some("jJ"), Some("iI"), Some("oO"), Some("lL"), Some(",<"), Some("mM")]);
        table.insert('l', vec![Some("kK"), Some("oO"), Some("pP"), Some(";:"), Some(".>"), Some(",<")]);
        table.insert('m', vec![Some("nN"), Some("jJ"), Some("kK"), Some(",<"), None, None]);
        table.insert('n', vec![Some("bB"), Some("hH"), Some("jJ"), Some("mM"), None, None]);
        table.insert('o', vec![Some("iI"), Some("9("), Some("0)"), Some("pP"), Some("lL"), Some("kK")]);
        table.insert('p', vec![Some("oO"), Some("0)"), Some("-_"), Some("[{"), Some(";:"), Some("lL")]);
        table.insert('q', vec![None, Some("1!"), Some("2@"), Some("wW"), Some("aA"), None]);
        table.insert('r', vec![Some("eE"), Some("4$"), Some("5%"), Some("tT"), Some("fF"), Some("dD")]);
        table.insert('s', vec![Some("aA"), Some("wW"), Some("eE"), Some("dD"), Some("xX"), Some("zZ")]);
        table.insert('t', vec![Some("rR"), Some("5%"), Some("6^"), Some("yY"), Some("gG"), Some("fF")]);
        table.insert('u', vec![Some("yY"), Some("7&"), Some("8*"), Some("iI"), Some("jJ"), Some("hH")]);
        table.insert('v', vec![Some("cC"), Some("fF"), Some("gG"), Some("bB"), None, None]);
        table.insert('w', vec![Some("qQ"), Some("2@"), Some("3#"), Some("eE"), Some("sS"), Some("aA")]);
        table.insert('x', vec![Some("zZ"), Some("sS"), Some("dD"), Some("cC"), None, None]);
        table.insert('y', vec![Some("tT"), Some("6^"), Some("7&"), Some("uU"), Some("hH"), Some("gG")]);
        table.insert('z', vec![None, Some("aA"), Some("sS"), Some("xX"), None, None]);
        table.insert('{', vec![Some("pP"), Some("-_"), Some("=+"), Some("]}"), Some("'\""), Some(";:")]);
        table.insert('|', vec![Some("]}"), None, None, None, None, None]);
        table.insert('}', vec![Some("[{"), Some("=+"), None, Some("\\|"), None, Some("'\"")]);
        table.insert('~', vec![None, None, None, Some("1!"), None, None]);
        table
    };
    pub static ref DVORAK: HashMap<char, Vec<Option<&'static str>>> = {
        let mut table = HashMap::with_capacity(94);
        table.insert('!', vec![Some("`~"), None, None, Some("2@"), Some("'\""), None]);
        table.insert('"', vec![None, Some("1!"), Some("2@"), Some(",<"), Some("aA"), None]);
        table.insert('#', vec![Some("2@"), None, None, Some("4$"), Some(".>"), Some(",<")]);
        table.insert('$', vec![Some("3#"), None, None, Some("5%"), Some("pP"), Some(".>")]);
        table.insert('%', vec![Some("4$"), None, None, Some("6^"), Some("yY"), Some("pP")]);
        table.insert('&', vec![Some("6^"), None, None, Some("8*"), Some("gG"), Some("fF")]);
        table.insert('\'', vec![None, Some("1!"), Some("2@"), Some(",<"), Some("aA"), None]);
        table.insert('(', vec![Some("8*"), None, None, Some("0)"), Some("rR"), Some("cC")]);
        table.insert(')', vec![Some("9("), None, None, Some("[{"), Some("lL"), Some("rR")]);
        table.insert('*', vec![Some("7&"), None, None, Some("9("), Some("cC"), Some("gG")]);
        table.insert('+', vec![Some("/?"), Some("]}"), None, Some("\\|"), None, Some("-_")]);
        table.insert(',', vec![Some("'\""), Some("2@"), Some("3#"), Some(".>"), Some("oO"), Some("aA")]);
        table.insert('-', vec![Some("sS"), Some("/?"), Some("=+"), None, None, Some("zZ")]);
        table.insert('.', vec![Some(",<"), Some("3#"), Some("4$"), Some("pP"), Some("eE"), Some("oO")]);
        table.insert('/', vec![Some("lL"), Some("[{"), Some("]}"), Some("=+"), Some("-_"), Some("sS")]);
        table.insert('0', vec![Some("9("), None, None, Some("[{"), Some("lL"), Some("rR")]);
        table.insert('1', vec![Some("`~"), None, None, Some("2@"), Some("'\""), None]);
        table.insert('2', vec![Some("1!"), None, None, Some("3#"), Some(",<"), Some("'\"")]);
        table.insert('3', vec![Some("2@"), None, None, Some("4$"), Some(".>"), Some(",<")]);
        table.insert('4', vec![Some("3#"), None, None, Some("5%"), Some("pP"), Some(".>")]);
        table.insert('5', vec![Some("4$"), None, None, Some("6^"), Some("yY"), Some("pP")]);
        table.insert('6', vec![Some("5%"), None, None, Some("7&"), Some("fF"), Some("yY")]);
        table.insert('7', vec![Some("6^"), None, None, Some("8*"), Some("gG"), Some("fF")]);
        table.insert('8', vec![Some("7&"), None, None, Some("9("), Some("cC"), Some("gG")]);
        table.insert('9', vec![Some("8*"), None, None, Some("0)"), Some("rR"), Some("cC")]);
        table.insert(':', vec![None, Some("aA"), Some("oO"), Some("qQ"), None, None]);
        table.insert(';', vec![None, Some("aA"), Some("oO"), Some("qQ"), None, None]);
        table.insert('<', vec![Some("'\""), Some("2@"), Some("3#"), Some(".>"), Some("oO"), Some("aA")]);
        table.insert('=', vec![Some("/?"), Some("]}"), None, Some("\\|"), None, Some("-_")]);
        table.insert('>', vec![Some(",<"), Some("3#"), Some("4$"), Some("pP"), Some("eE"), Some("oO")]);
        table.insert('?', vec![Some("lL"), Some("[{"), Some("]}"), Some("=+"), Some("-_"), Some("sS")]);
        table.insert('@', vec![Some("1!"), None, None, Some("3#"), Some(",<"), Some("'\"")]);
        table.insert('A', vec![None, Some("'\""), Some(",<"), Some("oO"), Some(";:"), None]);
        table.insert('B', vec![Some("xX"), Some("dD"), Some("hH"), Some("mM"), None, None]);
        table.insert('C', vec![Some("gG"), Some("8*"), Some("9("), Some("rR"), Some("tT"), Some("hH")]);
        table.insert('D', vec![Some("iI"), Some("fF"), Some("gG"), Some("hH"), Some("bB"), Some("xX")]);
        table.insert('E', vec![Some("oO"), Some(".>"), Some("pP"), Some("uU"), Some("jJ"), Some("qQ")]);
        table.insert('F', vec![Some("yY"), Some("6^"), Some("7&"), Some("gG"), Some("dD"), Some("iI")]);
        table.insert('G', vec![Some("fF"), Some("7&"), Some("8*"), Some("cC"), Some("hH"), Some("dD")]);
        table.insert('H', vec![Some("dD"), Some("gG"), Some("cC"), Some("tT"), Some("mM"), Some("bB")]);
        table.insert('I', vec![Some("uU"), Some("yY"), Some("fF"), Some("dD"), Some("xX"), Some("kK")]);
        table.insert('J', vec![Some("qQ"), Some("eE"), Some("uU"), Some("kK"), None, None]);
        table.insert('K', vec![Some("jJ"), Some("uU"), Some("iI"), Some("xX"), None, None]);
        table.insert('L', vec![Some("rR"), Some("0)"), Some("[{"), Some("/?"), Some("sS"), Some("nN")]);
        table.insert('M', vec![Some("bB"), Some("hH"), Some("tT"), Some("wW"), None, None]);
        table.insert('N', vec![Some("tT"), Some("rR"), Some("lL"), Some("sS"), Some("vV"), Some("wW")]);
        table.insert('O', vec![Some("aA"), Some(",<"), Some(".>"), Some("eE"), Some("qQ"), Some(";:")]);
        table.insert('P', vec![Some(".>"), Some("4$"), Some("5%"), Some("yY"), Some("uU"), Some("eE")]);
        table.insert('Q', vec![Some(";:"), Some("oO"), Some("eE"), Some("jJ"), None, None]);
        table.insert('R', vec![Some("cC"), Some("9("), Some("0)"), Some("lL"), Some("nN"), Some("tT")]);
        table.insert('S', vec![Some("nN"), Some("lL"), Some("/?"), Some("-_"), Some("zZ"), Some("vV")]);
        table.insert('T', vec![Some("hH"), Some("cC"), Some("rR"), Some("nN"), Some("wW"), Some("mM")]);
        table.insert('U', vec![Some("eE"), Some("pP"), Some("yY"), Some("iI"), Some("kK"), Some("jJ")]);
        table.insert('V', vec![Some("wW"), Some("nN"), Some("sS"), Some("zZ"), None, None]);
        table.insert('W', vec![Some("mM"), Some("tT"), Some("nN"), Some("vV"), None, None]);
        table.insert('X', vec![Some("kK"), Some("iI"), Some("dD"), Some("bB"), None, None]);
        table.insert('Y', vec![Some("pP"), Some("5%"), Some("6^"), Some("fF"), Some("iI"), Some("uU")]);
        table.insert('Z', vec![Some("vV"), Some("sS"), Some("-_"), None, None, None]);
        table.insert('[', vec![Some("0)"), None, None, Some("]}"), Some("/?"), Some("lL")]);
        table.insert('\\', vec![Some("=+"), None, None, None, None, None]);
        table.insert(']', vec![Some("[{"), None, None, None, Some("=+"), Some("/?")]);
        table.insert('^', vec![Some("5%"), None, None, Some("7&"), Some("fF"), Some("yY")]);
        table.insert('_', vec![Some("sS"), Some("/?"), Some("=+"), None, None, Some("zZ")]);
        table.insert('`', vec![None, None, None, Some("1!"), None, None]);
        table.insert('a', vec![None, Some("'\""), Some(",<"), Some("oO"), Some(";:"), None]);
        table.insert('b', vec![Some("xX"), Some("dD"), Some("hH"), Some("mM"), None, None]);
        table.insert('c', vec![Some("gG"), Some("8*"), Some("9("), Some("rR"), Some("tT"), Some("hH")]);
        table.insert('d', vec![Some("iI"), Some("fF"), Some("gG"), Some("hH"), Some("bB"), Some("xX")]);
        table.insert('e', vec![Some("oO"), Some(".>"), Some("pP"), Some("uU"), Some("jJ"), Some("qQ")]);
        table.insert('f', vec![Some("yY"), Some("6^"), Some("7&"), Some("gG"), Some("dD"), Some("iI")]);
        table.insert('g', vec![Some("fF"), Some("7&"), Some("8*"), Some("cC"), Some("hH"), Some("dD")]);
        table.insert('h', vec![Some("dD"), Some("gG"), Some("cC"), Some("tT"), Some("mM"), Some("bB")]);
        table.insert('i', vec![Some("uU"), Some("yY"), Some("fF"), Some("dD"), Some("xX"), Some("kK")]);
        table.insert('j', vec![Some("qQ"), Some("eE"), Some("uU"), Some("kK"), None, None]);
        table.insert('k', vec![Some("jJ"), Some("uU"), Some("iI"), Some("xX"), None, None]);
        table.insert('l', vec![Some("rR"), Some("0)"), Some("[{"), Some("/?"), Some("sS"), Some("nN")]);
        table.insert('m', vec![Some("bB"), Some("hH"), Some("tT"), Some("wW"), None, None]);
        table.insert('n', vec![Some("tT"), Some("rR"), Some("lL"), Some("sS"), Some("vV"), Some("wW")]);
        table.insert('o', vec![Some("aA"), Some(",<"), Some(".>"), Some("eE"), Some("qQ"), Some(";:")]);
        table.insert('p', vec![Some(".>"), Some("4$"), Some("5%"), Some("yY"), Some("uU"), Some("eE")]);
        table.insert('q', vec![Some(";:"), Some("oO"), Some("eE"), Some("jJ"), None, None]);
        table.insert('r', vec![Some("cC"), Some("9("), Some("0)"), Some("lL"), Some("nN"), Some("tT")]);
        table.insert('s', vec![Some("nN"), Some("lL"), Some("/?"), Some("-_"), Some("zZ"), Some("vV")]);
        table.insert('t', vec![Some("hH"), Some("cC"), Some("rR"), Some("nN"), Some("wW"), Some("mM")]);
        table.insert('u', vec![Some("eE"), Some("pP"), Some("yY"), Some("iI"), Some("kK"), Some("jJ")]);
        table.insert('v', vec![Some("wW"), Some("nN"), Some("sS"), Some("zZ"), None, None]);
        table.insert('w', vec![Some("mM"), Some("tT"), Some("nN"), Some("vV"), None, None]);
        table.insert('x', vec![Some("kK"), Some("iI"), Some("dD"), Some("bB"), None, None]);
        table.insert('y', vec![Some("pP"), Some("5%"), Some("6^"), Some("fF"), Some("iI"), Some("uU")]);
        table.insert('z', vec![Some("vV"), Some("sS"), Some("-_"), None, None, None]);
        table.insert('{', vec![Some("0)"), None, None, Some("]}"), Some("/?"), Some("lL")]);
        table.insert('|', vec![Some("=+"), None, None, None, None, None]);
        table.insert('}', vec![Some("[{"), None, None, None, Some("=+"), Some("/?")]);
        table.insert('~', vec![None, None, None, Some("1!"), None, None]);
        table
    };
    pub static ref KEYPAD: HashMap<char, Vec<Option<&'static str>>> = {
        let mut table = HashMap::with_capacity(15);
        table.insert('*', vec![Some("/"), None, None, None, Some("-"), Some("+"), Some("9"), Some("8")]);
        table.insert('+', vec![Some("9"), Some("*"), Some("-"), None, None, None, None, Some("6")]);
        table.insert('-', vec![Some("*"), None, None, None, None, None, Some("+"), Some("9")]);
        table.insert('.', vec![Some("0"), Some("2"), Some("3"), None, None, None, None, None]);
        table.insert('/', vec![None, None, None, None, Some("*"), Some("9"), Some("8"), Some("7")]);
        table.insert('0', vec![None, Some("1"), Some("2"), Some("3"), Some("."), None, None, None]);
        table.insert('1', vec![None, None, Some("4"), Some("5"), Some("2"), Some("0"), None, None]);
        table.insert('2', vec![Some("1"), Some("4"), Some("5"), Some("6"), Some("3"), Some("."), Some("0"), None]);
        table.insert('3', vec![Some("2"), Some("5"), Some("6"), None, None, None, Some("."), Some("0")]);
        table.insert('4', vec![None, None, Some("7"), Some("8"), Some("5"), Some("2"), Some("1"), None]);
        table.insert('5', vec![Some("4"), Some("7"), Some("8"), Some("9"), Some("6"), Some("3"), Some("2"), Some("1")]);
        table.insert('6', vec![Some("5"), Some("8"), Some("9"), Some("+"), None, None, Some("3"), Some("2")]);
        table.insert('7', vec![None, None, None, Some("/"), Some("8"), Some("5"), Some("4"), None]);
        table.insert('8', vec![Some("7"), None, Some("/"), Some("*"), Some("9"), Some("6"), Some("5"), Some("4")]);
        table.insert('9', vec![Some("8"), Some("/"), Some("*"), Some("-"), Some("+"), None, Some("6"), Some("5")]);
        table
    };
    pub static ref MAC_KEYPAD: HashMap<char, Vec<Option<&'static str>>> = {
        let mut table = HashMap::with_capacity(16);
        table.insert('*', vec![Some("/"), None, None, None, None, None, Some("-"), Some("9")]);
        table.insert('+', vec![Some("6"), Some("9"), Some("-"), None, None, None, None, Some("3")]);
        table.insert('-', vec![Some("9"), Some("/"), Some("*"), None, None, None, Some("+"), Some("6")]);
        table.insert('.', vec![Some("0"), Some("2"), Some("3"), None, None, None, None, None]);
        table.insert('/', vec![Some("="), None, None, None, Some("*"), Some("-"), Some("9"), Some("8")]);
        table.insert('0', vec![None, Some("1"), Some("2"), Some("3"), Some("."), None, None, None]);
        table.insert('1', vec![None, None, Some("4"), Some("5"), Some("2"), Some("0"), None, None]);
        table.insert('2', vec![Some("1"), Some("4"), Some("5"), Some("6"), Some("3"), Some("."), Some("0"), None]);
        table.insert('3', vec![Some("2"), Some("5"), Some("6"), Some("+"), None, None, Some("."), Some("0")]);
        table.insert('4', vec![None, None, Some("7"), Some("8"), Some("5"), Some("2"), Some("1"), None]);
        table.insert('5', vec![Some("4"), Some("7"), Some("8"), Some("9"), Some("6"), Some("3"), Some("2"), Some("1")]);
        table.insert('6', vec![Some("5"), Some("8"), Some("9"), Some("-"), Some("+"), None, Some("3"), Some("2")]);
        table.insert('7', vec![None, None, None, Some("="), Some("8"), Some("5"), Some("4"), None]);
        table.insert('8', vec![Some("7"), None, Some("="), Some("/"), Some("9"), Some("6"), Some("5"), Some("4")]);
        table.insert('9', vec![Some("8"), Some("="), Some("/"), Some("*"), Some("-"), Some("+"), Some("6"), Some("5")]);
        table.insert('=', vec![None, None, None, None, Some("/"), Some("9"), Some("8"), Some("7")]);
        table
    };
}