#![allow(dead_code, deprecated, unused_variables, unused_mut)] use core::ops::{Deref, DerefMut}; struct SomeType; impl Deref for SomeType { type Target = [u8]; fn deref(&self) -> &[u8] { &[] } } impl DerefMut for SomeType { fn deref_mut(&mut self) -> &mut [u8] { &mut [] } } impl AsMut for SomeType where ::Target: AsMut, { fn as_mut(&mut self) -> &mut T { self.deref_mut().as_mut() } } fn main() {}