@@ -302,7 +302,30 @@ impl VariantValueArrayBuilder {
302302 ValueBuilder :: append_variant_bytes ( self . parent_state ( & mut metadata_builder) , value) ;
303303 }
304304
305- /// Creates a builder-specific parent state
305+ /// Creates a builder-specific parent state.
306+ ///
307+ /// For example, this can be useful for code that wants to copy a subset of fields from an
308+ /// object `value` as a new row of `value_array_builder`:
309+ ///
310+ /// ```no_run
311+ /// # use parquet_variant::{ObjectBuilder, ReadOnlyMetadataBuilder, Variant};
312+ /// # use parquet_variant_compute::VariantValueArrayBuilder;
313+ /// # let value = Variant::Null;
314+ /// # let mut value_array_builder = VariantValueArrayBuilder::new(0);
315+ /// # fn should_keep(field_name: &str) -> bool { todo!() };
316+ /// let Variant::Object(obj) = value else {
317+ /// panic!("Not a variant object");
318+ /// };
319+ /// let mut metadata_builder = ReadOnlyMetadataBuilder::new(obj.metadata.clone());
320+ /// let state = value_array_builder.parent_state(&mut metadata_builder);
321+ /// let mut object_builder = ObjectBuilder::new(state, false);
322+ /// for (field_name, field_value) in obj.iter() {
323+ /// if should_keep(field_name) {
324+ /// object_builder.insert_bytes(field_name, field_value);
325+ /// }
326+ /// }
327+ /// object_builder.finish(); // appends the new object
328+ /// ```
306329 pub fn parent_state < ' a > (
307330 & ' a mut self ,
308331 metadata_builder : & ' a mut dyn MetadataBuilder ,
0 commit comments