diff options
Diffstat (limited to 'src/test/ui/issues/issue-26186.rs')
-rw-r--r-- | src/test/ui/issues/issue-26186.rs | 62 |
1 files changed, 0 insertions, 62 deletions
diff --git a/src/test/ui/issues/issue-26186.rs b/src/test/ui/issues/issue-26186.rs deleted file mode 100644 index f93869352..000000000 --- a/src/test/ui/issues/issue-26186.rs +++ /dev/null @@ -1,62 +0,0 @@ -// check-pass -use std::sync::Mutex; -use std::cell::RefCell; -use std::rc::Rc; -use std::ops::*; - -//eefriedman example -struct S<'a, T:FnMut() + 'static + ?Sized>(&'a mut T); -impl<'a, T:?Sized + FnMut() + 'static> DerefMut for S<'a, T> { - fn deref_mut(&mut self) -> &mut Self::Target { &mut self.0 } -} -impl<'a, T:?Sized + FnMut() + 'static> Deref for S<'a, T> { - type Target = dyn FnMut() + 'a; - fn deref(&self) -> &Self::Target { &self.0 } -} - -//Ossipal example -struct FunctionIcon { - get_icon: Mutex<Box<dyn FnMut() -> u32>>, -} - -impl FunctionIcon { - fn get_icon(&self) -> impl '_ + std::ops::DerefMut<Target=Box<dyn FnMut() -> u32>> { - self.get_icon.lock().unwrap() - } - - fn load_icon(&self) { - let mut get_icon = self.get_icon(); - let _rgba_icon = (*get_icon)(); - } -} - -//shepmaster example -struct Foo; - -impl Deref for Foo { - type Target = dyn FnMut() + 'static; - fn deref(&self) -> &Self::Target { - unimplemented!() - } -} - -impl DerefMut for Foo { - fn deref_mut(&mut self) -> &mut Self::Target { - unimplemented!() - } -} - -fn main() { - //eefriedman example - let mut f = ||{}; - let mut s = S(&mut f); - s(); - - //Diggsey/Mark-Simulacrum example - let a: Rc<RefCell<dyn FnMut()>> = Rc::new(RefCell::new(||{})); - a.borrow_mut()(); - - //shepmaster example - let mut t = Foo; - t(); -} |