| //@ edition:2018 | |
| //@ incremental | |
| use std::fs::File; | |
| use std::future::Future; | |
| use std::io::prelude::*; | |
| fn main() -> Result<(), Box<dyn std::error::Error>> { | |
| block_on(async { | |
| { | |
| let path = std::path::Path::new("."); | |
| let mut f = File::open(path.to_str())?; | |
| //~^ ERROR the trait bound | |
| let mut src = String::new(); | |
| f.read_to_string(&mut src)?; | |
| Ok(()) | |
| } | |
| }) | |
| } | |
| fn block_on<F>(f: F) -> F::Output | |
| where | |
| F: Future<Output = Result<(), Box<dyn std::error::Error>>>, | |
| { | |
| Ok(()) | |
| } |