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>
ものは何ですか?なぜこのタイプの不一致が起こっているのでしょうか。それは私には大丈夫ですが、もちろん、私は何を探しているのか分かりません。 :-)
FYIでは、 'のための' <'r> 'は上位ランクの生涯の境界と呼ばれます。 Googleの名前には簡単な構文の[リスト(https://doc.rust-lang.org/book/syntax-index.html)]があります。 – mcarton