diff --git a/rust/flexbuffers/src/builder/map.rs b/rust/flexbuffers/src/builder/map.rs
index 1635f64..18d7687 100644
--- a/rust/flexbuffers/src/builder/map.rs
+++ b/rust/flexbuffers/src/builder/map.rs
@@ -97,8 +97,7 @@
     // preferred over custom sorting or adding another dependency. By construction, this part
     // of the values stack must be alternating (key, value) pairs. The public API must not be
     // able to trigger the above debug_assets that protect this unsafe usage.
-    let pairs: &mut [[Value; 2]] =
-        unsafe { std::slice::from_raw_parts_mut(raw_pairs, pairs_len) };
+    let pairs: &mut [[Value; 2]] = unsafe { std::slice::from_raw_parts_mut(raw_pairs, pairs_len) };
     #[rustfmt::skip]
     pairs.sort_unstable_by(|[key1, _], [key2, _]| {
         if let Value::Key(a1) = *key1 {
diff --git a/rust/flexbuffers/src/builder/mod.rs b/rust/flexbuffers/src/builder/mod.rs
index e71acd0..97838c2 100644
--- a/rust/flexbuffers/src/builder/mod.rs
+++ b/rust/flexbuffers/src/builder/mod.rs
@@ -32,10 +32,11 @@
         fn $push_name<T, S>(&mut self, xs: S)
         where
             T: Into<$scalar> + Copy,
-            S: AsRef<[T]>
+            S: AsRef<[T]>,
         {
             let mut value = Value::$new_vec(xs.as_ref().len());
-            let mut width = xs.as_ref()
+            let mut width = xs
+                .as_ref()
                 .iter()
                 .map(|x| BitWidth::from((*x).into()))
                 .max()
@@ -56,7 +57,7 @@
             value.set_child_width_or_panic(width);
             self.values.push(value);
         }
-    }
+    };
 }
 macro_rules! push_indirect {
     ($push_name: ident, $scalar: ty, $Direct: ident, $Indirect: ident) => {
@@ -65,15 +66,13 @@
             let child_width = x.width_or_child_width();
             let address = self.buffer.len();
             store_value(&mut self.buffer, x, child_width);
-            self.values.push(
-                Value::Reference {
-                    address,
-                    child_width,
-                    fxb_type: FlexBufferType::$Indirect,
-                }
-            );
+            self.values.push(Value::Reference {
+                address,
+                child_width,
+                fxb_type: FlexBufferType::$Indirect,
+            });
         }
-    }
+    };
 }
 
 bitflags! {
@@ -242,9 +241,7 @@
         let address = self.buffer.len();
         for &b in xs.iter() {
             self.buffer.push(b as u8);
-            for _ in 0..width as u8 {
-                self.buffer.push(0); // Well this seems wasteful.
-            }
+            self.buffer.resize(self.buffer.len() + width as usize, 0);
         }
         self.values.push(Value::Reference {
             fxb_type: FlexBufferType::VectorBool,
diff --git a/rust/flexbuffers/src/builder/push.rs b/rust/flexbuffers/src/builder/push.rs
index d22b47f..5cb584d 100644
--- a/rust/flexbuffers/src/builder/push.rs
+++ b/rust/flexbuffers/src/builder/push.rs
@@ -14,9 +14,9 @@
 
 use crate::builder::Builder;
 use crate::private::Sealed;
-use crate::{Blob, IndirectFloat, IndirectInt, IndirectUInt};
+use crate::{Blob, Buffer, IndirectFloat, IndirectInt, IndirectUInt};
 
-impl<'a> Sealed for Blob<'a> {}
+impl<B: Buffer> Sealed for Blob<B> {}
 impl Sealed for () {}
 
 // TODO: String interning
@@ -44,9 +44,10 @@
         builder.push_null();
     }
 }
-impl<'a> Pushable for Blob<'a> {
+
+impl<B: Buffer> Pushable for Blob<B> {
     fn push_to_builder(self, builder: &mut Builder) {
-        builder.push_blob(self.0);
+        builder.push_blob(&self.0);
     }
 }
 
diff --git a/rust/flexbuffers/src/builder/ser.rs b/rust/flexbuffers/src/builder/ser.rs
index 8e483ba..7ef7757 100644
--- a/rust/flexbuffers/src/builder/ser.rs
+++ b/rust/flexbuffers/src/builder/ser.rs
@@ -36,6 +36,10 @@
     pub fn take_buffer(&mut self) -> Vec<u8> {
         self.builder.take_buffer()
     }
+    pub fn reset(&mut self) {
+        self.builder.reset();
+        self.nesting.clear();
+    }
     fn finish_if_not_nested(&mut self) -> Result<(), Error> {
         if self.nesting.is_empty() {
             assert_eq!(self.builder.values.len(), 1);
diff --git a/rust/flexbuffers/src/builder/value.rs b/rust/flexbuffers/src/builder/value.rs
index f230c34..88ff7b9 100644
--- a/rust/flexbuffers/src/builder/value.rs
+++ b/rust/flexbuffers/src/builder/value.rs
@@ -129,9 +129,10 @@
         !self.is_inline()
     }
     pub fn is_key(&self) -> bool {
-        match self {
-            Value::Key(_) => true,
-            _ => false,
+        if let Value::Key(_) = self {
+            true
+        } else {
+            false
         }
     }
     pub fn is_typed_vector_or_map(&self) -> bool {
