@@ -12,9 +12,10 @@ of the same type. They are useful when you have a list of items, such as the
12
12
lines of text in a file or the prices of items in a shopping cart.
13
13
-->
14
14
15
- 最初に見るコレクション型は、` Vec<T> ` であり、これは* ベクタ* としても知られています。ベクタは、
16
- メモリ上に値を隣り合わせに並べる単独のデータ構造で、2つ以上の値を保持することができます。
17
- ベクタには、同じ型の値しか保持できません。要素のリストがある場合にベクタは有用です。
15
+ 最初に見るコレクション型は` Vec<T> ` であり、これは* ベクタ* としても知られています。
16
+ ベクタは単体のデータ構造でありながら複数の値を保持でき、それらの値をメモリ上に隣り合わせに並べます。
17
+ ベクタには同じ型の値しか保持できません。
18
+ 要素のリストがある場合にベクタは有用です。
18
19
例えば、テキストファイルの各行とか、ショッピングカートのアイテムの価格などです。
19
20
20
21
<!--
@@ -28,7 +29,7 @@ To create a new, empty vector, we can call the `Vec::new` function, as shown in
28
29
Listing 8-1.
29
30
-->
30
31
31
- 新しい空のベクタを作るには 、リスト8-1に示されたように、 ` Vec::new ` 関数を呼べばよいです 。
32
+ 空のベクタを新たに作るには 、リスト8-1に示すように ` Vec::new ` 関数を呼びます 。
32
33
33
34
``` rust
34
35
{{#rustdoc_include .. / listings / ch08 - common - collections / listing - 08 - 01 / src / main . rs: here }}
@@ -39,7 +40,7 @@ Listing 8-1.
39
40
of type `i32`</span>
40
41
-->
41
42
42
- <span class =" caption " >リスト8-1: 新しい空のベクタを生成して` i32 ` 型の値を保持する</span >
43
+ <span class =" caption " >リスト8-1: 新しい空のベクタを生成して` i32 ` 型の値を保持する</span >
43
44
44
45
<!--
45
46
Note that we added a type annotation here. Because we aren’t inserting any
@@ -52,12 +53,13 @@ angle brackets. In Listing 8-1, we’ve told Rust that the `Vec<T>` in `v` will
52
53
hold elements of the `i32` type.
53
54
-->
54
55
55
- ここで、型注釈を付けていることに注目してください。このベクタに対して、何も値を挿入していないので、
56
- コンパイラには、私達がどんなデータを保持させるつもりなのかがわからないのです。これは重要な点です。ベクタは、
57
- ジェネリクスを使用して実装されているのです; 独自の型でジェネリクスを使用する方法については、
58
- 第10章で解説します。今は、標準ライブラリにより提供されている` Vec<T> ` 型は、どんな型でも保持でき、
59
- 特定のベクタが特定の型を保持するとき、その型は山かっこ内に指定されることを知っておいてください。
60
- リスト8-1では、コンパイラに` v ` の` Vec<T> ` は、` i32 ` 型の要素を保持すると指示しました。
56
+ ここで、型注釈を付けていることに注目してください。
57
+ なぜなら、このベクタに対して何も値を挿入していないので、コンパイラには私たちがどんなデータを保持させるつもりか推測できないからです。
58
+ これは重要な点です。
59
+ ベクタはジェネリクスを使用して実装されています。
60
+ あなた自身の型でどうジェネリクスを使用するかついては第10章で解説します。
61
+ 現時点では標準ライブラリで提供される` Vec<T> ` 型は、どんな型でも保持でき、ある特定のベクタがある型を保持するとき、その型は山かっこ内に指定されることを知っておいてください。
62
+ リスト8-1では、コンパイラに` v ` の` Vec<T> ` は` i32 ` 型の要素を保持すると指示しました。
61
63
62
64
<!--
63
65
In more realistic code, Rust can often infer the type of value you want to
@@ -70,11 +72,11 @@ the default integer type, as we discussed in the [“Data Types”][data-types]
70
72
section of Chapter 3.
71
73
-->
72
74
73
- より現実的なコードでは、一旦値を挿入したら、コンパイラは保持させたい値の型をしばしば推論できるので、
74
- この型注釈をすることは滅多にありません。 初期値のある` Vec<T> ` を生成する方が一般的ですし、
75
- Rustには、利便性のために ` vec! ` というマクロも用意されています。このマクロは、
76
- 与えた値を保持する新しいベクタ型を生成します。 リスト8-2では、` 1 ` 、` 2 ` 、` 3 ` という値を持つ新しい` Vec<i32> ` を生成しています。
77
- 整数型を` i32 ` にしているのは、3章の[ 「データ型」] [ data-types ] 節で学んだようにこれが標準の整数型だからです 。
75
+ いったん値を挿入すれば、コンパイラは保持させたい値の型を多くの場合で推論できますので、より現実的なコードでは型注釈を付ける必要はほとんどないでしょう。
76
+ また、 初期値のある` Vec<T> ` を生成する方が一般的ですし、Rustには ` vec! ` という便利なマクロも用意されています。
77
+ このマクロは与えた値を保持する新しいベクタを生成します。
78
+ リスト8-2では、` 1 ` 、` 2 ` 、` 3 ` という値を持つ新しい` Vec<i32> ` を生成しています。
79
+ 整数型を` i32 ` にしているのは、3章の[ 「データ型」] [ data-types ] 節で学んだように、これが標準の整数型だからです 。
78
80
79
81
``` rust
80
82
{{#rustdoc_include .. / listings / ch08 - common - collections / listing - 08 - 02 / src / main . rs: here }}
@@ -93,8 +95,8 @@ is `Vec<i32>`, and the type annotation isn’t necessary. Next, we’ll look at
93
95
to modify a vector.
94
96
-->
95
97
96
- 初期値の` i32 ` 値を与えたので、コンパイラは、 ` v ` の型が` Vec<i32> ` であると推論でき、型注釈は必要なくなりました 。
97
- 次は、ベクタを変更する方法を見ましょう 。
98
+ 初期値の` i32 ` 値を与えたので、コンパイラは` v ` の型が` Vec<i32> ` であると推論でき、型注釈は不要になりました 。
99
+ 次はベクタを変更する方法を見ましょう 。
98
100
99
101
<!--
100
102
### Updating a Vector
@@ -107,7 +109,7 @@ To create a vector and then add elements to it, we can use the `push` method,
107
109
as shown in Listing 8-3.
108
110
-->
109
111
110
- ベクタを生成し、それから要素を追加するには、リスト8-3に示したように、 ` push ` メソッドを使用できます 。
112
+ ベクタを生成し、それから要素を追加するには、リスト8-3に示すように ` push ` メソッドを使います 。
111
113
112
114
``` rust
113
115
{{#rustdoc_include .. / listings / ch08 - common - collections / listing - 08 - 03 / src / main . rs: here }}
@@ -118,7 +120,7 @@ as shown in Listing 8-3.
118
120
vector</span>
119
121
-->
120
122
121
- <span class =" caption " >リスト8-3: ` push ` メソッドを使用してベクタ型に値を追加する </span >
123
+ <span class =" caption " >リスト8-3: ` push ` メソッドを使用してベクタに値を追加する </span >
122
124
123
125
<!--
124
126
As with any variable, if we want to be able to change its value, we need to
@@ -127,9 +129,8 @@ we place inside are all of type `i32`, and Rust infers this from the data, so
127
129
we don’t need the `Vec<i32>` annotation.
128
130
-->
129
131
130
- あらゆる変数同様、第3章で議論したように、値を変化させたかったら、` mut ` キーワードで可変にする必要があります。
131
- 中に配置する数値は全て` i32 ` 型であり、コンパイラはこのことをデータから推論するので、
132
- ` Vec<i32> ` という注釈は必要なくなります。
132
+ 第3章で説明したとおり、どんな変数でも、その値を変更したかったら` mut ` キーワードで可変にする必要があります。
133
+ 中に配置する数値は全て` i32 ` 型であり、Rustはこのことをデータから推論するので、` Vec<i32> ` という注釈は不要です。
133
134
134
135
<!--
135
136
### Dropping a Vector Drops Its Elements
@@ -142,8 +143,8 @@ Like any other `struct`, a vector is freed when it goes out of scope, as
142
143
annotated in Listing 8-4.
143
144
-->
144
145
145
- 他のあらゆる` struct ` (構造体)同様、ベクタもスコープを抜ければ、解放されます。リスト8-4に注釈したようにですね 。
146
-
146
+ 他のあらゆる` struct ` (構造体)と同様に、ベクタもスコープを抜ければ解放されます 。
147
+ その様子をリスト8-4に示します。
147
148
148
149
``` rust
149
150
{{#rustdoc_include .. / listings / ch08 - common - collections / listing - 08 - 04 / src / main . rs: here }}
@@ -154,7 +155,7 @@ annotated in Listing 8-4.
154
155
are dropped</span>
155
156
-->
156
157
157
- <span class =" caption " >リスト8-4: ベクタとその要素がドロップされる箇所を示す</span >
158
+ <span class =" caption " >リスト8-4: ベクタとその要素がドロップされる箇所を示す</span >
158
159
159
160
<!--
160
161
When the vector gets dropped, all of its contents are also dropped, meaning
@@ -163,9 +164,10 @@ straightforward point but can get a bit more complicated when you start to
163
164
introduce references to the elements of the vector. Let’s tackle that next!
164
165
-->
165
166
166
- ベクタがドロップされると、その中身もドロップされます。つまり、保持されていた整数値が、
167
- 片付けられるということです。これは一見単純に見えるかもしれませんが、ベクタの要素への参照を導入した途端、
168
- もうちょっと複雑になる可能性を秘めています。次は、それに挑んでいきましょう!
167
+ ベクタがドロップされると、その中身もドロップされます。
168
+ つまり、保持されていた整数値が片付けられるということです。
169
+ これは一見単純そうですが、ベクタの要素に対する参照を使い始めると少し複雑になり得ます。
170
+ 次はそれに挑んでいきましょう!
169
171
170
172
<!--
171
173
### Reading Elements of Vectors
@@ -180,16 +182,16 @@ value stored in a vector. In the examples, we’ve annotated the types of the
180
182
values that are returned from these functions for extra clarity.
181
183
-->
182
184
183
- ベクタを生成し、更新し、破壊する方法を知ったので、中身を読む方法を次に知ることにしましょう 。
184
- ベクタに保持された値を参照する方法は2つあります。これから示す例では、さらに明確にするため、
185
- これらの関数から返る値の型を注釈しました 。
185
+ ベクタを生成し、更新し、破棄する方法がわかったので、次のステップでは中身を読む方法について学ぶのが良いでしょう 。
186
+ ベクタに保持された値を参照する方法は2つあります。
187
+ これから示す例では、理解を助けるために、それらの関数からの戻り値型を注釈します 。
186
188
187
189
<!--
188
190
Listing 8-5 shows both methods of accessing a value in a vector, either with
189
191
indexing syntax or the `get` method.
190
192
-->
191
193
192
- リスト8-5に示したのは、両メソッドがベクタの値に対して、 添字記法と` get ` メソッドによりアクセスするところです 。
194
+ リスト8-5はベクタの値にアクセスする両方の方法として、 添字記法と` get ` メソッドが示されています 。
193
195
194
196
``` rust
195
197
{{#rustdoc_include .. / listings / ch08 - common - collections / listing - 08 - 05 / src / main . rs: here }}
@@ -200,7 +202,7 @@ indexing syntax or the `get` method.
200
202
access an item in a vector</span>
201
203
-->
202
204
203
- <span class =" caption " >リスト8-5: 添字記法か` get ` メソッドを使用してベクタの要素にアクセスする</span >
205
+ <span class =" caption " >リスト8-5: 添字記法か` get ` メソッドを使用してベクタの要素にアクセスする</span >
204
206
205
207
<!--
206
208
Note two details here. First, we use the index value of `2` to get the third
@@ -210,9 +212,10 @@ or by using the `get` method with the index passed as an argument, which gives
210
212
us an `Option<&T>`.
211
213
-->
212
214
213
- ここでは、2つのことに注目してください。まず、3番目の要素を得るのに` 2 ` という添え字の値を使用していることです:
214
- ベクタは、数値により順序付けされ、添え字は0から始まります。2番目に、3番目の要素を得る2つの方法とは、
215
- ` & ` と` [] ` を使用して参照を得るものと、番号を引数として` get ` メソッドに渡して、` Option<&T> ` を得るものだということです。
215
+ ここでは2つことに注目してください。
216
+ 1つ目は、3番目の要素を得るのに` 2 ` という添え字の値を使用していることです。
217
+ ベクタは番号で索引化されますが、その番号は0から始まります。
218
+ 2つ目は、3番目の要素を得る2つの方法とは、` & ` と` [] ` を使用して参照を得るものと、` get ` メソッドに引数として添字を渡して` Option<&T> ` を得るものだということです。
216
219
217
220
<!--
218
221
Rust has two ways to reference an element so you can choose how the program
@@ -222,9 +225,9 @@ that holds five elements and then tries to access an element at index 100, as
222
225
shown in Listing 8-6.
223
226
-->
224
227
225
- Rustには要素を参照する方法が2通りあるので、ベクタに要素が含まれない番号の値を使用しようとした時に、
226
- プログラムの振る舞いを選択できます。 例として、ベクタに5つ要素があるとして、添え字100の要素にアクセスを試みた場合、
227
- プログラムがどうなるのか確認しましょう。 リスト8-6に示したようにですね 。
228
+ Rustのベクタには要素を参照する方法が2通りあるので、ベクタに含まれない要素の添字を使おうとしたときのプログラムの振る舞いを選択できます。
229
+ 例として、ベクタに5つ要素があるとして、添字100の要素にアクセスを試みた場合、プログラムがどうなるのか確認しましょう。
230
+ リスト8-6に示します 。
228
231
229
232
``` rust,should_panic,panics
230
233
{{#rustdoc_include ../listings/ch08-common-collections/listing-08-06/src/main.rs:here}}
@@ -235,7 +238,7 @@ Rustには要素を参照する方法が2通りあるので、ベクタに要素
235
238
100 in a vector containing five elements</span>
236
239
-->
237
240
238
- <span class =" caption " >リスト8-6: 5つの要素を含むベクタの添え字100の要素にアクセスしようとする</span >
241
+ <span class =" caption " >リスト8-6: 5つの要素を含むベクタの添え字100の要素にアクセスしようとする</span >
239
242
240
243
<!--
241
244
When we run this code, the first `[]` method will cause the program to panic
@@ -244,8 +247,9 @@ want your program to crash if there’s an attempt to access an element past the
244
247
end of the vector.
245
248
-->
246
249
247
- このコードを走らせると、最初の` [] ` メソッドはプログラムをパニックさせます。存在しない要素を参照しているからです。
248
- このメソッドは、ベクタの終端を超えて要素にアクセスしようとした時にプログラムをクラッシュさせたい場合に最適です。
250
+ このコードを走らせると、最初の` [] ` メソッドはプログラムをパニックさせます。
251
+ なぜなら存在しない要素を参照しているからです。
252
+ このメソッドは、ベクタの終端を超えて要素にアクセスしようとしたときにプログラムをクラッシュさせたい場合に最適です。
249
253
250
254
<!--
251
255
When the `get` method is passed an index that is outside the vector, it returns
0 commit comments