Was kann ich am ehesten tun, um eine Aufzählung durch ein Zeichen zu unterscheiden?

Ich habe diese Frage viele Male ausgeschrieben und festgestellt, dass mein größtes Problem darin besteht, dass ich nicht weiß, wie ich diese Daten darstellen möchte, und das macht es wirklich schwierig, über den Rest des Codes nachzudenken.

Die Art und Weise, wie die Daten in Python dargestellt werden:

class LSP():
    C_MASK_MAP={
        "A":"Ch A",
        "B":"Ch B",
        "C":"Ch C",
        "D":"Ch D",
        "T":"Tmpr",
        "Y":"Batt",
        "L":"Acc"
    }

    ADC_CHANS= (
        "Ch A",
        "Ch B",
        "Ch C",
        "Ch D",
        "Tmpr",
        "Batt"
    )

    ADC_MAJORS = (
        "Ch A",
        "Ch B",
        "Ch C",
    )

Mein imaginärer Rust-Code (mir ist klar, dass die Namen aktualisiert werden müssen, hier jedoch aus Gründen der Klarheit dieselben sind):

enum C_MASK_MAP {
    Ch_A = 'A',
    Ch_B = 'B',
    Ch_C = 'C',
    Ch_D = 'D',
    Tmpr = 'T',
    Batt = 'Y',
    Acc  = 'L'
}
//...
let ADC_CHANS = [
    C_MASK_MAP::Ch_A,
    C_MASK_MAP::Ch_B,
    C_MASK_MAP::Ch_C,
    C_MASK_MAP::Ch_D,
    C_MASK_MAP::Tmpr,
    C_MASK_MAP::Batt
];

ADC_MAJORS = [
    C_MASK_MAP::Ch_A,
    C_MASK_MAP::Ch_B,
    C_MASK_MAP::Ch_C,
];

Ich habe darüber nachgedacht,C_MASK_MAP a HashMap<char, &'static str>, aber dann bin ich in ein riesiges Chaos geraten und habe versucht, keine Million Kopien des @ zu machstrs überall und Umgang mit Lebenszeiten unter Vermeidung vonStrings und das syntaktische Durcheinander, das auf ein statisches @ verweistr (&&'static str oder so)

Ich denke, es wäre ein echter Vorteil, eine Aufzählung (oder ähnliches) verwenden zu können, da die Werte nicht so groß wären und sich leichter austauschen lassenC_MASK_MAP.get(key).expect("invalid key") vs nur Gießen.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage