2 use std::ops::{Deref, DerefMut};
4 struct CheckedDeref<T, F> {
9 impl<F: Fn(&T) -> bool, T> Deref for CheckedDeref<T, F> {
11 fn deref(&self) -> &T {
12 assert!((self.check)(&self.value));
17 impl<F: Fn(&T) -> bool, T> DerefMut for CheckedDeref<T, F> {
18 fn deref_mut(&mut self) -> &mut T {
19 assert!((self.check)(&self.value));
26 let mut v = CheckedDeref {
28 check: |v: &Vec<_>| !v.is_empty()
31 assert_eq!(*v, vec![0, 1]);