rust/tests/ui/unboxed-closures/callback-trait-prediction-70746.rs
2025-10-12 00:33:20 -04:00

31 lines
613 B
Rust

// https://github.com/rust-lang/rust/issues/70746
//@ check-pass
pub trait Trait1 {
type C;
}
struct T1;
impl Trait1 for T1 {
type C = usize;
}
pub trait Callback<T: Trait1>: FnMut(<T as Trait1>::C) {}
impl<T: Trait1, F: FnMut(<T as Trait1>::C)> Callback<T> for F {}
pub struct State<T: Trait1> {
callback: Option<Box<dyn Callback<T>>>,
}
impl<T: Trait1> State<T> {
fn new() -> Self {
Self { callback: None }
}
fn test_cb(&mut self, d: <T as Trait1>::C) {
(self.callback.as_mut().unwrap())(d)
}
}
fn main() {
let mut s = State::<T1>::new();
s.test_cb(1);
}