Buffer::from_slice_ref set correct capacity (#18)

Fixed ARROW-12504
diff --git a/arrow/src/buffer/immutable.rs b/arrow/src/buffer/immutable.rs
index cd6a2a3..f4aeae9 100644
--- a/arrow/src/buffer/immutable.rs
+++ b/arrow/src/buffer/immutable.rs
@@ -55,8 +55,8 @@
     /// Initializes a [Buffer] from a slice of items.
     pub fn from_slice_ref<U: ArrowNativeType, T: AsRef<[U]>>(items: &T) -> Self {
         let slice = items.as_ref();
-        let len = slice.len();
-        let mut buffer = MutableBuffer::with_capacity(len);
+        let capacity = slice.len() * std::mem::size_of::<U>();
+        let mut buffer = MutableBuffer::with_capacity(capacity);
         buffer.extend_from_slice(slice);
         buffer.into()
     }