Rust Generycs

Rust Generycs
Witam Rustaceans. W tym celu zbadamy, co to jest generyczne i jak używać rodzajów ogólnych w języku rdzy. Wycieczki generyczne większość nowych początkujących rdzy, ale dołożymy wszelkich starań, aby było jak to możliwe, jak to możliwe.

Jeśli chcesz odkryć więcej tematów rdzy, sprawdź naszą listę rdzy, aby dowiedzieć się więcej.

Parametr

Podczas deklarowania typów ogólnych znajdziesz parametr. Jest używany do reprezentowania dowolnego rodzaju danych w rdzy:

Pokazany jest przykład parametru typu w funkcji:

fn my_function()

Powyższe określa funkcję ogólną, która przyjmuje argument t każdego typu.

Możesz zdefiniować wiele parametrów ogólnych, oddzielając je przecinkami:

fn my_function()

W powyższej składni definiujemy wiele parametrów ogólnych, t, u, v. Chociaż nie jest to wymagane, powszechne jest znalezienie typów ogólnych zaczynających się od t i zwiększając alfabet.

Rdza Zdefiniuj ogólną strukturę

Możemy zdefiniować strukturę ogólną, jak pokazano w poniższej składni:

struktura struktura
// STRUCT INFO

Weźmy przykład, struktura zdefiniowana poniżej:

struktura myStruct
To,
J: u,

fn main ()
Niech var1 = myStruct
I: 10,
J: „Cześć”
;
println!("X: ", var1.I);
println!(„Y: ”, var1.J);

Powyższe tworzy ogólną strukturę z dwoma parametrami. Wewnątrz struktury określamy dwa elementy struktury typu t i u. Ponieważ t i u są typami ogólnymi, mogą być dowolnego typu.

Funkcje ogólne

Ten sam konstrukt może być zastosowany do funkcji i metody. Jeśli funkcja przyjmuje typ, mówi się, że jest funkcją ogólną.

Ogólna definicja funkcji jest jak pokazana:

FN FUNC_NAME()
// Logika funkcji

Weźmy przykład ogólnej definicji funkcji poniżej:

FN Generic(var: t)
println!(„”, var);

fn main ()
Generic („HI”)

W tym przykładzie mamy ogólną funkcję, która przyjmuje dowolny typ i drukuje ją do konsoli. Jednak uruchomienie powyższego kodu spowoduje błąd.

Ponieważ używamy parametru ogólnego, musimy wdrożyć cechę wyświetlania lub debugowania, aby go wydrukować. Możemy udoskonalić kod jako:

Użyj std :: fmt :: debug;
FN Generic(var: t)
println!(":? ", var);

fn main ()
Generic („HI”)

W takim przypadku importujemy cechę debugowania i używamy jej dla typu ogólnego. Następnie możemy wydrukować wartość za pomocą symboli zastępczego cechy debugowania: :?

Ten sam przypadek ma zastosowanie, jeśli funkcja musi wykonywać dowolną operację. Weź poniższą funkcję przykładową, która zwraca 0, jeśli wartość jest równa, a 1, jeśli inaczej.

FN EVER_ODD (var: t) -> i32
Jeśli var % 2 == 0
powrót 0;
w przeciwnym razie
zwrot 1;

Jeśli wywołamy powyższą funkcję, zwróci błąd. Musimy wdrożyć cechę REM, aby działała jako:

Użyj std :: ops :: rem;
Użyj std :: cmp :: eq;
FN EVER_ODD + Eq> (var: t) -> i32

Cechy REM i EQ pozwalają korzystać z resztę operatora i przeprowadzić logiczne porównanie.

Wniosek

W tym artykule badaliśmy podstawy pracy z ogólnymi typami w języku rdzy. Sprawdź dokumenty, aby dowiedzieć się więcej.