質問するログイン新規登録

回答編集履歴

4

実行結果を追記しました

2018/08/20 04:09

投稿

tatsuya6502
tatsuya6502

スコア2055

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

最後の例にエラー時のテストケースを追加しました

2018/08/20 04:09

投稿

tatsuya6502
tatsuya6502

スコア2055

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

軽微な修正

2018/08/20 03:02

投稿

tatsuya6502
tatsuya6502

スコア2055

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).ok_or_else(|| "Please specify arg1.")?;
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()`の例のテストケースを修正しました

2018/08/20 02:58

投稿

tatsuya6502
tatsuya6502

スコア2055

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 = "5".to_string();
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
  ```