@@ -1515,7 +1515,7 @@ trait Error: Debug + Display {
1515
1515
<!-- following things: -->
1516
1516
このトレイトは極めて一般的です。
1517
1517
なぜなら、エラーを表す * 全て* の型で実装されることを目的としているからです。
1518
- この後すぐ見るように、このことが合成可能なコードを書くのに間違いなく役立ちます 。
1518
+ この後すぐ見るように、このことは合成可能なコードを書くのに間違いなく役立ちます 。
1519
1519
それ以外にも、このトレイトでは最低でも以下のようなことができます:
1520
1520
1521
1521
<!-- * Obtain a `Debug` representation of the error. -->
@@ -1651,8 +1651,8 @@ trait From<T> {
1651
1651
<!-- [set of implementations provided by the standard -->
1652
1652
<!-- library](../std/convert/trait.From.html). -->
1653
1653
嬉しいくらい簡単でしょ?
1654
- ` From ` は、ある特定の型 ` T ` から違う型へ変換するための汎用的な方法を提供するので大変便利です
1655
- (この場合の「違う型」とは実装の対象 、つまり ` Self ` です)。
1654
+ ` From ` は、ある特定の ` T ` という型 * から * 、別の型へ変換するための汎用的な方法を提供するので大変便利です
1655
+ (この場合の「別の型」とは実装の主体 、つまり ` Self ` です)。
1656
1656
` From ` を支えているのは [ 標準ライブラリで提供される一連の実装です] ( ../std/convert/trait.From.html ) 。
1657
1657
1658
1658
<!-- Here are a few simple examples demonstrating how `From` works: -->
@@ -1668,7 +1668,7 @@ let cow: ::std::borrow::Cow<str> = From::from("foo");
1668
1668
<!-- It turns out, there is one critical impl: -->
1669
1669
たしかに ` From ` が文字列を変換するのに便利なことはわかりました。
1670
1670
でもエラーについてはどうでしょうか?
1671
- 結論から言うと、これが最も重要な実装です :
1671
+ 結論から言うと、これが重要な実装です :
1672
1672
1673
1673
``` rust,ignore
1674
1674
impl<'a, E: Error + 'a> From<E> for Box<Error + 'a>
@@ -1713,7 +1713,7 @@ let err2: Box<Error> = From::from(parse_err);
1713
1713
<!-- its argument and its return type. -->
1714
1714
ここに気づくべき、本当に重要なパターンがあります。
1715
1715
` err1 ` と ` err2 ` の両方ともが * 同じ型* になっているのです。
1716
- なぜなら、それらが存在量型 、つまり、トレイトオブジェクトだからです。
1716
+ なぜなら、それらが存在量化型 、つまり、トレイトオブジェクトだからです。
1717
1717
特にそれらの背後の型は、コンパイラーの知識から * 消去されます* ので、 ` err1 ` と ` err2 ` が本当に同じに見えるのです。
1718
1718
さらに私たちは同じ関数呼び出し ` From::from ` を使って ` err1 ` と ` err2 ` をコンストラクトしました。
1719
1719
これは ` From::from ` が引数とリターン型の両方でオーバーロードされているからです。
@@ -1789,7 +1789,7 @@ fn file_double<P: AsRef<Path>>(file_path: P) -> Result<i32, String> {
1789
1789
<!-- section, `From` has an impl that lets it convert any error type into a -->
1790
1790
<!-- `Box<Error>`: -->
1791
1791
以前 ` map_err ` の呼び出しを取り除くことができると約束しました。
1792
- もちろんです。ここでしなければいけないのは ` From ` と共に動く型を一つ選ぶことです 。
1792
+ もちろんです。ここでしなければいけないのは ` From ` と共に動く型を一つ選ぶだけでよいのです 。
1793
1793
前の節で見たように ` From ` の実装の一つは、どんなエラー型でも ` Box<Error> ` に変換できます:
1794
1794
1795
1795
``` rust
@@ -1855,7 +1855,7 @@ fn file_double<P: AsRef<Path>>(file_path: P) -> Result<i32, Box<Error>> {
1855
1855
<!-- automatic type conversion for us by calling `From::from` on the error value. -->
1856
1856
<!-- In particular, we converted errors to `Box<Error>`, which works, but the type -->
1857
1857
<!-- is opaque to callers. -->
1858
- 最後の説では ` try! ` マクロの本当の定義を確認し、それが ` From::from ` をエラーの値に対して呼ぶことで、自動的な型変換をする様子を見ました。
1858
+ 最後の節では ` try! ` マクロの本当の定義を確認し、それが ` From::from ` をエラーの値に対して呼ぶことで、自動的な型変換をする様子を見ました。
1859
1859
特にそこでは、エラーを ` Box<Error> ` に変換しました。
1860
1860
これはたしかに動きますが、呼び出し元にとって、型がオペークになってしまいました。
1861
1861
@@ -1924,7 +1924,7 @@ impl From<num::ParseIntError> for CliError {
1924
1924
<!-- All these impls are doing is teaching `From` how to create a `CliError` from -->
1925
1925
<!-- other error types. In our case, construction is as simple as invoking the -->
1926
1926
<!-- corresponding value constructor. Indeed, it is *typically* this easy. -->
1927
- これらの実装がしていることは、` From ` に対して、どうやって他のエラー型を元に ` CliError ` を作るのかを教えてあげることです 。
1927
+ これらの実装がしていることは、` From ` に対して、どうやって他のエラー型を元に ` CliError ` を作るのか、教えてあげているだけです 。
1928
1928
このケースでは、単に対応する値コンストラクタを呼ぶことで構築しています。
1929
1929
本当に * 普通は* これくらい簡単にできてしまいます。
1930
1930
0 commit comments