我是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,它说后来声明的变量首先被销毁,因此它们的生命周期将比上面声明的更短,这会导致错误。但我仍然无法理解我的代码有什么问题。