Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

できるだけ自然な日本語にする #33

Merged
merged 12 commits into from
Jul 3, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion second-edition/src/appendix-07-nightly-rust.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<!-- # Appendix G - How Rust is Made and “Nightly Rust” -->

## 付録G: Rustが作られ方と“Nightly Rust”
## 付録G: Rustの作られ方と“Nightly Rust”

<!-- This appendix is about how Rust is made and how that affects you as a Rust -->
<!-- developer. We mentioned that the output in this book was generated by stable -->
Expand Down
2 changes: 1 addition & 1 deletion second-edition/src/ch04-01-what-is-ownership.md
Original file line number Diff line number Diff line change
Expand Up @@ -815,7 +815,7 @@ fn main() {
// i32はCopyなので、この後にxを使っても
// 大丈夫

} // ここでxがスコープを抜け、sも。だけど、sの値はムーブされてるので、何も特別なことはない
} // ここでxがスコープを抜け、sもスコープを抜ける。ただし、sの値はムーブされているので、何も特別なことは起こらない
//

fn takes_ownership(some_string: String) { // some_stringがスコープに入る。
Expand Down
4 changes: 2 additions & 2 deletions second-edition/src/ch11-03-test-organization.md
Original file line number Diff line number Diff line change
Expand Up @@ -272,8 +272,8 @@ test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out
<!-- integration test file has its own section, so if we add more files in the -->
<!-- *tests* directory, there will be more integration test sections. -->

単体テスト関数を追加すると、単体テスト区域のテスト結果の行が増えることに似て
作成した結合テストファイルにもっとテスト関数を追加すると、そのファイルの区域に行が増えることになります
単体テスト関数を追加することで単体テスト区域のテスト結果の行が増えたように
作成した結合テストファイルにテスト関数を追加することでそのファイルの区域に結果の行が増えることになります
結合テストファイルはそれぞれ独自の区域があるため、*tests*ディレクトリにさらにファイルを追加すれば、
結合テストの区域が増えることになるでしょう。

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -107,8 +107,7 @@ Trust me.";
追加直前の`search_case_insensitive`関数では、"rUsT"というクエリは、
両方ともクエリとは大文字小文字が異なるのに、大文字Rの"Rust:"を含む行と、
`“Trust me.”`という行にもマッチするはずです。これが失敗するテストであり、まだ`search_case_insensitive`関数を定義していないので、
コンパイルは失敗するでしょう。リスト12-16の`search`関数で行ったように空のベクタを常に返す実装の骨格を追加して、
ご自由にテストがコンパイルされ、失敗する様を確認してください。
コンパイルは失敗するでしょう。リスト12-16の`search`関数で行ったのと同様に空のベクタを常に返すような仮実装を追加し、テストがコンパイルされるものの、失敗する様をご自由に確認してください。

<!-- ### Implementing the `search_case_insensitive` Function -->

Expand Down
4 changes: 2 additions & 2 deletions second-edition/src/ch13-01-closures.md
Original file line number Diff line number Diff line change
Expand Up @@ -651,7 +651,7 @@ error[E0308]: mismatched types
<!-- difference between these traits in the "Capturing the Environment with -->
<!-- Closures" section; in this example, we can use the `Fn` trait. -->

`Fn`トレイトは、標準ライブラリで用意されています。全てのクロージャは、そのトレイトのどれかを実装しています:
`Fn`トレイトは、標準ライブラリで用意されています。全てのクロージャは、以下のいずれかのトレイトを実装しています:
`Fn`、`FnMut`または、`FnOnce`です。「クロージャで環境をキャプチャする」節で、これらのトレイト間の差異を議論します;
この例では、`Fn`トレイトを使えます。

Expand Down Expand Up @@ -701,7 +701,7 @@ struct Cacher<T>
<!-- > function rather than a closure where we need something that implements an `Fn` -->
<!-- > trait. -->

> 注釈: 関数も3つの`Fn`トレイト全部を実装します。したいことに環境から値をキャプチャすることが必要ないなら
> 注釈: 関数も3つの`Fn`トレイト全部を実装します。もし環境から値をキャプチャする必要がなければ
> `Fn`トレイトを実装する何かが必要になるクロージャではなく、関数を使用できます。

<!-- The `value` field is of type `Option<u32>`. Before we execute the closure, -->
Expand Down
3 changes: 1 addition & 2 deletions second-edition/src/ch13-03-improving-our-io-project.md
Original file line number Diff line number Diff line change
Expand Up @@ -263,8 +263,7 @@ impl Config {
<!-- We can also take advantage of iterators in the `search` function in our I/O -->
<!-- project, which is reproduced here in Listing 13-28 as it was in Listing 12-19: -->

入出力プロジェクトの`search`関数でも、イテレータを活用することができ、その関数は、
リスト12-19のように、ここリスト13-28に再現しました。
入出力プロジェクトの`search`関数でも、イテレータを活用することができます。その関数はリスト12-19に示していますが、以下のリスト13-28に再掲します。

<!-- <span class="filename">Filename: src/lib.rs</span> -->

Expand Down
2 changes: 1 addition & 1 deletion second-edition/src/ch19-02-advanced-lifetimes.md
Original file line number Diff line number Diff line change
Expand Up @@ -151,7 +151,7 @@ Rustコンパイラのエラーメッセージは、これらの参照にライ
<!-- returns. This code doesn’t quite work. -->

次にリスト19-14では、`Context`のインスタンスを1つ取り、`Parser`を使ってその文脈をパースし、
`parse`が返すものを返す関数を追加します。このコードはあまり動きません
`parse`が返すものを返す関数を追加します。このコードは期待通りに動きません

<!-- <span class="filename">Filename: src/lib.rs</span> -->

Expand Down
10 changes: 5 additions & 5 deletions second-edition/src/ch19-04-advanced-types.md
Original file line number Diff line number Diff line change
Expand Up @@ -241,8 +241,8 @@ pub trait Write {
<!-- because it stands in the place of the return type when a function will never -->
<!-- return. Here is an example: -->

Rustには、型理論用語で値がないため、空型として知られる`!`という特別な型があります。私たちは、
関数が絶対に返らない時に戻り値の型の場所に立つので、*never type*(`訳注`: 日本語にはできないので、never型と呼ぶしかないか)と呼ぶのが好きです。
Rustには、`!`という名前の特別な型があります。それは型理論の専門用語では *Empty型* と呼ばれ値なしを表します。私たちは、
関数が値を返すことが決して (never) ない時に戻り値の型を記す場所に使われるので、*never type*(`訳注`: 日本語にはできないので、never型と呼ぶしかないか)と呼ぶのが好きです。
こちらが例です:

```rust,ignore
Expand All @@ -256,13 +256,13 @@ fn bar() -> ! {
<!-- so `bar` can never possibly return. -->

このコードは、「関数`bar`はneverを返す」と解読します。neverを返す関数は、*発散する関数*(diverging function)と呼ばれます。
型`!`の値は生成できないので、`bar`が返ることは絶対にあり得ません
型`!`の値は生成できないので、`bar`からリターンする(呼び出し元に制御を戻す)ことは決してできません

<!-- But what use is a type you can never create values for? Recall the code from -->
<!-- Listing 2-5; we’ve reproduced part of it here in Listing 19-34. -->

ですが、値を絶対に生成できない型をどう使用するのでしょうか?リスト2-5のコードを思い出してください;
リスト19-34に一部を再現しました
リスト19-34に一部を再掲します

```rust
# let guess = "3";
Expand Down Expand Up @@ -383,7 +383,7 @@ loop {
<!-- size we can know only at runtime. -->

コンパイラが特定の型の値1つにどれくらいのスペースのメモリを確保するのかなどの特定の詳細を知る必要があるために、
型システムには混乱することもある秘密の場所があります: *動的サイズ付け型*の概念です。時として*DST*や*サイズなし型*とも称され、
Rustの型システムには混乱を招きやすい細かな仕様があります: *動的サイズ付け型*の概念です。時として*DST*や*サイズなし型*とも称され、
これらの型により、実行時にしかサイズを知ることのできない値を使用するコードを書かせてくれます。

<!-- Let’s dig into the details of a dynamically sized type called `str`, which -->
Expand Down
4 changes: 2 additions & 2 deletions second-edition/src/ch20-01-single-threaded.md
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ $ cd hello
<!-- an incoming stream, it will print `Connection established!`. -->

さて、リスト20-1のコードを*src/main.rs*に入力して始めてください。このコードは、
やってくるTCPストリームを求めて`127.0.0.1:7878`というアドレスをリッスンします。
TCPストリームを受信するため`127.0.0.1:7878`というアドレスをリッスンします。
入力ストリームを得ると、`Connection established!`と出力します。

<!-- <span class="filename">Filename: src/main.rs</span> -->
Expand Down Expand Up @@ -296,7 +296,7 @@ fn handle_connection(mut stream: TcpStream) {
2番目にバッファーのバイトを文字列に変換し、その文字列を出力します。`String::from_utf8_lossy`関数は、
`&[u8]`を取り、`String`を生成します。名前の“lossy”の箇所は、無効なUTF-8シーケンスを目の当たりにした際のこの関数の振る舞いを示唆しています:
無効なシーケンスを`�`、`U+FFFD REPLACEMENT CHARACTER`で置き換えます。
置き換え文字をリクエストデータによって埋められたバッファーの文字の箇所に目撃する可能性があります
リクエストデータによって埋められなかったバッファーの部分(`訳注` バッファーとして512バイトの領域を用意しているが、リクエストデータは512バイト存在しないことがほとんどなので変数 `buffer` の後ろ部分が埋められないまま放置されることを意図していると思われる) が置き換え文字になって表示されるのをみるでしょう

<!-- Let’s try this code! Start the program and make a request in a web browser -->
<!-- again. Note that we’ll still get an error page in the browser, but our -->
Expand Down
4 changes: 2 additions & 2 deletions second-edition/src/ch20-02-multithreaded.md
Original file line number Diff line number Diff line change
Expand Up @@ -1401,8 +1401,8 @@ std::ops::FnOnce() + std::marker::Sendのサイズを静的に決定できませ
<!-- People just like you are working to fix this and other issues! After you’ve -->
<!-- finished this book, we would love for you to join in. -->

Rustは、コンパイラが改善できる箇所ではまだ、発展途上にありますが、将来的にリスト20-20のコードは、
ただ単純にうまく動くはずです。まさしくあなたのような方がこれや他の問題を修正するのに取り掛かっています!この本を完了したら、
Rustはまだコンパイラの改善途上にあり、リスト20-20のコードは、
将来的にうまく動くようになるべきです。まさしくあなたのような方がこれや他の問題を修正しています!この本を完了したら、
是非ともあなたにも参加していただきたいです。

<!-- But for now, let’s work around this problem using a handy trick. We can tell -->
Expand Down