From 0b605219263b4ba7859b591bcfc4f9ea1fa8b880 Mon Sep 17 00:00:00 2001 From: Dragon-taro Date: Tue, 20 Aug 2019 23:17:46 +0900 Subject: [PATCH] result --- exercises/result/Cargo.lock | 2 +- exercises/result/src/main.rs | 23 +++++++++++++++++------ 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/exercises/result/Cargo.lock b/exercises/result/Cargo.lock index 031a13b..77d69c8 100644 --- a/exercises/result/Cargo.lock +++ b/exercises/result/Cargo.lock @@ -1,4 +1,4 @@ -[root] +[[package]] name = "result" version = "0.1.0" diff --git a/exercises/result/src/main.rs b/exercises/result/src/main.rs index facf996..752bf53 100644 --- a/exercises/result/src/main.rs +++ b/exercises/result/src/main.rs @@ -15,10 +15,14 @@ use std::fs::File; fn main() { let mut args = env::args(); if let Some(file) = args.nth(1) { - println!("{}", read_file(&file).unwrap()); - /* - println!("{}", read_file2(&file)); - */ + match read_file(&file) { + Ok(file) => println!("{}", file), + Err(err) => println!("no such file or directory") + } + match read_file2(&file) { + Ok(file) => println!("{}", file), + Err(err) => println!("{}", err) + } } } @@ -29,7 +33,14 @@ fn read_file(filename: &String) -> Result { Ok(content) } -fn read_file2(filename: &String) -> String { - String::new() +fn read_file2(filename: &String) -> Result { + File::open(filename) + .map_err(|err| err.to_string()) + .and_then(|mut file| { + let mut contents = String::new(); + file.read_to_string(&mut contents) + .map_err(|err| err.to_string()) + .map(|_| contents) + }) }