Ich arbeite an einer Exercism Übung und ich bin mit dieser konfrontiert:Learning Rust und Dokumentation
fn test_no_allergies_means_not_allergic() {
let allergies = Allergies::new(0);
assert_eq!(false, allergies.is_allergic_to(&Allergen::Peanuts));
assert_eq!(false, allergies.is_allergic_to(&Allergen::Cats));
assert_eq!(false, allergies.is_allergic_to(&Allergen::Strawberries));
}
Wenn ich Allergen::Peanuts
aussehen, denke ich, dass dies ein Symbol wie Ruby ist, aber ich kann‘ In der Dokumentation finden Sie nichts anderes als die Idee von Kisten und Modulen. Ich kann nicht scheinen zu denken, dass Allergen
ein Modul mit getrennten Kästen vor allem, weil die README
führt mich dazu:
Die Liste der Elemente (und deren Wert), die getestet wurden, sind:
- Eier (1)
- Erdnüsse (2)
- Krustentiere (4)
- Erdbeeren (8)
- Tomaten (16)
- Schokolade (32)
- Pollen (64)
- Katzen (128)
Also, wenn Tom zu Erdnüssen und Schokolade allergisch ist, bekommt er eine Punktzahl von 34.
Es muss eine Art Enum mit jedem dieser Werte und irgendeiner Art von Bitmaske sein, aber ich kann einfach keine Dokumentation finden, um mir mehr über die Symbole zu zeigen. Ich bin nicht bereit aufzugeben und ich möchte so viel wie möglich über Rust lernen, aber die Dokumente scheinen zu fehlen.
Hat jemand irgendwelche Vorschläge in Bezug auf Enums, Objekte, Symbole, und wo kann ich mehr Dokumentation in Bezug auf Rust bekommen?
Ich weiß, wie man die Bitmaske verwendet und es hat Bitverschiebung, die es ermöglicht, einen der Konstantenwerte zu vergleichen.Ich dachte über die Liste der Konstanten nach, dachte aber, dass es etwas Besseres gibt. Außerdem stimmen Ihre Konstanten überhaupt nicht mit dem Test überein. Ich kann die Tests nicht so ändern Allergen :: Erdnüsse ist, wie es leider nicht Schlange Fall angeben muss. Aber danke. – macshaggy
@macshaggy: Wie gesagt, Rust unterstützt Bit-Flags nativ nicht. (Sie könnten versuchen [C-Stil enum] (http://rustbyexample.com/custom_types/enum/c_like.html) aber sie funktionieren nicht wie Bit-Flags.) – kennytm
@macshaggy Wenn Sie die 'Bitflags' Kisten verwenden Die Konstanten sollten LIKE_THIS heißen, da sie als Modulkonstanten definiert sind und das ist die Standardbenennungskonvention. Man könnte es 'Cats' nennen und einen' mod Allegens {Kneipengebrauch {Cats, ...}} 'machen, aber das ist hässlich :). – kennytm