Skip to content

Commit 62bd0b3

Browse files
authored
Merge pull request #145 from m-shaka/improve-ch15-00
feat: improve translation in ch15-00
2 parents 6fb4d00 + 4b7f71c commit 62bd0b3

File tree

1 file changed

+15
-17
lines changed

1 file changed

+15
-17
lines changed

src/ch15-00-smart-pointers.md

Lines changed: 15 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,8 @@ most often.
1515
-->
1616

1717
*ポインタ*は、メモリのアドレスを含む変数の一般的な概念です。このアドレスは、何らかの他のデータを参照、または「指します」。
18-
Rustにおいて、最もありふれた種類のポインタは、参照であり、第4章で習いましたね。参照は、
19-
`&`記号で示唆され、指している値を借用します。データを参照すること以外に特別な能力は何もありません。
20-
また、オーバーヘッドもなく、最も頻繁に使われる種類のポインタです。
18+
Rustにおいて最もありふれた種類のポインタは参照です。参照については第4章で習いましたね。参照は`&`記号で示唆され、指している値を借用します。データを参照すること以外に特別な能力は何もありません。
19+
また、オーバーヘッドもなく、ポインタの中では最も頻繁に使われます。
2120

2221
<!--
2322
*Smart pointers*, on the other hand, are data structures that not only act like
@@ -32,11 +31,11 @@ the data.
3231
-->
3332

3433
一方、*スマートポインタ*は、ポインタのように振る舞うだけでなく、追加のメタデータと能力があるデータ構造です。
35-
スマートポインタという概念は、Rustに特有のものではありません: スマートポインタは、C++に端を発し、
34+
スマートポインタという概念は、Rustに特有のものではありませんスマートポインタは、C++に端を発し、
3635
他の言語にも存在しています。Rustでは、標準ライブラリに定義された色々なスマートポインタが、
3736
参照以上の機能を提供します。この章で探究する一つの例が、*参照カウント*方式のスマートポインタ型です。
38-
このポインタにより、所有者の数を追いかけることでデータに複数の所有者を持たせることができ、
39-
所有者がいなくなったら、データの片付けをしてくれます
37+
このポインタのおかげでデータに複数の所有者を持たせることができます。
38+
所有者の数を追いかけ、所有者がいなくなったらデータの片付けをしてくれるからです
4039

4140
<!--
4241
In Rust, which uses the concept of ownership and borrowing, an additional
@@ -45,7 +44,7 @@ pointers that only borrow data; in contrast, in many cases, smart pointers
4544
*own* the data they point to.
4645
-->
4746

48-
所有権と借用の概念を使うRustで、参照とスマートポインタの別の差異は、参照はデータを借用するだけのポインタであることです;
47+
所有権と借用の概念を使うRustにおいて、参照とスマートポインタにはもう1つ違いがあります。参照はデータを借用するだけのポインタなのです。
4948
対照的に多くの場合、スマートポインタは指しているデータを*所有*します。
5049

5150
<!--
@@ -57,10 +56,9 @@ and extra capabilities or guarantees (such as with `String` ensuring its data
5756
will always be valid UTF-8).
5857
-->
5958

60-
その時は、スマートポインタとは呼ばなかったものの、第8章の`String``Vec<T>`のように、
61-
この本の中でいくつかのスマートポインタに遭遇してきました。これらの型はどちらも、
62-
あるメモリを所有し、それを弄ることができるので、スマートポインタに数えられます。また、
63-
メタデータ(キャパシティなど)や追加の能力、あるいは保証(`String`ならデータが常に有効なUTF-8であると保証することなど)もあります。
59+
私達はすでに、この本の中でいくつかのスマートポインタに遭遇してきました。例えば第8章の`String``Vec<T>`です。ただし、私達はそれらをスマートポインタとは呼んでいませんでした。
60+
これらの型がどちらもスマートポインタに数えられるのは、あるメモリを所有しそれを弄ることができるからです。
61+
また、メタデータ(キャパシティなど)や追加の能力、あるいは保証(`String`ならデータが常に有効なUTF-8であると保証することなど)もあります。
6462

6563
<!--
6664
Smart pointers are usually implemented using structs. The characteristic that
@@ -74,7 +72,7 @@ why they’re important to smart pointers.
7472
-->
7573

7674
スマートポインタは普通、構造体を使用して実装されています。スマートポインタを通常の構造体と区別する特徴は、
77-
スマートポインタは、`Deref``Drop`トレイトを実装していることです。`Deref`トレイトにより、スマートポインタ構造体のインスタンスは、
75+
スマートポインタが`Deref``Drop`トレイトを実装していることです。`Deref`トレイトにより、スマートポインタ構造体のインスタンスは、
7876
参照のように振る舞うことができるので、参照あるいはスマートポインタのどちらとも動作するコードを書くことができます。
7977
`Drop`トレイトにより、スマートポインタのインスタンスがスコープを外れた時に走るコードをカスタマイズすることができます。
8078
この章では、どちらのトレイトについても議論し、これらのトレイトがスマートポインタにとって重要な理由を説明します。
@@ -86,9 +84,9 @@ libraries have their own smart pointers, and you can even write your own. We’l
8684
cover the most common smart pointers in the standard library:
8785
-->
8886

89-
スマートポインタパターンがRustにおいてよく使われる一般的なデザインパターンだとして、この章では、全ての既存のスマートポインタを講義しません
90-
多くのライブラリに独自のスマートポインタがあり、自分だけのスマートポインタを書くことさえできます
91-
標準ライブラリの最もありふれたスマートポインタを講義します:
87+
スマートポインタパターンがRustにおいてよく使われる一般的なデザインパターンであることを考えれば、この章で既存のスマートポインタを全て取り扱うことなどできません
88+
多くのライブラリに独自のスマートポインタがあり、自分だけのスマートポインタを書くことさえできるのです
89+
ここでは標準ライブラリの最もありふれたスマートポインタを取り扱っていきます。
9290

9391
<!--
9492
* `Box<T>` for allocating values on the heap
@@ -107,8 +105,8 @@ type exposes an API for mutating an interior value. We’ll also discuss
107105
*reference cycles*: how they can leak memory and how to prevent them.
108106
-->
109107

110-
さらに、不変な型が、内部の値を可変化するAPIを晒す*内部可変性*パターンについても講義します
111-
また、*循環参照*についても議論します: 循環参照により、メモリがリークする方法とそれを回避する方法です
108+
さらに、*内部可変性*パターンも扱います。そこでは不変な型が、内部の値を変更するためのAPIを公開するのです
109+
また、*循環参照*についても議論します。つまり、循環参照によっていかにしてメモリがリークするのか、そしてどうやってそれを回避するのかを議論します
112110

113111
<!--
114112
Let’s dive in!

0 commit comments

Comments
 (0)