static
Статичні змінні будуть жити протягом усього часу виконання програми, тому не будуть переміщатися:
static BANNER: &str = "Ласкаво просимо до RustOS 3.14"; fn main() { println!("{BANNER}"); }
Як зазначено в Книзі Rust RFC, вони не підставляються під час використання та мають реальну асоційовану ділянку пам'яті. Це корисно для небезпечного та вбудованого коду, і змінна живе протягом усього виконання програми. Якщо значення глобальної області видимості не потребує ідентичності об’єкта, перевага надається const
.
This slide should take about 5 minutes.
static
схожий на мутабельні глобальні змінні в C++.static
забезпечує ідентичність об’єкта: адресу в пам’яті та стан відповідно до типів із внутрішньою змінністю, таких якMutex<T>
.
Більше інформації для вивчення
Оскільки static
змінні доступні з будь-якого потоку, вони повинні бути Sync
. Внутрішня змінність можлива через Mutex
, atomic або подібні до них.
Локальні дані потоку можна створити за допомогою макросу std::thread_local
.