Closed
Description
The following code produces a quite unhelpful error from the compiler:
use std::io;
use std::fs;
use std::path::{Path, PathBuf};
pub fn build<P: AsRef<Path>>(path: P) -> Result<Vec<PathBuf>, io::Error> {
let entries = fs::read_dir(path)?;
let filevec = entries.map(| res | res.map(| e | e.path()))
.collect::<Result<Vec<_>, io::Error>>?;
Ok(filevec)
}
The error in question being .collect::<Result<Vec<_>, io::Error>>?;
instead of .collect::<Result<Vec<_>, io::Error>>()?;
.
Compiler output:
Compiling playground v0.0.1 (/playground)
error: field expressions may not have generic arguments
--> src/lib.rs:9:36
|
9 | .collect::<Result<Vec<_>, io::Error>>?;
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^
error: aborting due to previous error
error: could not compile `playground`.
To learn more, run the command again with --verbose.
It's quite a simple mistake, but I got confused by the error message and tried different type-related fixes which didn't work (obviously).
This might be related to #54521
Activity
estebank commentedon Jun 15, 2020
Current full output:
estebank commentedon Jan 5, 2023
No change, only outstanding work is to emit only one of the two errors along with the existing suggestion on E0615.
oriongonza commentedon Dec 4, 2024
@rustbot claim
Rollup merge of rust-lang#134154 - dev-ardi:field-expr-generics, r=co…
Rollup merge of rust-lang#134154 - dev-ardi:field-expr-generics, r=co…
Unrolled build for rust-lang#134154