回答編集履歴
4
実行結果を追記しました
answer
CHANGED
@@ -89,4 +89,20 @@
|
|
89
89
|
// i32に変換できない文字列を与えるとエラー
|
90
90
|
assert!(add1("abc").is_err());
|
91
91
|
}
|
92
|
+
```
|
93
|
+
|
94
|
+
**実行結果**
|
95
|
+
|
96
|
+
```
|
97
|
+
# 正しいコマンドライン引数を与えた
|
98
|
+
$ cargo run -- 123
|
99
|
+
124
|
100
|
+
|
101
|
+
# 引数を与えなかった
|
102
|
+
$ cargo run --
|
103
|
+
Error: StringError("Please specify arg1.")
|
104
|
+
|
105
|
+
# 数値に変換できない値を与えた
|
106
|
+
$ cargo run -- abc
|
107
|
+
Error: ParseIntError { kind: InvalidDigit }
|
92
108
|
```
|
3
最後の例にエラー時のテストケースを追加しました
answer
CHANGED
@@ -85,5 +85,8 @@
|
|
85
85
|
assert_eq!(add1(&x).unwrap(), 6);
|
86
86
|
let x = "7"; // &str型
|
87
87
|
assert_eq!(add1(x).unwrap(), 8);
|
88
|
+
|
89
|
+
// i32に変換できない文字列を与えるとエラー
|
90
|
+
assert!(add1("abc").is_err());
|
88
91
|
}
|
89
92
|
```
|
2
軽微な修正
answer
CHANGED
@@ -32,7 +32,7 @@
|
|
32
32
|
// 引数を&str型にする。こうするとコンパイラの型強制というしくみを
|
33
33
|
// 使って、引数として&str型の値と、&String型の値の両方を取れるように
|
34
34
|
// なるので便利
|
35
|
-
fn add1(s: &str) -> i32{
|
35
|
+
fn add1(s: &str) -> i32 {
|
36
36
|
let a = s.parse::<i32>().unwrap();
|
37
37
|
a + 1 // 最後の式の値が返されるのでreturnキーワードは不要
|
38
38
|
}
|
@@ -68,7 +68,7 @@
|
|
68
68
|
// 注意:main関数からResult型を返すにはRust 1.26.0かそれ以降が必要
|
69
69
|
fn main() -> Result<(), Box<Error>> {
|
70
70
|
// String型
|
71
|
-
let arg1 = env::args().nth(1).
|
71
|
+
let arg1 = env::args().nth(1).ok_or("Please specify arg1.")?;
|
72
72
|
// &String → &strへ型強制する
|
73
73
|
println!("{}", add1(&arg1)?);
|
74
74
|
Ok(())
|
1
`nth()`の例のテストケースを修正しました
answer
CHANGED
@@ -38,7 +38,7 @@
|
|
38
38
|
}
|
39
39
|
|
40
40
|
#[test]
|
41
|
-
fn test_add1(){
|
41
|
+
fn test_add1() {
|
42
42
|
let x = "5".to_string(); // String型
|
43
43
|
assert_eq!(add1(&x), 6);
|
44
44
|
let x = "7"; // &str型
|
@@ -80,8 +80,10 @@
|
|
80
80
|
}
|
81
81
|
|
82
82
|
#[test]
|
83
|
-
fn test_add1(){
|
83
|
+
fn test_add1() {
|
84
|
-
let x
|
84
|
+
let x = "5".to_string(); // String型
|
85
|
-
assert_eq!(add1(&x), 6);
|
85
|
+
assert_eq!(add1(&x).unwrap(), 6);
|
86
|
+
let x = "7"; // &str型
|
87
|
+
assert_eq!(add1(x).unwrap(), 8);
|
86
88
|
}
|
87
89
|
```
|