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.