You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I'm trying to use a loop to build an array of lists of structs, but have been stuck with mutable borrow issues:
letmut list_builder = ListBuilder::new(StructBuilder::from_fields(FieldsOfKeyAndValue,0));let struct_builder = list_builder.values();// let key_builder = struct_builder.field_builder::<StringBuilder>(0).unwrap(); //Cannot do this due to only one mutable borrow allowed at a time;// have to use workaround below// let value_builder = struct_builder.field_builder::<StringBuilder>(1).unwrap();let(field_builder_key, field_builder_value) = struct_builder.field_builders_mut().split_at_mut(1);let key_builder = field_builder_key[0].as_any_mut().downcast_mut::<StringBuilder>().unwrap();let value_builder = field_builder_value[0].as_any_mut().downcast_mut::<StringBuilder>().unwrap();for(k, v)inMap:
key_builder.append_value(k);
value_builder.append_value(v);
struct_builder.append(true);// Compiler complains struct_builder and list_builder have more than one mutable borrows
list_builder.append(true);
list_builder.finish()
for _ in0..num_points.max(2){// Add x value
points_builder
.values().field_builder::<Int32Builder>(0).unwrap().append_value(rng.random_range(-10..10));// Add y value
points_builder
.values().field_builder::<Int32Builder>(1).unwrap().append_value(rng.random_range(-10..10));
points_builder.values().append(true);
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
-
I'm trying to use a loop to build an array of lists of structs, but have been stuck with mutable borrow issues:
I have seen chained calls being used elsewhere (e.g. https://github.com/apache/datafusion/blob/33b86fe02e7bbe63135995c2dbb47bf83c08143c/datafusion/core/tests/dataframe/mod.rs#L5211), however this would become very lengthy and unreadable for complex structures, like the one in https://docs.rs/arrow/latest/arrow/array/struct.StructBuilder.html . Is there a better way to avoid the multiple mut borrow issue?
Beta Was this translation helpful? Give feedback.
All reactions