mirror of https://github.com/rust-lang/rust
41 lines
805 B
Rust
41 lines
805 B
Rust
//@ edition: 2021
|
|
|
|
use std::collections::HashMap;
|
|
use std::future::Future;
|
|
use std::pin::Pin;
|
|
|
|
pub trait Trait {
|
|
fn do_something<'async_trait>(byte: u8)
|
|
->
|
|
Pin<Box<dyn Future<Output = ()> +
|
|
Send + 'async_trait>>;
|
|
}
|
|
|
|
pub struct Struct;
|
|
|
|
impl Trait for Struct {
|
|
fn do_something<'async_trait>(byte: u8)
|
|
->
|
|
Pin<Box<dyn Future<Output = ()> +
|
|
Send + 'async_trait>> {
|
|
Box::pin(
|
|
|
|
async move { let byte = byte; let _: () = {}; })
|
|
}
|
|
}
|
|
|
|
pub struct Map {
|
|
map: HashMap<u16, fn(u8) -> Pin<Box<dyn Future<Output = ()> + Send>>>,
|
|
}
|
|
|
|
impl Map {
|
|
pub fn new() -> Self {
|
|
let mut map = HashMap::new();
|
|
map.insert(1, Struct::do_something);
|
|
Self { map }
|
|
//~^ ERROR mismatched types
|
|
}
|
|
}
|
|
|
|
fn main() {}
|