#![allow(dead_code, deprecated, unused_variables, unused_mut)] use std::ops::{Deref, DerefMut}; struct DerefMutExample { value: T, } impl Deref for DerefMutExample { type Target = T; fn deref(&self) -> &Self::Target { &self.value } } impl DerefMut for DerefMutExample { fn deref_mut(&mut self) -> &mut Self::Target { &mut self.value } } fn main() { let mut x = DerefMutExample { value: 'a' }; *x = 'b'; assert_eq!('b', x.value); }