@@ -105,10 +105,12 @@ fn foo() {
105105ベクタは [ ジェネリクス型] [ generics ] ` Vec<T> ` を持ちますので、この例における ` v ` は ` Vec<i32> ` 型になるでしょう。
106106ジェネリクスについては、この章の後の方で詳しく説明します。
107107
108- [ arrays ] : primitive-types.html#arrays
108+ [ arrays ] : primitive-types.html#配列
109109[ vectors ] : vectors.html
110- [ heap ] : the-stack-and-the-heap.html
111- [ stack ] : the-stack-and-the-heap.html#the-stack
110+ <!-- 訳注:原文では[heap]のリンク先が単に the-stack-and-the-heap.html となっていますが、 -->
111+ <!-- [stack]に合わせて、#ヒープ を追加しました -->
112+ [ heap ] : the-stack-and-the-heap.html#ヒープ
113+ [ stack ] : the-stack-and-the-heap.html#スタック
112114[ bindings ] : variable-bindings.html
113115[ generics ] : generics.html
114116
@@ -193,6 +195,9 @@ let x = 10;
193195Rustは [ スタック] [ sh ] 上に整数 [ i32] のためのメモリを割り当て、そこに、10という値を表すビットパターンをコピーします。
194196そして後から参照できるよう、変数名xをこのメモリ領域に束縛します。
195197
198+ <!-- 訳注:原文ではi32へのリンクが抜けているので、ここに追加しました -->
199+ [ i32 ] : primitive-types.html#数値型
200+
196201<!-- Now consider the following code fragment: -->
197202今度は、こんなコード片について考えてみましょう。
198203
@@ -232,8 +237,8 @@ let mut v2 = v;
232237<!-- `v` and `v2` at the same time. -->
233238` v ` を ` v2 ` にムーブするときRustが実際に行うのは、ビット単位のコピーを使って、ベクタオブジェクト ` v ` が示すスタック領域の情報を、 ` v2 ` が示すスタック領域へコピーすることです。
234239この浅いコピーでは、実際のデータを格納しているヒープ領域はコピーしません。
235- これはベクタに格納されたデータとして、ヒープ上の同一のメモリ領域を指すポインタが、2つできてしまうことを意味します 。
236- もし誰かが ` v ` と ` v2 ` に同時にアクセスしたら ?
240+ これは、ベクタの内容として、同一のヒープメモリ領域を指すポインタが2つあることを意味します 。
241+ もし誰かが ` v ` と ` v2 ` に同時にアクセスできるとしたら ?
237242これはデータ競合を持ち込むことになり、Rustの安全性保証に違反するでしょう。
238243
239244<!-- For example if we truncated the vector to just two elements through `v2`: -->
0 commit comments