1+ <!--
12# Poisoning
3+ -->
4+
5+ # ポイゾニング
26
37<!--
48Although all unsafe code *must* ensure it has minimal exception safety, not all
@@ -8,12 +12,12 @@ exception-safe, but has no semantics on its own. It's possible that code that
812panics could fail to correctly update the integer, producing an inconsistent
913program state.
1014-->
11- 全てのunsafeな型は最低限の例外安全性を満たしていることが ** 必要です** が、全ての
12- unsafeな型が ** 最大限** の例外安全性を満たしている必要はありません。
15+ 全てのアンセーフな型は最低限の例外安全性を満たしていることが ** 必要です** が、全ての
16+ アンセーフな型が ** 最大限** の例外安全性を満たしている必要はありません。
1317仮に型自体が満たしていたとしても、実装が別の意味を暗黙に付与してしまう場合も
1418あります。例えば整数型は間違いなく例外安全ですが、その(訳注: 最大限の例外安全性
1519を担保する)セマンティクスを独自に持つわけではないため、整数をアップデートする
16- 際にpanicを起こすと 、プログラムが一貫性のない状態に陥る可能性があります。
20+ 際にパニックを起こすと 、プログラムが一貫性のない状態に陥る可能性があります。
1721
1822<!--
1923This is *usually* fine, because anything that witnesses an exception is about
@@ -24,8 +28,8 @@ values across the panic boundary.
2428-->
2529これは** 通常は** 問題になることはありません。というのも例外を発見した処理は直後に
2630死ぬためです。例えばVecを別のスレッドに送り、そのスレッドがパニックし、結果として
27- Vecが奇妙な状態に陥ったとしても、dropされて永久に闇の彼方に葬られてしまうためです 。
28- とはいえ型によってはpanicの境界をまたいでくる場合もあります 。
31+ Vecが奇妙な状態に陥ったとしても、ドロップされて永久に闇の彼方に葬られてしまうためです 。
32+ とはいえ型によってはパニックの境界をまたいでくる場合もあります 。
2933
3034<!--
3135These types may choose to explicitly *poison* themselves if they witness a panic.
@@ -35,12 +39,12 @@ standard library's Mutex type. A Mutex will poison itself if one of its
3539MutexGuards (the thing it returns when a lock is obtained) is dropped during a
3640panic. Any future attempts to lock the Mutex will return an `Err` or panic.
3741-->
38- こういった型は、panicに直面した際に 、意図的に自分自身を** poison ** する可能性があり
39- ます。poisoningは自体は特に何か別の事態を引き起こすわけではありません 。一般的に
42+ こういった型は、パニックに直面した際に 、意図的に自分自身を** ポイゾン ** する可能性があり
43+ ます。ポイゾニング自体は特に何か別の事態を引き起こすわけではありません 。一般的に
4044通常の手続きの継続を止めるべきであることを表しています。よく知られた例として
41- 標準ライブラリのMutex型があります。この型は対応するMutexGuards(lockを取得した際に
42- 返るもの)が、panicによってdropされた際に自分自身をpoisonします。以後Mutexをlock
43- しようとすると` Err ` を返すかpanicします 。
45+ 標準ライブラリのMutex型があります。この型は対応するMutexGuards(ロックを取得した際に
46+ 返るもの)が、パニックによってドロップされた際に自分自身をポイゾンします。以後Mutexをロック
47+ しようとすると` Err ` を返すかパニックします 。
4448
4549<!--
4650Mutex poisons not for true safety in the sense that Rust normally cares about. It
@@ -50,8 +54,8 @@ middle of being modified, and as such may be in an inconsistent or incomplete st
5054It is important to note that one cannot violate memory safety with such a type
5155if it is correctly written. After all, it must be minimally exception-safe!
5256-->
53- Mutexのpoisonは 、通常の文脈で語られるRustの安全性とは異なる用途のためのものです。
54- Mutexを扱うスレッドがlock中にパニックを引き起こした場合 、Mutexの中のデータは変更中
57+ Mutexのポイゾンは 、通常の文脈で語られるRustの安全性とは異なる用途のためのものです。
58+ Mutexを扱うスレッドがロック中にパニックを引き起こした場合 、Mutexの中のデータは変更中
5559であった可能性が高く、一貫性を欠いていたり変更が未完了の状態であったりするため、
5660そのようなデータを盲目的に扱う危険性に対する安全装置として動作します。
5761注意しておきたいのはそのような型が適切に実装されていた場合、メモリ安全性** は** 確実
@@ -70,4 +74,4 @@ Just maybe nonsense.
7074として要件を満たさなかったような場合、そのデータ構造を利用するプログラムが作成者の
7175意図通りの挙動をするということは考えにくいです。通常とは異なる振る舞いをする
7276でしょう。とはいえ、十分に注意すればそのような場合でもその値が** 何かに** 使える
73- 可能性はあります。safe ** では** あるのです。ただ、ナンセンスかもしれませんが。
77+ 可能性はあります。安全 ** では** あるのです。ただ、ナンセンスかもしれませんが。
0 commit comments