thread_local |
Processus léger local |
|---|---|
| Rust | |
Syntaxe
|
macro_rules! thread_local { () => { ... }; ($(#[$attr:meta])* $vis:vis static $name:ident: $t:ty = const $init:block; $($rest:tt)*) => { ... }; ($(#[$attr:meta])* $vis:vis static $name:ident: $t:ty = const $init:block) => { ... }; ($(#[$attr:meta])* $vis:vis static $name:ident: $t:ty = $init:expr; $($rest:tt)*) => { ... }; ($(#[$attr:meta])* $vis:vis static $name:ident: $t:ty = $init:expr) => { ... }; } |
Description
Cette macro permet de déclarer une variable locale à un processus léger, via une clef de type std::thread::LocalKey<T>.
Remarques
Déclarez une nouvelle clef d'entreposage locale de processus léger de type std::thread::LocalKey.
La macro encapsule un nombre illimité de déclarations statiques et les rend locales au processus léger. La publicité et les attributs de chaque déclaration statique sont autorisés. Exemple :
Notez que seules les références partagées (&T) aux données internes peuvent être obtenues. Un type tel que Cell ou RefCell est donc généralement utilisé pour autoriser l'accès par mutation.
Cette macro prend en charge une syntaxe const {} spéciale, utilisable lorsque l'expression d'initialisation peut être évaluée comme une constante. Cela permet une implémentation locale des processus légers plus efficace, évitant ainsi une initialisation différée. Pour les types qui n'ont pas besoin d'être supprimés, cela permet une implémentation encore plus efficace, sans suivi d'état supplémentaire.