diff options
author | 2019-12-06 16:33:04 -0800 | |
---|---|---|
committer | 2019-12-10 13:35:26 -0800 | |
commit | a7fc5274ad84987d21c4ead69d4d3772fdcc87d3 (patch) | |
tree | 280441ebee180b06f2cca3f190fc574a05123466 /tests/test_buf_mut.rs | |
parent | 7e80f3b6466ecb962334e617a3e304196476ade0 (diff) | |
download | bytes-a7fc5274ad84987d21c4ead69d4d3772fdcc87d3.tar.gz bytes-a7fc5274ad84987d21c4ead69d4d3772fdcc87d3.tar.zst bytes-a7fc5274ad84987d21c4ead69d4d3772fdcc87d3.zip |
Make Deref impls of Buf and BufMut forward more methods
Diffstat (limited to 'tests/test_buf_mut.rs')
-rw-r--r-- | tests/test_buf_mut.rs | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/tests/test_buf_mut.rs b/tests/test_buf_mut.rs index dd414e5..f002f7d 100644 --- a/tests/test_buf_mut.rs +++ b/tests/test_buf_mut.rs @@ -87,3 +87,32 @@ fn test_mut_slice() { let mut s = &mut v[..]; s.put_u32(42); } + +#[test] +fn test_deref_bufmut_forwards() { + struct Special; + + impl BufMut for Special { + fn remaining_mut(&self) -> usize { + unreachable!("remaining_mut"); + } + + fn bytes_mut(&mut self) -> &mut [std::mem::MaybeUninit<u8>] { + unreachable!("bytes_mut"); + } + + unsafe fn advance_mut(&mut self, _: usize) { + unreachable!("advance"); + } + + fn put_u8(&mut self, _: u8) { + // specialized! + } + } + + // these should all use the specialized method + Special.put_u8(b'x'); + (&mut Special as &mut dyn BufMut).put_u8(b'x'); + (Box::new(Special) as Box<dyn BufMut>).put_u8(b'x'); + Box::new(Special).put_u8(b'x'); +} |