Skip to content

Commit 094290f

Browse files
authoredJun 3, 2020
Fix repr-rust.md (#16)
* Fix sentence to make it natural * Translate "bits" It is not syntax word and translating it does not lose readability. * Fix typo * null -> ヌル * Translate "bit"
1 parent de74451 commit 094290f

File tree

1 file changed

+9
-9
lines changed

1 file changed

+9
-9
lines changed
 

‎src/repr-rust.md

+9-9
Original file line numberDiff line numberDiff line change
@@ -11,15 +11,15 @@ platform-specific behavior. In particular, on x86 `u64` and `f64` may be only
1111
aligned to 32 bits.
1212
-->
1313

14-
最初に重要なことは、すべての型はバイト単位で指定されたアラインメントに従います。
14+
最初に重要なこととして、すべての型はバイト単位で指定されたアラインメントに従います。
1515
ある型のアラインメントは、値を格納する有効なアドレスを規定します。
1616
アラインメント `n` の値は、`n` の倍数のアドレスにのみ格納できます。
1717
つまりアラインメント 2 は、偶数アドレスにのみ格納できることを意味し、
1818
アラインメント 1 はどこにでも格納できることになります。
1919
アラインメントの最小値は 1 で、常に 2 のべき乗になります。
2020
ほとんどのプリミティブ型はそのサイズにアラインメントされますが、
2121
これはプラットフォーム依存の挙動です。
22-
特に x86 では `u64``f64`32 bits にアラインされるかもしれません
22+
特に x86 では `u64``f64`32ビットにアラインされるかもしれません
2323

2424
<!--
2525
A type's size must always be a multiple of its alignment. This ensures that an
@@ -84,7 +84,7 @@ of 32-bits. It will potentially become:
8484
-->
8585

8686
この構造体は、メンバーのプリミティブ型が対応するサイズにアラインされるアーキテクチャでは、
87-
32-bit にアラインされます。そのため全体の構造体のサイズも 32 bit の倍数になります
87+
32ビットにアラインされます。そのため全体の構造体のサイズも 32ビットの倍数になります
8888
このようになるでしょう。
8989

9090
```rust
@@ -93,7 +93,7 @@ struct A {
9393
_pad1: [u8; 3], // `b` のアラインメントのため
9494
b: u32,
9595
c: u16,
96-
_pad2: [u8; 2], // 全体のサイズを 4 byte の倍数にするため
96+
_pad2: [u8; 2], // 全体のサイズを 4バイトの倍数にするため
9797
}
9898
```
9999

@@ -137,7 +137,7 @@ features of Rust make it desirable for the language to play with data layout in
137137
complex ways.
138138
-->
139139

140-
この A, B の例では、レイアウトのが保証されないなんて融通が利かないと思うかもしれませんが
140+
この A, B の例では、レイアウトが保証されないなんて融通が利かないと思うかもしれませんが
141141
他の機能を考えると、Rust がデータレイアウトを複雑にいじくれるようにするのは好ましいのです。
142142

143143
<!--
@@ -242,8 +242,8 @@ size_of::<&T>()`.
242242
-->
243243

244244
ところが、このような表現が非効率な場合もあります。
245-
わかりやすい例としては、Rust の "null ポインタ最適化" があります。
246-
これは、ある enum がデータを持たないメンバー(たとえば `None`)と、(ネストしてるかもしれない)null を取らないメンバー(たとえば `&T`)から構成される場合、null ポインタをデータを持たないメンバーと解釈することができるので、タグが不要になります。
245+
わかりやすい例としては、Rust の "ヌルポインタ最適化" があります。
246+
これは、ある enum がデータを持たないメンバー(たとえば `None`)と、(ネストしてるかもしれない)ヌルを取らないメンバー(たとえば `&T`)から構成される場合、ヌルポインタをデータを持たないメンバーと解釈することができるので、タグが不要になります。
247247
その結果、たとえば `size_of::<Optiona<&T>>() == size_of::<&T>()` となります。
248248

249249
<!--
@@ -256,12 +256,12 @@ special constrained representations. As such it is *especially* desirable that
256256
we leave enum layout unspecified today.
257257
-->
258258

259-
Rust には、null ポインタになりえない型や、null ポインタを含まない型がたくさんあります
259+
Rust には、ヌルポインタになりえない型や、ヌルポインタを含まない型がたくさんあります
260260
例えば `Box<T>`, `Vec<T>`, `String`, `&T`, `&mut T` などです。
261261
同様に、ネストした複数の enum が、タグを単一の判別子に押し込めることも考えられます。
262262
タグが取り得る値は、定義により限られているからです。
263263
原理的には、enum はとても複雑なアルゴリズムを使って、ネストした型を特別な制約のもとで表現し、
264-
bit を隠すことができるでしょう
264+
ビットを隠すことができるでしょう
265265
このため、enum のレイアウトを規定しないでおくことは、現状では *特に* 好ましいのです。
266266

267267

0 commit comments

Comments
 (0)
Please sign in to comment.