@@ -73,7 +73,7 @@ Cライブラリは、スレッドセーフでないインターフェイスを
73
73
<!-- When declaring the argument types to a foreign function, the Rust compiler can -->
74
74
<!-- not check if the declaration is correct, so specifying it correctly is part of -->
75
75
<!-- keeping the binding correct at runtime. -->
76
- 他言語関数について引数の型を宣言するとき、Rustのコンパイラはその宣言が正しいかどうかを確認することができません。それを正しく指定することは、実行時のバインディングを正しく保つことの一部です 。
76
+ 他言語関数について引数の型を宣言するとき、Rustのコンパイラはその宣言が正しいかどうかを確認することができません。それを正しく指定することは実行時にバインディングを正しく動作させるために必要なことです 。
77
77
78
78
<!-- The `extern` block can be extended to cover the entire snappy API: -->
79
79
` extern ` ブロックはsnappyのAPI全体をカバーするように拡張することができます。
@@ -148,8 +148,8 @@ pub fn validate_compressed_buffer(src: &[u8]) -> bool {
148
148
<!-- `snappy_compress` function as an output parameter. An output parameter is also passed to retrieve -->
149
149
<!-- the true length after compression for setting the length. -->
150
150
` snappy_max_compressed_length ` 関数は、圧縮後の結果を保持するために必要な最大の容量のベクタを割り当てるために使うことができます。
151
- そして、そのベクタは結果の引数として ` snappy_compress ` 関数に渡されます。
152
- 結果の引数は 、長さをセットするために、圧縮後の本当の長さを取得するためにも渡されます。
151
+ そして、そのベクタは結果を受け取るための引数として ` snappy_compress ` 関数に渡されます。
152
+ 結果を受け取るための引数は 、長さをセットするために、圧縮後の本当の長さを取得するためにも渡されます。
153
153
154
154
``` rust
155
155
# #![feature(libc)]
@@ -206,7 +206,6 @@ pub fn uncompress(src: &[u8]) -> Option<Vec<u8>> {
206
206
dst . set_len (dstlen as usize );
207
207
Some (dst )
208
208
} else {
209
- # // None // SNAPPY_INVALID_INPUT
210
209
None // SNAPPY_INVALID_INPUT
211
210
}
212
211
}
@@ -308,7 +307,7 @@ void trigger_callback() {
308
307
<!-- the notification. This will allow the callback to unsafely access the -->
309
308
<!-- referenced Rust object. -->
310
309
これは、そのオブジェクトへの生ポインタをCライブラリに渡すことで実現できます。
311
- そして、Cのライブラリはその通知の中のRustのオブジェクトへのポインタを含むことができるようになります 。
310
+ そして、CのライブラリはRustのオブジェクトへのポインタをその通知の中に含むことができるようになります 。
312
311
これにより、そのコールバックは参照されるRustのオブジェクトにアンセーフな形でアクセスできるようになります。
313
312
314
313
<!-- Rust code: -->
@@ -442,7 +441,7 @@ void trigger_callback() {
442
441
異なる `kind` の値はリンク時のネイティブライブラリの使われ方の違いを意味します。
443
442
リンクの視点からすると、Rustコンパイラは2種類の生成物を作ります。
444
443
部分生成物(rlib/staticlib)と最終生成物(dylib/binary)です。
445
- ネイティブダイナミックライブラリとフレームワークの依存関係は最終生成物の境界を伝えますが 、スタティックライブラリの依存関係は全く伝えません。なぜなら、スタティックライブラリはその後に続く生成物に直接統合されてしまうからです。
444
+ ネイティブダイナミックライブラリとフレームワークの依存関係は最終生成物を作るときまで伝播され解決されますが 、スタティックライブラリの依存関係は全く伝えません。なぜなら、スタティックライブラリはその後に続く生成物に直接統合されてしまうからです。
446
445
447
446
<!-- A few examples of how this model can be used are: -->
448
447
このモデルをどのように使うことができるのかという例は次のとおりです。
@@ -453,13 +452,13 @@ void trigger_callback() {
453
452
<!-- Rust crate would declare a dependency via `#[link(name = "foo", kind = -->
454
453
<!-- "static")]`. -->
455
454
* ネイティブビルドの依存関係。
456
- ときどき、Rustのコードを書くときにC/C++のグルーが必要になりますが、ライブラリの形式でのC/C++のコードの配布はまさに重荷です 。
457
- このような場合、 `libfoo.a` からコードを得て 、それからRustのクレートで `#[link(name = "foo", kind = "static")]` によって依存関係を宣言します。
455
+ ときどき、Rustのコードを書くときにC/C++のグルーが必要になりますが、ライブラリの形式でのC/C++のコードの配布は重荷でしかありません 。
456
+ このような場合、 コードは `libfoo.a` にアーカイブされ 、それからRustのクレートで `#[link(name = "foo", kind = "static")]` によって依存関係を宣言します。
458
457
459
458
<!-- Regardless of the flavor of output for the crate, the native static library -->
460
459
<!-- will be included in the output, meaning that distribution of the native static -->
461
460
<!-- library is not necessary. -->
462
- クレートの出力の種類にかかわらず、ネイティブスタティックライブラリは出力に含まれます 。これは、ネイティブスタティックライブラリの配布は不要だということを意味します。
461
+ クレートの成果物の種類にかかわらず、ネイティブスタティックライブラリは成果物に含まれます 。これは、ネイティブスタティックライブラリの配布は不要だということを意味します。
463
462
464
463
<!-- * A normal dynamic dependency. Common system libraries (like `readline`) are -->
465
464
<!-- available on a large number of systems, and often a static copy of these -->
@@ -496,12 +495,12 @@ unsafe fn kaboom(ptr: *const i32) -> i32 { *ptr }
496
495
この関数は ` unsafe ` ブロック又は他の ` unsafe ` な関数からのみ呼び出すことができます。
497
496
498
497
<!-- # Accessing foreign globals -->
499
- # 他言語のグローバルな値へのアクセス
498
+ # 他言語のグローバル変数へのアクセス
500
499
501
500
<!-- Foreign APIs often export a global variable which could do something like track -->
502
501
<!-- global state. In order to access these variables, you declare them in `extern` -->
503
502
<!-- blocks with the `static` keyword: -->
504
- 他言語APIはしばしばグローバルな状態を追跡するようなことをするためのグローバルな値をエクスポートします 。
503
+ 他言語APIはしばしばグローバルな状態を追跡するようなことをするためのグローバル変数をエクスポートします 。
505
504
それらの値にアクセスするために、それらを ` extern ` ブロックの中で ` static ` キーワードを付けて宣言します。
506
505
507
506
``` no_run
@@ -582,15 +581,6 @@ extern "stdcall" {
582
581
これは ` extern ` ブロック全体に適用されます。
583
582
サポートされているABIの規則は次のとおりです。
584
583
585
- <!-- * `stdcall` -->
586
- <!-- * `aapcs` -->
587
- <!-- * `cdecl` -->
588
- <!-- * `fastcall` -->
589
- <!-- * `Rust` -->
590
- <!-- * `rust-intrinsic` -->
591
- <!-- * `system` -->
592
- <!-- * `C` -->
593
- <!-- * `win64` -->
594
584
* ` stdcall `
595
585
* ` aapcs `
596
586
* ` cdecl `
@@ -632,10 +622,10 @@ extern "stdcall" {
632
622
<!-- checking or mutability rules is not guaranteed to be safe, so prefer using raw -->
633
623
<!-- pointers (`*`) if that's needed because the compiler can't make as many -->
634
624
<!-- assumptions about them. -->
635
- Rust独自のボックス( ` Box<T> ` )はコンテンツオブジェクトを指すハンドルとして非ヌルポインタを使います 。
625
+ Rust独自のボックス( ` Box<T> ` )は包んでいるオブジェクトを指すハンドルとして非ヌルポインタを使います 。
636
626
しかし、それらは内部のアロケータによって管理されるため、手で作るべきではありません。
637
- 参照は型を直接指す非ヌルポインタとみなすことが間違いなくできます 。
638
- しかし、借用チェックやミュータブルについてのルールが破られた場合、安全性は保証されません。もしコンパイラが同数ほどそれらをみなすことができず、それが必要なときには 、生ポインタ( ` * ` )を使いましょう。
627
+ 参照は型を直接指す非ヌルポインタとみなすことが安全にできます 。
628
+ しかし、借用チェックやミュータブルについてのルールが破られた場合、安全性は保証されません。生ポインタについてはコンパイラは借用チェックやミュータブルほどには仮定を置かないので、必要なときには 、生ポインタ( ` * ` )を使いましょう。
639
629
640
630
<!-- Vectors and strings share the same basic memory layout, and utilities are -->
641
631
<!-- available in the `vec` and `str` modules for working with C APIs. However, -->
0 commit comments