2020-05-22 02:11:17 +00:00
|
|
|
// edition:2018
|
2021-09-19 16:57:19 +00:00
|
|
|
// incremental
|
2020-05-22 02:11:17 +00:00
|
|
|
|
|
|
|
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())?;
|
2020-05-22 02:12:03 +00:00
|
|
|
//~^ ERROR the trait bound
|
2020-05-22 02:11:17 +00:00
|
|
|
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(())
|
|
|
|
}
|