1
Fork 0

Implement #[define_opaque] attribute for functions.

This commit is contained in:
Oli Scherer 2024-07-26 10:04:02 +00:00 committed by Oli Scherer
parent 540565e5b9
commit d9de94001a

View file

@ -2,23 +2,21 @@
#![feature(type_alias_impl_trait)] #![feature(type_alias_impl_trait)]
mod helper { pub trait T {
pub trait T { type Item;
type Item; }
}
pub type Alias<'a> = impl T<Item = &'a ()>;
pub type Alias<'a> = impl T<Item = &'a ()>;
struct S;
struct S; impl<'a> T for &'a S {
impl<'a> T for &'a S { type Item = &'a ();
type Item = &'a (); }
}
#[define_opaque(Alias)]
pub fn filter_positive<'a>() -> Alias<'a> { pub fn filter_positive<'a>() -> Alias<'a> {
&S &S
}
} }
use helper::*;
fn with_positive(fun: impl Fn(Alias<'_>)) { fn with_positive(fun: impl Fn(Alias<'_>)) {
fun(filter_positive()); fun(filter_positive());