@@ -804,7 +804,29 @@ static_assert(sizeof(std::string) <= kMaxExpectedWordsInString * sizeof(void *),
804804 CXX_TYPE** cxxbridge1$rust_option$##RUST_TYPE##$value_ptr( \
805805 rust::Option<CXX_TYPE *> *ptr) noexcept ; \
806806 void cxxbridge1$rust_option$##RUST_TYPE##$set( \
807- rust::Option<CXX_TYPE *> *ptr, CXX_TYPE *&& value) noexcept ;
807+ rust::Option<CXX_TYPE *> *ptr, CXX_TYPE *&& value) noexcept ; \
808+ /* Vec<T> implementation */ \
809+ void cxxbridge1$rust_option$const $rust_vec$##RUST_TYPE##$new ( \
810+ rust::Option<rust::Vec<CXX_TYPE> const *> *ptr) noexcept ; \
811+ void cxxbridge1$rust_option$const $rust_vec$##RUST_TYPE##$drop( \
812+ rust::Option<rust::Vec<CXX_TYPE> const *> *ptr) noexcept ; \
813+ bool cxxbridge1$rust_option$const $rust_vec$##RUST_TYPE##$has_value( \
814+ const rust::Option<rust::Vec<CXX_TYPE> const *> *ptr) noexcept ; \
815+ rust::Vec<CXX_TYPE> const ** cxxbridge1$rust_option$const $rust_vec$##RUST_TYPE##$value_ptr( \
816+ rust::Option<rust::Vec<CXX_TYPE> const *> *ptr) noexcept ; \
817+ void cxxbridge1$rust_option$const $rust_vec$##RUST_TYPE##$set( \
818+ rust::Option<rust::Vec<CXX_TYPE> const *> *ptr, rust::Vec<CXX_TYPE> const *&& value) noexcept ; \
819+ void cxxbridge1$rust_option$rust_vec$##RUST_TYPE##$new ( \
820+ rust::Option<rust::Vec<CXX_TYPE> *> *ptr) noexcept ; \
821+ void cxxbridge1$rust_option$rust_vec$##RUST_TYPE##$drop( \
822+ rust::Option<rust::Vec<CXX_TYPE> *> *ptr) noexcept ; \
823+ bool cxxbridge1$rust_option$rust_vec$##RUST_TYPE##$has_value( \
824+ const rust::Option<rust::Vec<CXX_TYPE> *> *ptr) noexcept ; \
825+ rust::Vec<CXX_TYPE>** cxxbridge1$rust_option$rust_vec$##RUST_TYPE##$value_ptr( \
826+ rust::Option<rust::Vec<CXX_TYPE> *> *ptr) noexcept ; \
827+ void cxxbridge1$rust_option$rust_vec$##RUST_TYPE##$set( \
828+ rust::Option<rust::Vec<CXX_TYPE> *> *ptr, rust::Vec<CXX_TYPE> *&& value) noexcept ;
829+
808830
809831#define RUST_OPTION_OPS (RUST_TYPE, CXX_TYPE ) \
810832 template <> \
@@ -847,10 +869,53 @@ static_assert(sizeof(std::string) <= kMaxExpectedWordsInString * sizeof(void *),
847869 template <> \
848870 void Option<CXX_TYPE *>::set(CXX_TYPE *&& value) noexcept { \
849871 return cxxbridge1$rust_option$##RUST_TYPE##$set (this , std::move (value)); \
872+ } \
873+ /* Vec<T> impl */ \
874+ template <> \
875+ Option<rust::Vec<CXX_TYPE> const *>::Option() noexcept { \
876+ cxxbridge1$rust_option$const $rust_vec$##RUST_TYPE##$new (this ); \
877+ } \
878+ template <> \
879+ void Option<rust::Vec<CXX_TYPE> const *>::drop() noexcept { \
880+ cxxbridge1$rust_option$const $rust_vec$##RUST_TYPE##$drop (this ); \
881+ } \
882+ template <> \
883+ bool Option<rust::Vec<CXX_TYPE> const *>::has_value() const noexcept { \
884+ return cxxbridge1$rust_option$const $rust_vec$##RUST_TYPE##$has_value (this ); \
885+ } \
886+ template <> \
887+ rust::Vec<CXX_TYPE> const ** Option<rust::Vec<CXX_TYPE> const *>::value_ptr() noexcept { \
888+ return cxxbridge1$rust_option$const $rust_vec$##RUST_TYPE##$value_ptr (this ); \
889+ } \
890+ template <> \
891+ void Option<rust::Vec<CXX_TYPE> const *>::set(rust::Vec<CXX_TYPE> const *&& value) noexcept { \
892+ return cxxbridge1$rust_option$const $rust_vec$##RUST_TYPE##$set ( \
893+ this , std::move (value)); \
894+ } \
895+ template <> \
896+ Option<rust::Vec<CXX_TYPE> *>::Option() noexcept { \
897+ cxxbridge1$rust_option$rust_vec$##RUST_TYPE##$new (this ); \
898+ } \
899+ template <> \
900+ void Option<rust::Vec<CXX_TYPE> *>::drop() noexcept { \
901+ cxxbridge1$rust_option$rust_vec$##RUST_TYPE##$drop (this ); \
902+ } \
903+ template <> \
904+ bool Option<rust::Vec<CXX_TYPE> *>::has_value() const noexcept { \
905+ return cxxbridge1$rust_option$rust_vec$##RUST_TYPE##$has_value (this ); \
906+ } \
907+ template <> \
908+ rust::Vec<CXX_TYPE>** Option<rust::Vec<CXX_TYPE> *>::value_ptr() noexcept { \
909+ return cxxbridge1$rust_option$rust_vec$##RUST_TYPE##$value_ptr (this ); \
910+ } \
911+ template <> \
912+ void Option<rust::Vec<CXX_TYPE> *>::set(rust::Vec<CXX_TYPE> *&& value) noexcept { \
913+ return cxxbridge1$rust_option$rust_vec$##RUST_TYPE##$set (this , std::move (value)); \
850914 }
851915
852916#define FOR_EACH_RUST_OPTION (MACRO ) \
853- FOR_EACH_NUMERIC (MACRO)
917+ FOR_EACH_NUMERIC (MACRO) \
918+ MACRO(string, rust::String)
854919
855920extern "C" {
856921FOR_EACH_STD_VECTOR (STD_VECTOR_OPS)
0 commit comments