blob: 33532fe365ba435a69fa474950df2855362b6d50 [file]
//@ known-bug: #149162
use std::marker::PhantomData;
pub trait ViewArgument {
type Params<'a>;
}
impl ViewArgument for () {
type Params<'a> = ();
}
pub trait View {}
pub fn buttons() -> Option<impl View> {
Some(()).map(|()| text_button(|()| {}))
}
pub fn text_button<State: ViewArgument>(
_: impl Fn(<State as ViewArgument>::Params<'_>),
) -> Button<State, impl Fn()> {
Button {
callback: || (),
phantom: PhantomData,
}
}
pub struct Button<State, F> {
pub callback: F,
pub phantom: PhantomData<State>,
}
impl<F> View for Button<(), F> {}
fn main() {}