Expose Vec capacity to C++
diff --git a/src/cxx.cc b/src/cxx.cc
index 2be483d..c17e0fb 100644
--- a/src/cxx.cc
+++ b/src/cxx.cc
@@ -414,6 +414,8 @@
       rust::Vec<CXX_TYPE> *ptr) noexcept;                                      \
   size_t cxxbridge1$rust_vec$##RUST_TYPE##$len(                                \
       const rust::Vec<CXX_TYPE> *ptr) noexcept;                                \
+  size_t cxxbridge1$rust_vec$##RUST_TYPE##$capacity(                           \
+      const rust::Vec<CXX_TYPE> *ptr) noexcept;                                \
   const CXX_TYPE *cxxbridge1$rust_vec$##RUST_TYPE##$data(                      \
       const rust::Vec<CXX_TYPE> *ptr) noexcept;                                \
   void cxxbridge1$rust_vec$##RUST_TYPE##$reserve_total(                        \
@@ -436,6 +438,10 @@
     return cxxbridge1$rust_vec$##RUST_TYPE##$len(this);                        \
   }                                                                            \
   template <>                                                                  \
+  size_t Vec<CXX_TYPE>::capacity() const noexcept {                            \
+    return cxxbridge1$rust_vec$##RUST_TYPE##$capacity(this);                   \
+  }                                                                            \
+  template <>                                                                  \
   const CXX_TYPE *Vec<CXX_TYPE>::data() const noexcept {                       \
     return cxxbridge1$rust_vec$##RUST_TYPE##$data(this);                       \
   }                                                                            \
diff --git a/src/rust_vec.rs b/src/rust_vec.rs
index 8ddc4a7..126fdbf 100644
--- a/src/rust_vec.rs
+++ b/src/rust_vec.rs
@@ -41,6 +41,10 @@
         self.repr.len()
     }
 
+    pub fn capacity(&self) -> usize {
+        self.repr.capacity()
+    }
+
     pub fn as_ptr(&self) -> *const T {
         self.repr.as_ptr()
     }
diff --git a/src/symbols/rust_vec.rs b/src/symbols/rust_vec.rs
index 4f4b6ff..6aa0b76 100644
--- a/src/symbols/rust_vec.rs
+++ b/src/symbols/rust_vec.rs
@@ -30,6 +30,12 @@
                 }
             }
             attr! {
+                #[export_name = concat!("cxxbridge1$rust_vec$", $segment, "$capacity")]
+                unsafe extern "C" fn __capacity(this: *const RustVec<$ty>) -> usize {
+                    (*this).repr.capacity()
+                }
+            }
+            attr! {
                 #[export_name = concat!("cxxbridge1$rust_vec$", $segment, "$data")]
                 unsafe extern "C" fn __data(this: *const RustVec<$ty>) -> *const $ty {
                     (*this).repr.as_ptr()