iscsi_client_rs/models/data/
mod.rs1use std::collections::HashMap;
9
10use once_cell::sync::Lazy;
11
12use crate::models::data::asc_ascq_gen::ASC_ASCQ;
13
14mod asc_ascq_gen;
15pub mod common;
17pub mod request;
19pub mod response;
21pub mod sense_data;
23
24pub struct Entry {
26 code: usize,
27 desc: &'static str,
28}
29
30impl Entry {
31 #[inline]
33 pub fn lookup(asc: u8, ascq: u8) -> Option<&'static str> {
34 let k = ((asc as u16) << 8) | (ascq as u16);
35 ASC_ASCQ_MAP.get(&k).copied()
36 }
37}
38
39static ASC_ASCQ_MAP: Lazy<HashMap<u16, &'static str>> = Lazy::new(|| {
40 let mut m: HashMap<u16, &'static str> = HashMap::with_capacity(ASC_ASCQ.len());
41 for e in ASC_ASCQ {
42 let code = e.code as u16;
43 match m.get(&code) {
44 Some(cur) => {
45 if e.desc.len() < cur.len() {
46 m.insert(code, e.desc);
47 }
48 },
49 None => {
50 m.insert(code, e.desc);
51 },
52 }
53 }
54 m
55});