diff --git a/src/meet-safe-and-unsafe.md b/src/meet-safe-and-unsafe.md index 22caabd..23ade83 100644 --- a/src/meet-safe-and-unsafe.md +++ b/src/meet-safe-and-unsafe.md @@ -66,7 +66,7 @@ nonsense. 安全な Rust は真の Rust プログラミング言語です。もしあなたが安全な Rust だけでコードを書くなら、 型安全やメモリ安全性などを心配する必要はないでしょう。 -null ポインタや dangling ポインタ、馬鹿げた「未定義な挙動」などに我慢する必要はないのです。 +ヌルポインタやダングリングポインタ、馬鹿げた「未定義な挙動」などに我慢する必要はないのです。 -* 生のポインタが指す値を得る -* `unsafe` な関数を呼ぶ(C 言語で書かれた関数や、intrinsics、生のアロケータなど) -* `unsafe` な trait を実装する +* 生ポインタが指す値を得る +* `unsafe` な関数を呼ぶ(C 言語で書かれた関数や、intrinsic、生のアロケータなど) +* `unsafe` なトレイトを実装する * 静的な構造体を変更する -* null ポインタや dangling ポインタのデリファレンス +* ヌルポインタやダングリングポインタの参照外し * [未初期化のメモリ][uninitialized memory] を読む * [ポインタエイリアスルール][pointer aliasing rules] を破る * 不正なプリミティブな値を生成する - * dangling リファレンス、null リファレンス + * ダングリング参照、ヌル参照 * 0 でも 1 でもない `bool` 値 * 未定義な `enum` 判別式 - * [0x0, 0xD7FF] と [0xE000, 0x10FFFF] 範囲外の `char` 値 + * [0x0, 0xD7FF] と [0xE000, 0x10FFFF] 範囲外の `char` 値 * utf8 ではない `str` 値 * 他の言語に巻き戻す * [データ競合][race] を引き起こす @@ -183,9 +183,9 @@ intrinsics that make special assumptions about how code can be optimized. --> これだけです。これが、Rust が防ぐ「未定義な挙動」の原因です。 -もちろん、危険な関数や trait が「未定義な挙動」を起こさないための他の制約を作り出す事は可能ですが、 +もちろん、危険な関数やトレイトが「未定義な挙動」を起こさないための他の制約を作り出す事は可能ですが、 そういった制約が破られた場合、たいてい上の問題のどれかを引き起こします。 -コンパイラ intrinsics がその他の制約を生み出し、コードの最適化に関する特別な仮定をすることもあります。 +コンパイラ intrinsic がその他の制約を生み出し、コードの最適化に関する特別な仮定をすることもあります。 とはいえ、こういうことをできてしまうプログラムは*恐らく*間違っていると言えるでしょう。 -Rust はこういった事をおきにくくするためのツールをたくさん提供します。 +Rust はこういった事を起きにくくするためのツールをたくさん提供します。 しかし、これらの問題を完全に防ぐのは現実的ではないと考えられています。