1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
use page::Page;
use std::path::Path;
use std::io::Read;
use string::String;

pub enum Result<'a, T: 'a> {
    Ok(&'a mut T),
    Error,
}

pub fn read_to_string<'a>(page: &mut Page, path: &String) -> Result<'a, String> {
    let rust_string = path.as_rust_string();
    match ::std::fs::File::open(Path::new(&rust_string)) {
        Ok(mut f) => {
            Result::Ok({
                let mut rust_string = ::std::string::String::new();
                match f.read_to_string(&mut rust_string) {
                    Ok(_) => String::from_rust_string(page, rust_string),
                    Err(_) => String::from_rust_string(page, ::std::string::String::new()),
                }
            })
        }
        Err(_) => Result::Error,
    }
}