/* Page prose (fr) */
"ActorIsolation" = "# Isolation d'actor: `await` à l'extérieur, synchrone à l'intérieur\n\nRegarde de nouveau comment on lit le solde depuis l'extérieur: `await ledger.balance`. Pourquoi le `await`?\n\nParce que l'actor pourrait être **occupé**. Quand tu appelles la méthode d'un actor ou lis son état mutable **depuis l'extérieur**, ta tâche peut avoir à attendre que celui qui est actuellement à l'intérieur finisse. Cette attente possible est un point de suspension, et en Swift chaque point de suspension est marqué avec `await`. C'est l'**isolation d'actor**: l'état mutable de l'actor est *isolé* dans l'actor, et ceux de l'extérieur ne l'atteignent qu'à travers `await`.\n\nÀ l'intérieur de l'actor, c'est différent. Le code qui s'exécute *au sein* de l'actor le tient déjà pour lui seul, donc il touche son propre état **de façon synchrone**, sans `await`.";
"ActorIsolation-2" = "**Observe l'exécution:** tu verras `Balance is now 50`, `Balance is now 75`, puis `Read from outside: 75`. Remarque le motif: **chaque** accès depuis le `Task` a nécessité `await`; rien à l'intérieur de `deposit` ou `report` ne l'a fait. À l'intérieur de l'actor, tu es déjà en tête de file.\n\n---\n\n## `nonisolated` pour l'état qui n'a pas besoin de protection\n\nTout dans un actor ne touche pas à l'état mutable. Un `let` immuable ne change jamais, donc le lire ne peut pas provoquer de course; il n'y a aucune raison de faire faire `await` à ceux qui l'appellent. Marque ces membres comme **`nonisolated`** pour les exclure de l'isolation:\n\n```swift\nactor Account {\n    let owner: String   // immutable, safe to read anytime\n    private(set) var balance: Int\n\n    init(owner: String, balance: Int) {\n        self.owner = owner\n        self.balance = balance\n    }\n\n    nonisolated var label: String {\n        \"Account for \\(owner)\"   // only reads the immutable `owner`\n    }\n\n    func deposit(_ amount: Int) {\n        balance += amount\n    }\n}\n\nlet account = Account(owner: \"Robin\", balance: 100)\nprint(account.label)   // no await, it's nonisolated\n```\n\nComme `label` ne lit que le `owner` immuable, il est déclaré `nonisolated` et tu l'appelles comme une propriété normale, sans `await`, sans attente. Le hic: un membre `nonisolated` **ne peut pas toucher l'état mutable de l'actor**. Essaie de lire `balance` depuis l'intérieur de `label` et le compilateur le rejette, parce que cet accès *aurait* besoin d'être protégé. Cette erreur, ce sont les règles d'isolation qui te gardent honnête.\n\n> Si tu ajoutais `balance` à la chaîne `label` ci-dessus, le compilateur rejetterait le code sur-le-champ, parce que les membres `nonisolated` ne peuvent pas toucher l'état isolé. Cette erreur est la règle d'isolation qui fonctionne comme prévu, pas un bug dans ton code.\n\n[Précédent](@previous)  |  page 3 sur 7  |  [Suivant: Réentrance](@next)";
