Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- use std::{convert::Infallible, future::Future, marker::PhantomData};
- trait Trait {}
- struct MyFn<'a, F, Fut>(F, PhantomData<&'a Fut>);
- impl<'a, F, Fut> MyFn<'a, F, Fut>
- where
- F: Fn(&'a u8, &'a u16) -> Fut,
- Fut: Future<Output = Result<(), Infallible>>
- {
- pub fn new(f: F) -> Self {
- MyFn(f, PhantomData)
- }
- }
- impl<'a, F, Fut> Trait for MyFn<'a, F, Fut>
- where
- F: Fn(&'a u8, &'a u16) -> Fut,
- Fut: Future<Output = Result<(), Infallible>>,
- {
- }
- async fn lol(_: &u8, _: &u16) -> Result<(), Infallible> {
- Ok(())
- }
- fn check<T: Trait>(_: T) {}
- pub fn check2() {
- check(MyFn::new(lol))
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement