Riješeno: eq za nabrajanja

Posljednje ažuriranje: 09/13/2023

Naravno! Idemo. Zapamtite da je Rust višeparadigmski jezik dizajniran za performanse i sigurnost, posebno za sigurnu istodobnost. Ima složen sistem za rukovanje enumima, što bi u početku moglo izgledati zastrašujuće.

Reddit ima zanimljivu izreku: “Rust je jezik koji se bori za vas, ali ne uvijek s vama.” Enumovi su obično tačka takmičenja kod mnogih programera. Ali kada se jednom savladaju, enume donose veću snagu i fleksibilnost vašem kodu.

Dakle, kako implementiramo Eq za nabrajanja u Rustu? Hajde da se dublje pozabavimo time.

## Jednaka osobina na enumima

Kada želite da uporedite enume u Rustu, trebalo bi da implementirate karakteristiku Equality (Eq). Osobina Eq predstavlja odnos ekvivalencije. Zahteva da relacija bude refleksivna, što znači da a treba da bude jednako samom sebi. Također, trebali bismo implementirati PartialEq koji tvrdi da su dvije vrijednosti ili jednake ili ne.

To se može učiniti na sljedeći način:

enum MyEnum {
varijanta1,
varijanta2,
}

impl PartialEq za MyEnum {
fn eq(&self, ostalo: &Self) -> bool {
podudaranje (sebi, drugi) {
(&MyEnum::Variant1, &MyEnum::Variant1) => istina,
(&MyEnum::Variant2, &MyEnum::Variant2) => istina,
_ => netačno,
}
}
}

impl Eq za MyEnum {}

Implementacija PartialEq je jednostavna. Provjerava da li su varijante enuma slične. Ako se podudaraju, vraća true; u suprotnom, vraća false. Obilježje Eq ne zahtijeva implementaciju bilo koje metode – to je samo marker osobina koja govori Rustu da je relacija ekvivalencije simetrična i tranzitivna po prirodi.

Za osobinu Eq nije potrebna nijedna funkcija za implementaciju. Ali osobina mora biti deklarirana da bi radila s funkcijom eq PartialEq.

## Sigurna upotreba enuma

Snaga ovih funkcija u Rustu je što čini pogrešan kod manje vjerovatnim. Rustovi enumi su “označene” unije. To znači da nose sa sobom „oznaku“ koja pokazuje kakva su trenutno, a Rust provjerava da li im pristupamo na način koji ima smisla.

Sa Rustom, ne možete nenamjerno protumačiti podatke kao pogrešnu varijantu. Iscrpno podudaranje Enuma garantuje da smo obradili svaki slučaj, što drastično smanjuje stopu pojave grešaka.

## Enums i Rust biblioteke

Brojne Rust biblioteke koriste enume za pružanje robusnog koda bez grešaka. Na primjer, popularni web framework Rocket koristi Enums za upravljanje kolačićima koji su ili privatni ili javni.

Razumijevanje kako raditi sa osobinama Enums i Eq je ključno za svakog Rustaceana jer im daje moć da pišu predvidljiv, siguran i robustan softver.

Kako Rust nastavlja da se razvija i raste, koncept enuma će vjerovatno postati još integralniji. Enums su trenutno vruća tema u Rustu i vjerovatno će doći do daljnjih poboljšanja i poboljšanja u narednim godinama.

Budućnost Rusta i enuma izgleda blistavo, i to je odlična prilika za programere da poboljšaju svoje Rust vještine.

Slični postovi: