Skip to content

Commit ac865a1

Browse files
author
Document updater
committed
Merge remote-tracking branch 'origin/master'
2 parents 058d52d + 3b2dd9a commit ac865a1

File tree

2 files changed

+18
-14
lines changed

2 files changed

+18
-14
lines changed

src/SUMMARY.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@
3535
* [Leaking](leaking.md)
3636
* [巻き戻し](unwinding.md)
3737
* [例外安全性](exception-safety.md)
38-
* [Poisoning](poisoning.md)
38+
* [ポイゾニング](poisoning.md)
3939
* [並行性](concurrency.md)
4040
* [Races](races.md)
4141
* [Send and Sync](send-and-sync.md)

src/poisoning.md

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,8 @@
1+
<!--
12
# Poisoning
3+
-->
4+
5+
# ポイゾニング
26

37
<!--
48
Although 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
812
panics could fail to correctly update the integer, producing an inconsistent
913
program state.
1014
-->
11-
全てのunsafeな型は最低限の例外安全性を満たしていることが**必要です**が、全ての
12-
unsafeな型が**最大限**の例外安全性を満たしている必要はありません。
15+
全てのアンセーフな型は最低限の例外安全性を満たしていることが**必要です**が、全ての
16+
アンセーフな型が**最大限**の例外安全性を満たしている必要はありません。
1317
仮に型自体が満たしていたとしても、実装が別の意味を暗黙に付与してしまう場合も
1418
あります。例えば整数型は間違いなく例外安全ですが、その(訳注: 最大限の例外安全性
1519
を担保する)セマンティクスを独自に持つわけではないため、整数をアップデートする
16-
際にpanicを起こすと、プログラムが一貫性のない状態に陥る可能性があります。
20+
際にパニックを起こすと、プログラムが一貫性のない状態に陥る可能性があります。
1721

1822
<!--
1923
This 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
<!--
3135
These 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
3539
MutexGuards (the thing it returns when a lock is obtained) is dropped during a
3640
panic. 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
<!--
4650
Mutex 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
5054
It is important to note that one cannot violate memory safety with such a type
5155
if 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

Comments
 (0)