回答編集履歴
2
誤字を修正しました。(ライフテイム → ライフタイム)
test
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
標準ライブラリーの
|
1
|
+
標準ライブラリーの`Result<T, E>`型は`T`と`E`という2つのジェネリックな型引数を持ちます。`Result<usize, &'static str>`なら、`T`の実引数が`usize`型、`E`の実引数が`&'static str`型になります。
|
2
2
|
|
3
3
|
|
4
4
|
|
@@ -12,7 +12,7 @@
|
|
12
12
|
|
13
13
|
|
14
14
|
|
15
|
-
次に`'static`について説明します。このように`'`で始まるものはライフ
|
15
|
+
次に`'static`について説明します。このように`'`で始まるものはライフタイム注釈です。これは参照やスライスに求めるライフタイム(生存期間)を指定するためのものです。
|
16
16
|
|
17
17
|
|
18
18
|
|
1
わかりやすさのために、語句を少し追加しました。
test
CHANGED
@@ -1,8 +1,8 @@
|
|
1
|
-
標準ライブラリーの `Result<T, E>` 型は`T`と`E`という2つのジェネリックな型引数を持ちます。`Result<usize, &'static str>`なら、`T`の実引数が`usize`、`E`の実引数が`&'static str`になります。
|
1
|
+
標準ライブラリーの `Result<T, E>` 型は`T`と`E`という2つのジェネリックな型引数を持ちます。`Result<usize, &'static str>`なら、`T`の実引数が`usize`型、`E`の実引数が`&'static str`型になります。
|
2
2
|
|
3
3
|
|
4
4
|
|
5
|
-
`&'static str`の`&'static`が何なのかについてですが、まず`&`の部分について説明します。`&`は参照またはスライスで、`&str`なら`str`を指す(不変の)スライスを意味します。`str`は文字列で、より正確にいうとUTF-8形式のバイト列を表します。`str`はスライスと
|
5
|
+
`&'static str`型の`&'static`が何なのかについてですが、まず`&`の部分について説明します。`&`は参照またはスライスで、`&str`なら`str`型の値を指す(不変の)スライスを意味します。`str`は文字列型の一種で、より正確にいうとUTF-8形式のバイト列を表します。`str`にはスライスを通さないとアクセスできないので、ほとんどの場合、その型を`&str`(UTF-8バイト列への不変スライス)または`&mut str`(UTF-8バイト列への可変スライス)のように表します。参照とスライスについては、以下の日本語ドキュメントで詳しく解説されています。
|
6
6
|
|
7
7
|
|
8
8
|
|
@@ -12,7 +12,7 @@
|
|
12
12
|
|
13
13
|
|
14
14
|
|
15
|
-
次に`'static`のように`'`で始まるものはライフテイム注釈です。これは参照やスライスに求めるライフタイム(生存期間)を指定するためのものです。
|
15
|
+
次に`'static`について説明します。このように`'`で始まるものはライフテイム注釈です。これは参照やスライスに求めるライフタイム(生存期間)を指定するためのものです。
|
16
16
|
|
17
17
|
|
18
18
|
|
@@ -72,4 +72,4 @@
|
|
72
72
|
|
73
73
|
|
74
74
|
|
75
|
-
ご質問のコードの引数型は`bool`で、これには`&`がついていません。そのため、戻り値型を`&str`にしたいときは`&'static str`にする必要があります。`"error message"`のような文字列リテラルは静的に存在するため`'static`なライフタイムを持ち、う
|
75
|
+
ご質問のコードの引数型は`bool`で、これには`&`がついていません。そのため、戻り値型を`&str`にしたいときは`&'static str`にする必要があります。`"error message"`のような文字列リテラルは静的に存在するため`'static`なライフタイムを持ち、戻り値型と型が合うのでコンパイルできます。
|