O valor emprestado não dura tempo suficiente ao criar um Vec
Nota do editor: Esta pergunta foi feita antes do Rust 1.0. Desde então, muitas funções e tipos foram alterados, assim como certas semânticas de idiomas. O código na pergunta não é mais válido, mas as idéias expressas nas respostas podem ser.
Estou tentando listar os arquivos em um diretório e copiar o nome do arquivo para o meu próprioVec
. Eu tentei várias soluções, mas sempre acaba com o problema de não conseguir criar variáveis vivas por tempo suficiente. Eu não entendo meu erro.
fn getList(action_dir_path : &str) -> Vec<&str> {
let v = fs::readdir(&Path::new(action_dir_path))
.unwrap()
.iter()
.map(|&x| x.filestem_str().unwrap())
.collect();
return v;
}
Por que o compilador reclama de "x"? Eu não ligo para x, quero o&str
dentro e pensei&str
eram estáticos.
Tentei dessa maneira, mas obtive o mesmo resultado com o compilador queixando-se de que "caminhos" não são suficientes.
fn getList2(action_dir_path : &str) -> Vec<&str> {
let paths = fs::readdir(&Path::new(action_dir_path)).unwrap();
let mut v : Vec<&str> = Vec::new();
for path in paths.iter(){
let aSlice = path.filestem_str().unwrap();
v.push(aSlice);
}
return v;
}
Aqui estáO parquinho.