Skip to content

Commit 6656de6

Browse files
adsnaiderJochen Parmentier
authored andcommitted
[Rust] Add the Allocator trait for the builder API (google#8106)
* Add an Allocator trait for FlatBufferBuilder * Update rust generated code
1 parent 8cc6e18 commit 6656de6

File tree

56 files changed

+658
-449
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

56 files changed

+658
-449
lines changed

rust/flatbuffers/src/builder.rs

Lines changed: 277 additions & 79 deletions
Large diffs are not rendered by default.

rust/flatbuffers/src/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ mod vtable;
4848
mod vtable_writer;
4949

5050
pub use crate::array::{array_init, emplace_scalar_array, Array};
51-
pub use crate::builder::FlatBufferBuilder;
51+
pub use crate::builder::{Allocator, DefaultAllocator, FlatBufferBuilder};
5252
pub use crate::endian_scalar::{emplace_scalar, read_scalar, read_scalar_at, EndianScalar};
5353
pub use crate::follow::{Follow, FollowStart};
5454
pub use crate::primitives::*;

samples/rust_generated/my_game/sample/equipment_generated.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ impl EquipmentT {
115115
Self::Weapon(_) => Equipment::Weapon,
116116
}
117117
}
118-
pub fn pack(&self, fbb: &mut flatbuffers::FlatBufferBuilder) -> Option<flatbuffers::WIPOffset<flatbuffers::UnionWIPOffset>> {
118+
pub fn pack<'b, A: flatbuffers::Allocator + 'b>(&self, fbb: &mut flatbuffers::FlatBufferBuilder<'b, A>) -> Option<flatbuffers::WIPOffset<flatbuffers::UnionWIPOffset>> {
119119
match self {
120120
Self::NONE => None,
121121
Self::Weapon(v) => Some(v.pack(fbb).as_union_value()),

samples/rust_generated/my_game/sample/monster_generated.rs

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,8 @@ impl<'a> Monster<'a> {
4545
Monster { _tab: table }
4646
}
4747
#[allow(unused_mut)]
48-
pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
49-
_fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
48+
pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
49+
_fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
5050
args: &'args MonsterArgs<'args>
5151
) -> flatbuffers::WIPOffset<Monster<'bldr>> {
5252
let mut builder = MonsterBuilder::new(_fbb);
@@ -246,11 +246,11 @@ impl<'a> Default for MonsterArgs<'a> {
246246
}
247247
}
248248

249-
pub struct MonsterBuilder<'a: 'b, 'b> {
250-
fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
249+
pub struct MonsterBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
250+
fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
251251
start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
252252
}
253-
impl<'a: 'b, 'b> MonsterBuilder<'a, 'b> {
253+
impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> MonsterBuilder<'a, 'b, A> {
254254
#[inline]
255255
pub fn add_pos(&mut self, pos: &Vec3) {
256256
self.fbb_.push_slot_always::<&Vec3>(Monster::VT_POS, pos);
@@ -292,7 +292,7 @@ impl<'a: 'b, 'b> MonsterBuilder<'a, 'b> {
292292
self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(Monster::VT_PATH, path);
293293
}
294294
#[inline]
295-
pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> MonsterBuilder<'a, 'b> {
295+
pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> MonsterBuilder<'a, 'b, A> {
296296
let start = _fbb.start_table();
297297
MonsterBuilder {
298298
fbb_: _fbb,
@@ -363,9 +363,9 @@ impl Default for MonsterT {
363363
}
364364
}
365365
impl MonsterT {
366-
pub fn pack<'b>(
366+
pub fn pack<'b, A: flatbuffers::Allocator + 'b>(
367367
&self,
368-
_fbb: &mut flatbuffers::FlatBufferBuilder<'b>
368+
_fbb: &mut flatbuffers::FlatBufferBuilder<'b, A>
369369
) -> flatbuffers::WIPOffset<Monster<'b>> {
370370
let pos_tmp = self.pos.as_ref().map(|x| x.pack());
371371
let pos = pos_tmp.as_ref();
@@ -461,13 +461,13 @@ pub unsafe fn size_prefixed_root_as_monster_unchecked(buf: &[u8]) -> Monster {
461461
flatbuffers::size_prefixed_root_unchecked::<Monster>(buf)
462462
}
463463
#[inline]
464-
pub fn finish_monster_buffer<'a, 'b>(
465-
fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>,
464+
pub fn finish_monster_buffer<'a, 'b, A: flatbuffers::Allocator + 'a>(
465+
fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
466466
root: flatbuffers::WIPOffset<Monster<'a>>) {
467467
fbb.finish(root, None);
468468
}
469469

470470
#[inline]
471-
pub fn finish_size_prefixed_monster_buffer<'a, 'b>(fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>, root: flatbuffers::WIPOffset<Monster<'a>>) {
471+
pub fn finish_size_prefixed_monster_buffer<'a, 'b, A: flatbuffers::Allocator + 'a>(fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>, root: flatbuffers::WIPOffset<Monster<'a>>) {
472472
fbb.finish_size_prefixed(root, None);
473473
}

samples/rust_generated/my_game/sample/weapon_generated.rs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,8 @@ impl<'a> Weapon<'a> {
3737
Weapon { _tab: table }
3838
}
3939
#[allow(unused_mut)]
40-
pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
41-
_fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
40+
pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
41+
_fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
4242
args: &'args WeaponArgs<'args>
4343
) -> flatbuffers::WIPOffset<Weapon<'bldr>> {
4444
let mut builder = WeaponBuilder::new(_fbb);
@@ -101,11 +101,11 @@ impl<'a> Default for WeaponArgs<'a> {
101101
}
102102
}
103103

104-
pub struct WeaponBuilder<'a: 'b, 'b> {
105-
fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
104+
pub struct WeaponBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
105+
fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
106106
start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
107107
}
108-
impl<'a: 'b, 'b> WeaponBuilder<'a, 'b> {
108+
impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> WeaponBuilder<'a, 'b, A> {
109109
#[inline]
110110
pub fn add_name(&mut self, name: flatbuffers::WIPOffset<&'b str>) {
111111
self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(Weapon::VT_NAME, name);
@@ -115,7 +115,7 @@ impl<'a: 'b, 'b> WeaponBuilder<'a, 'b> {
115115
self.fbb_.push_slot::<i16>(Weapon::VT_DAMAGE, damage, 0);
116116
}
117117
#[inline]
118-
pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> WeaponBuilder<'a, 'b> {
118+
pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> WeaponBuilder<'a, 'b, A> {
119119
let start = _fbb.start_table();
120120
WeaponBuilder {
121121
fbb_: _fbb,
@@ -152,9 +152,9 @@ impl Default for WeaponT {
152152
}
153153
}
154154
impl WeaponT {
155-
pub fn pack<'b>(
155+
pub fn pack<'b, A: flatbuffers::Allocator + 'b>(
156156
&self,
157-
_fbb: &mut flatbuffers::FlatBufferBuilder<'b>
157+
_fbb: &mut flatbuffers::FlatBufferBuilder<'b, A>
158158
) -> flatbuffers::WIPOffset<Weapon<'b>> {
159159
let name = self.name.as_ref().map(|x|{
160160
_fbb.create_string(x)

src/idl_gen_rust.cpp

Lines changed: 25 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -989,7 +989,8 @@ class RustGenerator : public BaseGenerator {
989989
code_ += " }";
990990
// Pack flatbuffers union value
991991
code_ +=
992-
" pub fn pack(&self, fbb: &mut flatbuffers::FlatBufferBuilder)"
992+
" pub fn pack<'b, A: flatbuffers::Allocator + 'b>(&self, fbb: &mut "
993+
"flatbuffers::FlatBufferBuilder<'b, A>)"
993994
" -> Option<flatbuffers::WIPOffset<flatbuffers::UnionWIPOffset>>"
994995
" {";
995996
code_ += " match self {";
@@ -1717,8 +1718,11 @@ class RustGenerator : public BaseGenerator {
17171718
code_.SetValue("MAYBE_LT",
17181719
TableBuilderArgsNeedsLifetime(struct_def) ? "<'args>" : "");
17191720
code_ += " #[allow(unused_mut)]";
1720-
code_ += " pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(";
1721-
code_ += " _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,";
1721+
code_ +=
1722+
" pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: "
1723+
"flatbuffers::Allocator + 'bldr>(";
1724+
code_ +=
1725+
" _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,";
17221726
code_ += " {{MAYBE_US}}args: &'args {{STRUCT_TY}}Args{{MAYBE_LT}}";
17231727
code_ += " ) -> flatbuffers::WIPOffset<{{STRUCT_TY}}<'bldr>> {";
17241728

@@ -2117,15 +2121,20 @@ class RustGenerator : public BaseGenerator {
21172121
}
21182122

21192123
// Generate a builder struct:
2120-
code_ += "{{ACCESS_TYPE}} struct {{STRUCT_TY}}Builder<'a: 'b, 'b> {";
2121-
code_ += " fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,";
2124+
code_ +=
2125+
"{{ACCESS_TYPE}} struct {{STRUCT_TY}}Builder<'a: 'b, 'b, A: "
2126+
"flatbuffers::Allocator + 'a> {";
2127+
code_ += " fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,";
21222128
code_ +=
21232129
" start_: flatbuffers::WIPOffset<"
21242130
"flatbuffers::TableUnfinishedWIPOffset>,";
21252131
code_ += "}";
21262132

21272133
// Generate builder functions:
2128-
code_ += "impl<'a: 'b, 'b> {{STRUCT_TY}}Builder<'a, 'b> {";
2134+
code_ +=
2135+
"impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> "
2136+
"{{STRUCT_TY}}Builder<'a, "
2137+
"'b, A> {";
21292138
ForAllTableFields(struct_def, [&](const FieldDef &field) {
21302139
const bool is_scalar = IsScalar(field.value.type.base_type);
21312140
std::string offset = namer_.LegacyRustFieldOffsetName(field);
@@ -2160,8 +2169,8 @@ class RustGenerator : public BaseGenerator {
21602169
// Struct initializer (all fields required);
21612170
code_ += " #[inline]";
21622171
code_ +=
2163-
" pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> "
2164-
"{{STRUCT_TY}}Builder<'a, 'b> {";
2172+
" pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> "
2173+
"{{STRUCT_TY}}Builder<'a, 'b, A> {";
21652174
code_.SetValue("NUM_FIELDS", NumToString(struct_def.fields.vec.size()));
21662175
code_ += " let start = _fbb.start_table();";
21672176
code_ += " {{STRUCT_TY}}Builder {";
@@ -2264,9 +2273,9 @@ class RustGenerator : public BaseGenerator {
22642273

22652274
// Generate pack function.
22662275
code_ += "impl {{STRUCT_OTY}} {";
2267-
code_ += " pub fn pack<'b>(";
2276+
code_ += " pub fn pack<'b, A: flatbuffers::Allocator + 'b>(";
22682277
code_ += " &self,";
2269-
code_ += " _fbb: &mut flatbuffers::FlatBufferBuilder<'b>";
2278+
code_ += " _fbb: &mut flatbuffers::FlatBufferBuilder<'b, A>";
22702279
code_ += " ) -> flatbuffers::WIPOffset<{{STRUCT_TY}}<'b>> {";
22712280
// First we generate variables for each field and then later assemble them
22722281
// using "StructArgs" to more easily manage ownership of the builder.
@@ -2551,8 +2560,10 @@ class RustGenerator : public BaseGenerator {
25512560

25522561
// Finish a buffer with a given root object:
25532562
code_ += "#[inline]";
2554-
code_ += "pub fn finish_{{STRUCT_FN}}_buffer<'a, 'b>(";
2555-
code_ += " fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>,";
2563+
code_ +=
2564+
"pub fn finish_{{STRUCT_FN}}_buffer<'a, 'b, A: "
2565+
"flatbuffers::Allocator + 'a>(";
2566+
code_ += " fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,";
25562567
code_ += " root: flatbuffers::WIPOffset<{{STRUCT_TY}}<'a>>) {";
25572568
if (parser_.file_identifier_.length()) {
25582569
code_ += " fbb.finish(root, Some({{STRUCT_CONST}}_IDENTIFIER));";
@@ -2564,8 +2575,8 @@ class RustGenerator : public BaseGenerator {
25642575
code_ += "#[inline]";
25652576
code_ +=
25662577
"pub fn finish_size_prefixed_{{STRUCT_FN}}_buffer"
2567-
"<'a, 'b>("
2568-
"fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>, "
2578+
"<'a, 'b, A: flatbuffers::Allocator + 'a>("
2579+
"fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>, "
25692580
"root: flatbuffers::WIPOffset<{{STRUCT_TY}}<'a>>) {";
25702581
if (parser_.file_identifier_.length()) {
25712582
code_ +=

tests/arrays_test/my_game/example/array_table_generated.rs

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,8 @@ impl<'a> ArrayTable<'a> {
3636
ArrayTable { _tab: table }
3737
}
3838
#[allow(unused_mut)]
39-
pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
40-
_fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
39+
pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
40+
_fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
4141
args: &'args ArrayTableArgs<'args>
4242
) -> flatbuffers::WIPOffset<ArrayTable<'bldr>> {
4343
let mut builder = ArrayTableBuilder::new(_fbb);
@@ -87,17 +87,17 @@ impl<'a> Default for ArrayTableArgs<'a> {
8787
}
8888
}
8989

90-
pub struct ArrayTableBuilder<'a: 'b, 'b> {
91-
fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
90+
pub struct ArrayTableBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
91+
fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
9292
start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
9393
}
94-
impl<'a: 'b, 'b> ArrayTableBuilder<'a, 'b> {
94+
impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> ArrayTableBuilder<'a, 'b, A> {
9595
#[inline]
9696
pub fn add_a(&mut self, a: &ArrayStruct) {
9797
self.fbb_.push_slot_always::<&ArrayStruct>(ArrayTable::VT_A, a);
9898
}
9999
#[inline]
100-
pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> ArrayTableBuilder<'a, 'b> {
100+
pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> ArrayTableBuilder<'a, 'b, A> {
101101
let start = _fbb.start_table();
102102
ArrayTableBuilder {
103103
fbb_: _fbb,
@@ -131,9 +131,9 @@ impl Default for ArrayTableT {
131131
}
132132
}
133133
impl ArrayTableT {
134-
pub fn pack<'b>(
134+
pub fn pack<'b, A: flatbuffers::Allocator + 'b>(
135135
&self,
136-
_fbb: &mut flatbuffers::FlatBufferBuilder<'b>
136+
_fbb: &mut flatbuffers::FlatBufferBuilder<'b, A>
137137
) -> flatbuffers::WIPOffset<ArrayTable<'b>> {
138138
let a_tmp = self.a.as_ref().map(|x| x.pack());
139139
let a = a_tmp.as_ref();
@@ -217,13 +217,13 @@ pub fn array_table_size_prefixed_buffer_has_identifier(buf: &[u8]) -> bool {
217217
pub const ARRAY_TABLE_EXTENSION: &str = "mon";
218218

219219
#[inline]
220-
pub fn finish_array_table_buffer<'a, 'b>(
221-
fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>,
220+
pub fn finish_array_table_buffer<'a, 'b, A: flatbuffers::Allocator + 'a>(
221+
fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
222222
root: flatbuffers::WIPOffset<ArrayTable<'a>>) {
223223
fbb.finish(root, Some(ARRAY_TABLE_IDENTIFIER));
224224
}
225225

226226
#[inline]
227-
pub fn finish_size_prefixed_array_table_buffer<'a, 'b>(fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>, root: flatbuffers::WIPOffset<ArrayTable<'a>>) {
227+
pub fn finish_size_prefixed_array_table_buffer<'a, 'b, A: flatbuffers::Allocator + 'a>(fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>, root: flatbuffers::WIPOffset<ArrayTable<'a>>) {
228228
fbb.finish_size_prefixed(root, Some(ARRAY_TABLE_IDENTIFIER));
229229
}

tests/include_test1/my_game/other_name_space/table_b_generated.rs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,8 @@ impl<'a> TableB<'a> {
3636
TableB { _tab: table }
3737
}
3838
#[allow(unused_mut)]
39-
pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
40-
_fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
39+
pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
40+
_fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
4141
args: &'args TableBArgs<'args>
4242
) -> flatbuffers::WIPOffset<TableB<'bldr>> {
4343
let mut builder = TableBBuilder::new(_fbb);
@@ -87,17 +87,17 @@ impl<'a> Default for TableBArgs<'a> {
8787
}
8888
}
8989

90-
pub struct TableBBuilder<'a: 'b, 'b> {
91-
fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
90+
pub struct TableBBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
91+
fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
9292
start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
9393
}
94-
impl<'a: 'b, 'b> TableBBuilder<'a, 'b> {
94+
impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> TableBBuilder<'a, 'b, A> {
9595
#[inline]
9696
pub fn add_a(&mut self, a: flatbuffers::WIPOffset<super::super::TableA<'b >>) {
9797
self.fbb_.push_slot_always::<flatbuffers::WIPOffset<super::super::TableA>>(TableB::VT_A, a);
9898
}
9999
#[inline]
100-
pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> TableBBuilder<'a, 'b> {
100+
pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> TableBBuilder<'a, 'b, A> {
101101
let start = _fbb.start_table();
102102
TableBBuilder {
103103
fbb_: _fbb,
@@ -131,9 +131,9 @@ impl Default for TableBT {
131131
}
132132
}
133133
impl TableBT {
134-
pub fn pack<'b>(
134+
pub fn pack<'b, A: flatbuffers::Allocator + 'b>(
135135
&self,
136-
_fbb: &mut flatbuffers::FlatBufferBuilder<'b>
136+
_fbb: &mut flatbuffers::FlatBufferBuilder<'b, A>
137137
) -> flatbuffers::WIPOffset<TableB<'b>> {
138138
let a = self.a.as_ref().map(|x|{
139139
x.pack(_fbb)

tests/include_test1/table_a_generated.rs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,8 @@ impl<'a> TableA<'a> {
3636
TableA { _tab: table }
3737
}
3838
#[allow(unused_mut)]
39-
pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
40-
_fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
39+
pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
40+
_fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
4141
args: &'args TableAArgs<'args>
4242
) -> flatbuffers::WIPOffset<TableA<'bldr>> {
4343
let mut builder = TableABuilder::new(_fbb);
@@ -87,17 +87,17 @@ impl<'a> Default for TableAArgs<'a> {
8787
}
8888
}
8989

90-
pub struct TableABuilder<'a: 'b, 'b> {
91-
fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
90+
pub struct TableABuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
91+
fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
9292
start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
9393
}
94-
impl<'a: 'b, 'b> TableABuilder<'a, 'b> {
94+
impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> TableABuilder<'a, 'b, A> {
9595
#[inline]
9696
pub fn add_b(&mut self, b: flatbuffers::WIPOffset<my_game::other_name_space::TableB<'b >>) {
9797
self.fbb_.push_slot_always::<flatbuffers::WIPOffset<my_game::other_name_space::TableB>>(TableA::VT_B, b);
9898
}
9999
#[inline]
100-
pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> TableABuilder<'a, 'b> {
100+
pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> TableABuilder<'a, 'b, A> {
101101
let start = _fbb.start_table();
102102
TableABuilder {
103103
fbb_: _fbb,
@@ -131,9 +131,9 @@ impl Default for TableAT {
131131
}
132132
}
133133
impl TableAT {
134-
pub fn pack<'b>(
134+
pub fn pack<'b, A: flatbuffers::Allocator + 'b>(
135135
&self,
136-
_fbb: &mut flatbuffers::FlatBufferBuilder<'b>
136+
_fbb: &mut flatbuffers::FlatBufferBuilder<'b, A>
137137
) -> flatbuffers::WIPOffset<TableA<'b>> {
138138
let b = self.b.as_ref().map(|x|{
139139
x.pack(_fbb)

0 commit comments

Comments
 (0)