Przewodnik po Języku Rust Spis Treści

Znajomi Przyjaciele

Rozważmy kilka inteligentnych wskaźników, które już widzieliśmy, takie jak Vec<T> czy String.

Vec<T> to inteligentny wskaźnik, który po prostu posiada pewien region pamięci złożony z bajtów. Kompilator Rusta nie ma pojęcia, co istnieje w tych bajtach. Inteligentny wskaźnik interpretuje, co oznacza pobranie elementów z regionu pamięci, którym zarządza, śledzi, gdzie zaczynają się i kończą struktury danych wewnątrz tych bajtów, a na końcu dereferencjonuje surowy wskaźnik na struktury danych, tworząc ładny, przejrzysty i ergonomiczny interfejs, z którego możemy korzystać (np. my_vec[3]).

Podobnie, String śledzi region pamięci złożony z bajtów i programistycznie ogranicza treść zapisywaną w nim, tak, żeby zawsze stanowiła poprawne kodowanie utf-8, oraz pomaga dereferencjonować ten region pamięci do typu &str.

Obie te struktury danych korzystają z niebezpiecznej (unsafe) dereferencji surowych wskaźników, żeby wykonać swoją pracę.

Kilka szczegółów dotyczących pamięci: