0
녹이 학습 곡선을 가지고 있음을 알고 있지만 너무 빨리 공격 할 것으로 예상하지는 못했습니다. 나는 꽤 오랫동안이 유형의 불일치를 찾아 내려고 노력해 왔으며, 나는 진전을 이루지 못하고있다. 내 폐쇄에클로저를 가진 유형 불일치
struct FileInfo<'a> {
path: &'a Path
}
fn process_file(entry: &DirEntry, map: &HashMap<&str, &FileInfo>) {
let pathbuf = entry.path();
let mut f = fs::File::open(pathbuf.as_path()).unwrap();
let info = FileInfo { path: pathbuf.as_path() };
}
fn visit_dirs(dir: &Path, cb: &Fn(&DirEntry) ->()) -> io::Result<()> {
// Taken from Rust read_dir docs
// ...
}
fn main() {
let path = Path::new("/Users/gmadrid/Media/");
let map : HashMap<&str, &FileInfo> = HashMap::new();
visit_dirs(path, |e: &DirEntry| process_file(e, &map)).unwrap();
}
호출 visit_dirs
에 barfs :
src/main.rs:51:19: 51:55 error: mismatched types [E0308]
src/main.rs:51 visit_dirs(path, |e: &DirEntry| process_file(e, &map)).unwrap();
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/main.rs:51:19: 51:55 help: run `rustc --explain E0308` to see a detailed explanation
src/main.rs:51:19: 51:55 note: expected type `&for<'r> std::ops::Fn(&'r std::fs::DirEntry)`
src/main.rs:51:19: 51:55 note: found type `[[email protected]/main.rs:51:19: 51:55 map:_]`
error: aborting due to previous error
for<'r>
물건은 무엇입니까? 왜이 유형 불일치가 발생하는지. 그것은 나에게 괜찮아 보이지만 물론, 내가 무엇을 찾고 있는지 전혀 모른다. :-)
참고로 'for <'r>'항목은 상위 순위 수명 기간 바인딩이라고합니다. Google 이름으로 쉽게 사용할 수있는 구문 목록이 [https://doc.rust-lang.org/book/syntax-index.html] 있습니다. – mcarton