У меня есть файл protobuf, используемый для генерации типов в проекте. Один из типов выглядит так:
syntax = "proto3";
// ...
message myStruct {
int32 obj_id = 1;
string obj_code = 2;
string obj_name = 3;
// ... some more fields
}
// ... some more message, enum, etc ....
Затем я могу запустить крошечный скрипт, который генерирует некоторый код Go, хотя protoc-gen-go
, который позже переводится в Rust через другой скрипт, использующий protoc-gen-rust
.
В результате получается файл Rust, который выглядит следующим образом:
// This file is generated by rust-protobuf 2.0.0. Do not edit
// @generated
// ...
pub struct myStruct {
// message fields
pub obj_id: i32,
pub obj_code: ::std::string::String,
pub obj_name: ::std::string::String,
// ... some more fields
}
impl myStruct {
// ... lots of constructors, getters, setters, etc
}
Мне не нужен лучший способ генерации типов Rust в целом, проект масштабный и продвинутый, моя работа не в том, чтобы переписать / реорганизовать его, а просто добавить некоторые функциональные возможности, для которых мне нужно немного приятного векторы флагов, которые будут добавлены в пару структур.
Я бы хотел добавить некоторые Vec
поля в структуру myStruct
, например:
pub struct myClass {
// ... some fields like obj_id etc ...
// the fields I want to add
bool_vec: Vec<bool>,
bool_vec_vec: Vec<Vec<bool>>,
// ...
}
Возможно ли это сделать с помощью функции proto-buf или нет? Если да, как я могу это сделать?