变量的寿命不够长

时间:2017-03-02 10:24:38

标签: rust lifetime

我是Rust的初学者,我在理解借用生命期的概念方面遇到了一些麻烦。

我编写了这个非常简单的代码来将文件内容读入字节数组。

fn file_to_bytes(filepath: &str)-> &[u8] {
    let mut s = String::new();
    let mut f = File::open("/home/rajiv/CodingIsFun/server/src/".to_owned()+filepath).unwrap();

    f.read_to_string(&mut s);
    let slice = s.as_str() ; 
    let bytes :&[u8] = slice.as_bytes() ;
    bytes
}

它给出了以下错误。

 error: `s` does not live long enough
  --> src/main.rs:36:17
   |
36 |     let slice = s.as_str() ; 
   |                 ^ does not live long enough
...
40 | }
   | - borrowed value only lives until here
   |
note: borrowed value must be valid for the anonymous lifetime #1 defined on the block at 31:41...
  --> src/main.rs:31:42
   |
31 | fn file_to_bytes(filepath: &str)-> &[u8] {

我在reddit上引用了这个thread,它说后来声明的变量首先被销毁,因此它们的生命周期将比上面声明的更短,这会导致错误。但我仍然无法理解我的代码有什么问题。

0 个答案:

没有答案