@@ -27097,9 +27097,9 @@ <h2><a class="header" href="#derefトレイトでスマートポインタを普
27097
27097
treated like a regular reference, you can write code that operates on
27098
27098
references and use that code with smart pointers too.
27099
27099
-->
27100
- <p><code>Deref</code>トレイトを実装することで<em>参照外し演算子</em>の<code>*</code>( 掛け算やグロブ演算子とは違います)の振る舞いをカスタマイズすることができます 。
27101
- スマートポインタを普通の参照のように扱えるように <code>Deref</code>を実装することで 、
27102
- 参照に対して処理を行うコードを書き、そのコードをスマートポインタとともにも使用できます 。</p>
27100
+ <p><code>Deref</code>トレイトを実装することで、 <em>参照外し演算子</em>の<code>*</code>( 掛け算やグロブ演算子とは違います)の振る舞いをカスタマイズできます 。
27101
+ <code>Deref</code>を実装してスマートポインタを普通の参照みたいに扱えるようにすれば 、
27102
+ 参照に対して処理を行うコードを書いて、そのコードをスマートポインタに対しても使うことができるのです 。</p>
27103
27103
<!--
27104
27104
Let’s first look at how dereference operator works with regular references.
27105
27105
Then we'll try to define a custom type that behaves like `Box<T>`, and see why
@@ -27109,10 +27109,10 @@ <h2><a class="header" href="#derefトレイトでスマートポインタを普
27109
27109
Rust’s *deref coercion* feature and how it lets us work with either references
27110
27110
or smart pointers.
27111
27111
-->
27112
- <p>まずは、参照外し演算子が普通の参照に対して動作するところを見ましょう。それから<code>Box<T></code>のように振る舞う独自の型を定義し、
27113
- 参照外し演算子が新しく定義した型に対して参照のように動作しない理由を確認しましょう 。
27114
- <code>Deref</code>トレイトを実装することでスマートポインタが参照と似た方法で動作するようにできる方法を探求します 。
27115
- そして、Rustの <em>参照外し型強制</em>機能と、それにより参照やスマートポインタと協調できる方法を見ます 。</p>
27112
+ <p>まずは、参照外し演算子が普通の参照に対して動作するところを見ましょう。それから、 <code>Box<T></code>のように振る舞う独自の型を定義してみましょう。
27113
+ 参照とは異なり、新しく定義した型には参照外し演算子を使えません。その理由を確認します 。
27114
+ <code>Deref</code>トレイトを実装すればスマートポインタは参照と同じように機能するので、そのやり方を調べましょう 。
27115
+ そして、Rustには <em>参照外し型強制</em>という機能があり、その機能のおかげで参照やスマートポインタをうまく使うことができるので、それに目を向けてみましょう 。</p>
27116
27116
<!--
27117
27117
### Following the Pointer to the Value with the Dereference Operator
27118
27118
-->
@@ -27123,8 +27123,8 @@ <h3><a class="header" href="#参照外し演算子で値までポインタを追
27123
27123
reference to an `i32` value and then use the dereference operator to follow the
27124
27124
reference to the data:
27125
27125
-->
27126
- <p>普通の参照は1種のポインタであり、ポインタの捉え方の一つが、どこか他の場所に格納された値への矢印としてです 。
27127
- リスト15-6で 、<code>i32</code>値への参照を生成し、それから参照外し演算子を使用して参照をデータまで追いかけています: </p>
27126
+ <p>普通の参照は1種のポインタであり、ポインタはどこか他の場所に格納された値への矢印と見なすことができます 。
27127
+ リスト15-6では 、<code>i32</code>値への参照を生成してから参照外し演算子を使ってデータまで参照を辿ります。 </p>
27128
27128
<!--
27129
27129
<span class="filename">Filename: src/main.rs</span>
27130
27130
-->
@@ -27150,14 +27150,14 @@ <h3><a class="header" href="#参照外し演算子で値までポインタを追
27150
27150
we have access to the integer value `y` is pointing to that we can compare with
27151
27151
`5`.
27152
27152
-->
27153
- <p>変数<code>x</code>は<code>i32</code>値の<code>5</code>を保持しています。<code>y</code>を <code>x</code>への参照にセットします 。<code>x</code>は<code>5</code>に等しいとアサートできます。
27154
- しかしながら、<code>y</code>の値に関するアサートを行いたい場合、<code>*y</code>を使用して参照を指している値まで追いかけなければなりません( そのため<em>参照外し</em>です) 。
27155
- 一旦、 <code>y</code>を参照外ししたら 、<code>y</code>が指している <code>5</code>と比較できる整数値にアクセスできます 。</p>
27153
+ <p>変数<code>x</code>は<code>i32</code>値の<code>5</code>を保持しています。<code>y</code>は <code>x</code>への参照として設定します 。<code>x</code>は<code>5</code>に等しいとアサートできます。
27154
+ しかしながら、<code>y</code>の値に関するアサートを行いたい場合、<code>*y</code>を使用して参照が指している値まで追いかけなければなりません( そのため<em>参照外し</em>です) 。
27155
+ 一旦<code>y</code>の参照を外せば 、<code>y</code>が指している整数値にアクセスできます。これは <code>5</code>と比較可能です 。</p>
27156
27156
<!--
27157
27157
If we tried to write `assert_eq!(5, y);` instead, we would get this compilation
27158
27158
error:
27159
27159
-->
27160
- <p>代わりに<code>assert_eq!(5, y);</code>と書こうとしたら、こんなコンパイルエラーが出るでしょう: </p>
27160
+ <p>代わりに<code>assert_eq!(5, y);</code>と書こうとしたら、こんなコンパイルエラーが出るでしょう。 </p>
27161
27161
<pre><code class="language-text">error[E0277]: the trait bound `{integer}: std::cmp::PartialEq<&{integer}>` is
27162
27162
not satisfied
27163
27163
(エラー: トレイト境界`{integer}: std::cmp::PartialEq<&{integer}>`は満たされていません)
@@ -27175,8 +27175,8 @@ <h3><a class="header" href="#参照外し演算子で値までポインタを追
27175
27175
different types. We must use the dereference operator to follow the reference
27176
27176
to the value it's pointing to.
27177
27177
-->
27178
- <p>参照と数値は異なる型なので、比較することは許容されていません 。参照外し演算子を使用して、
27179
- 参照を指している値まで追いかけなければならないのです 。</p>
27178
+ <p>数値と数値への参照の比較は許されていません。これらは異なる型だからです 。参照外し演算子を使用して、
27179
+ 参照が指している値まで追いかけなければならないのです 。</p>
27180
27180
<!--
27181
27181
### Using `Box<T>` Like a Reference
27182
27182
-->
@@ -27185,8 +27185,8 @@ <h3><a class="header" href="#boxtを参照のように使う" id="boxtを参照
27185
27185
We can rewrite the code in Listing 15-6 to use a `Box<T>` instead of a
27186
27186
reference; the dereference operator will work as shown in Listing 15-7:
27187
27187
-->
27188
- <p>リスト15-6のコードを参照の代わりに <code>Box<T></code>を使うように書き直すことができます;
27189
- 参照外し演算子は、リスト15-7に示したように動くでしょう: </p>
27188
+ <p>リスト15-6のコードを、参照の代わりに <code>Box<T></code>を使うように書き直すことができます。
27189
+ 参照外し演算子は、リスト15-7に示したように動くでしょう。 </p>
27190
27190
<!--
27191
27191
<span class="filename">Filename: src/main.rs</span>
27192
27192
-->
@@ -27212,10 +27212,10 @@ <h3><a class="header" href="#boxtを参照のように使う" id="boxtを参照
27212
27212
when `y` was a reference. Next, we’ll explore what is special about `Box<T>`
27213
27213
that enables us to use the dereference operator by defining our own box type.
27214
27214
-->
27215
- <p>リスト15-7とリスト15-6の唯一の違いは、ここでは、<code>x</code>の値を指す参照ではなく、
27216
- <code>x</code>の値を指すボックスのインスタンスに<code>y</code>をセットしていることです 。
27217
- 最後のアサートで参照外し演算子を使用して <code>y</code>が参照だった時のようにボックスのポインタを追いかけることができます 。
27218
- 次に、独自のボックス型を定義することで参照外し演算子を使用させてくれる <code>Box<T></code>について何が特別なのかを探究します 。</p>
27215
+ <p>リスト15-7とリスト15-6の唯一の違いは、ここでは<code>y</code>が 、<code>x</code>の値を指す参照ではなく、
27216
+ <code>x</code>の値を指すボックスのインスタンスとして設定されている点にあります 。
27217
+ 最後のアサートでは、参照外し演算子を使ってボックスのポインタを辿ることができます。これは <code>y</code>が参照だった時と同じやり方です 。
27218
+ 参照外し演算子が使える以上 <code>Box<T></code>には特別な何かがあるので、次はそれについて調べることにします。そのために、独自にボックス型を定義します 。</p>
27219
27219
<!--
27220
27220
### Defining Our Own Smart Pointer
27221
27221
-->
0 commit comments