@@ -41,7 +41,7 @@ DST を指すポインタは結果的に、普通のポインタと DST を補
41
41
There are two major DSTs exposed by the language: trait objects, and slices.
42
42
-->
43
43
44
- 言語が提供する DST のうち重要なものが 2 つあります。trait オブジェクトとスライスです 。
44
+ 言語が提供する DST のうち重要なものが 2 つあります。トレイトオブジェクトとスライスです 。
45
45
46
46
<!--
47
47
A trait object represents some type that implements the traits it specifies.
@@ -50,7 +50,7 @@ with a vtable containing all the information necessary to use the type.
50
50
This is the information that completes a trait object: a pointer to its vtable.
51
51
-->
52
52
53
- Trait オブジェクトは、それが指す Trait を実装するある型を表現します 。
53
+ トレイトオブジェクトは、それが指すトレイトを実装するある型を表現します 。
54
54
元となった型は消去されますが、vtable とリフレクションとによって実行時にはその型を利用することができます。
55
55
つまり、Trait オブジェクトを補完する情報とは vtable へのポインタとなります。
56
56
@@ -60,8 +60,8 @@ A slice is simply a view into some contiguous storage -- typically an array or
60
60
it points to.
61
61
-->
62
62
63
- スライスとは、単純にある連続したスペース(通常はアレイか ` Vec ` )のビューです。
64
- スライスを補完する情報とは、単にポインタが指すエレメントの数です 。
63
+ スライスとは、単純にある連続したスペース(通常は配列か ` Vec ` )のビューです。
64
+ スライスを補完する情報とは、単にポインタが指す要素の数です 。
65
65
66
66
<!--
67
67
Structs can actually store a single DST directly as their last field, but this
@@ -105,8 +105,8 @@ struct Foo; // フィールドがない = サイズ 0
105
105
// すべてのフィールドのサイズがない = サイズ 0
106
106
struct Baz {
107
107
foo : Foo ,
108
- qux : (), // empty tuple has no size
109
- baz : [u8 ; 0 ], // empty array has no size
108
+ qux : (), // 空のタプルにはサイズがありません
109
+ baz : [u8 ; 0 ], // 空の配列にはサイズがありません
110
110
}
111
111
```
112
112
@@ -120,7 +120,7 @@ type, so anything that loads it can just produce it from the aether -- which is
120
120
also a no-op since it doesn't occupy any space.
121
121
-->
122
122
123
- サイズ 0 の型(ZST)は、当然ながら、それ自体ではほとんど価値があありません 。
123
+ サイズ 0 の型(ZST)は、当然ながら、それ自体ではほとんど価値がありません 。
124
124
しかし、多くの興味深いレイアウトの選択肢と組み合わせると、ZST が潜在的に役に立つことがいろいろな
125
125
ケースで明らかになります。Rust は、ZST を生成したり保存したりするオペレーションが no-op に
126
126
還元できることを理解しています。
@@ -139,7 +139,7 @@ the compiler.
139
139
140
140
究極の ZST の利用法として、Set と Map を考えてみましょう。
141
141
` Map<Key, Value> ` があるときに、` Set<Key> ` を ` Map<Key, UselessJunk> ` の
142
- 簡単なラッパーとして実装することはよくあります 。
142
+ 簡単なラッパとして実装することはよくあります 。
143
143
多くの言語では、UselessJunk のスペースを割り当てる必要があるでしょうし、
144
144
結果的に使わない UselessJunk を保存したり読み込んだりする必要もあるでしょう。
145
145
こういったことが不要であると示すのはコンパイラにとっては難しい仕事でしょう。
@@ -165,7 +165,7 @@ may return `nullptr` when a zero-sized allocation is requested, which is
165
165
indistinguishable from out of memory.
166
166
-->
167
167
168
- 安全なコードは ZST について心配する必要はありませんが、* 危険な * コードは
168
+ 安全なコードは ZST について心配する必要はありませんが、* アンセーフな * コードは
169
169
サイズ 0 の型を使った時の結果について注意しなくてはなりません。
170
170
特に、ポインタのオフセットは no-op になることや、
171
171
(Rust のデフォルトである jemalloc を含む)標準的なメモリアロケータは、
@@ -208,7 +208,7 @@ this would require providing a value of type `Void`.
208
208
特定のケースでは絶対に失敗しないことがわかっているとします。
209
209
` Result<T, Void> ` を返すことで、この事実を型レベルで伝えることが可能です。
210
210
Void 型の値を提供することはできないので、この Result は Err に* なり得ないと静的にわかります* 。
211
- そのため、この API の利用者は、自信を持って Result を unwrap することができます 。
211
+ そのため、この API の利用者は、自信を持って Result をアンラップすることができます 。
212
212
213
213
<!--
214
214
In principle, Rust can do some interesting analyses and optimizations based
@@ -236,7 +236,7 @@ the ability to be confident that certain situations are statically impossible.
236
236
-->
237
237
238
238
ただし、どちらの例も現時点では動きません。
239
- つまり、Void 型による利点は、静的な解析によて 、特定の状況が起こらないと確実に言えることだけです。
239
+ つまり、Void 型による利点は、静的な解析によって 、特定の状況が起こらないと確実に言えることだけです。
240
240
241
241
<!--
242
242
One final subtle detail about empty types is that raw pointers to them are
@@ -246,10 +246,10 @@ type with `*const Void`, but this doesn't necessarily gain anything over using
246
246
e.g. `*const ()`, which *is* safe to randomly dereference.
247
247
-->
248
248
249
- 最後に細かいことを一つ。空の型を指す生のポインタを構成することは有効ですが 、
250
- それをデリファレンスすることは 、意味がないので、未定義の挙動となります。
249
+ 最後に細かいことを一つ。空の型を指す生ポインタを構成することは有効ですが 、
250
+ それを参照外しすることは 、意味がないので、未定義の挙動となります。
251
251
つまり、C における ` void * ` と同じような意味で ` *const Void ` を使うこと出来ますが、
252
- これは、* 安全に* デリファレンスできる型 (例えば ` *const () ` )と比べて何も利点はありません。
252
+ これは、* 安全に* 参照外しできる型 (例えば ` *const () ` )と比べて何も利点はありません。
253
253
254
254
255
255
[ dst-issue ] : https://github.com/rust-lang/rust/issues/26403
0 commit comments