ioctl: implement AsRef<> and Deref<> for PlaneMappings

This is more elegant than having our own methods.
diff --git a/examples/vicodec_test/device_api.rs b/examples/vicodec_test/device_api.rs
index 6d4ba5d..9dadffd 100644
--- a/examples/vicodec_test/device_api.rs
+++ b/examples/vicodec_test/device_api.rs
@@ -207,7 +207,7 @@
         let cap_mapping = capture_queue
             .map_plane(cap_index, 0)
             .expect("Failed to map capture buffer");
-        save_output(&cap_mapping.as_slice()[0..bytes_used]);
+        save_output(&cap_mapping.as_ref()[0..bytes_used]);
 
         cpt = cpt.wrapping_add(1);
     }
diff --git a/examples/vicodec_test/ioctl_api.rs b/examples/vicodec_test/ioctl_api.rs
index 9b45ec3..116212f 100644
--- a/examples/vicodec_test/ioctl_api.rs
+++ b/examples/vicodec_test/ioctl_api.rs
@@ -214,7 +214,7 @@
         );
         io::stdout().flush().unwrap();
 
-        save_output(&capture_mappings[cap_dqbuf.index as usize].as_slice()[0..bytes_used]);
+        save_output(&capture_mappings[cap_dqbuf.index as usize].as_ref()[0..bytes_used]);
 
         cpt = cpt.wrapping_add(1);
     }
diff --git a/src/ioctl/mmap.rs b/src/ioctl/mmap.rs
index a3d5429..cc5d6b5 100644
--- a/src/ioctl/mmap.rs
+++ b/src/ioctl/mmap.rs
@@ -1,7 +1,7 @@
 use crate::Result;
 use std::os::unix::io::AsRawFd;
 use std::{
-    ops::{Index, IndexMut},
+    ops::{Deref, Index, IndexMut},
     slice,
 };
 
@@ -14,16 +14,17 @@
     pub data: &'a mut [u8],
 }
 
-impl<'a> PlaneMapping<'a> {
-    pub fn len(&self) -> usize {
-        self.data.len()
+impl<'a> AsRef<[u8]> for PlaneMapping<'a> {
+    fn as_ref(&self) -> &[u8] {
+        self.data
     }
+}
 
-    pub fn is_empty(&self) -> bool {
-        self.len() == 0
-    }
+/// To provide len() and is_empty().
+impl<'a> Deref for PlaneMapping<'a> {
+    type Target = [u8];
 
-    pub fn as_slice(&'a self) -> &'a [u8] {
+    fn deref(&self) -> &Self::Target {
         self.data
     }
 }