语境
无法使此功能正常工作.我相信我明白这些错误试图告诉我什么,但我不明白我是如何犯下这些错误/如何解决它们的.
该函数是一个递归函数,它查看一个目录及其子目录,并累积路径的一个向量和一个Axum方法路由(我认为这与我面临的实际问题没有任何关系).
误差率
编译器错误状态为"无法返回引用局部变量path
的值."
如果我用path.clone().to_str()
替换path.to_str()
,错误变成"Cannot Return Value Refering Temporary Value".
代码
fn assign_handlers(dir: Option<&str>) -> Vec<(&str, MethodRouter)> {
//Check root dir validity
let dir = match dir {
Some(s) => s,
None => return vec![],
};
//Look for routes in dir
let dir_path = fs::read_dir(dir).expect(&format!("Unable to access directory '{}'", &dir));
let mut routes = Vec::new();
for entry in dir_path {
match entry {
Ok(entry) => {
let path = entry.path();
if path.is_dir() {
//Recurse into subdirectories
let subroutes = assign_handlers(path.to_str());
for route in subroutes {
routes.push(route)
}
} else if path.is_file() {
// Cut for brevity (and because I don't know what goes here yet)
}
},
Err(_) => {},
}
}
routes
}