pub fn push_unary_row<'a>(&'a self, row: Row) -> Datum<'a> {
        let mut inner = self.inner.borrow_mut();
        inner.push(row.data.into_vec());
        unsafe {
            // This is safe because:
            //   * We only ever append to self.inner, so the row data will live
            //     as long as the arena.
            //   * We force the row data into its own heap allocation--
            //     importantly, we do NOT store the SmallVec, which might be
            //     storing data inline--so it's okay if self.inner reallocates
            //     and moves the row.
            //   * We don't allow access to the byte vector itself, so it will
            //     never reallocate.
            let datum = read_datum(&inner[inner.len() - 1], &mut 0);
            transmute::<Datum<'_>, Datum<'a>>(datum)
        }
    }
/// Take ownership of `row` for the lifetime of the arena, returning a
/// reference to the first datum in the row.
///
/// If we had an owned datum type, this method would be much clearer, and
/// would be called `push_owned_datum`.
Take ownership of `row` for the lifetime of the arena, returning a
reference to the first datum in the row.

If we had an owned datum type, this method would be much clearer, and
would be called `push_owned_datum`.
Take ownership of ` row ` for the lifetime of the arena returning a reference to the first datum in the row . If we had an owned datum type this method would be much clearer and would be called ` push_owned_datum ` .
pub fn push_unary_row<'a>(&'a self, row: Row) -> Datum<'a> {
        let mut inner = self.inner.borrow_mut();
        inner.push(row.data.into_vec());
        unsafe {
            // This is safe because:
            //   * We only ever append to self.inner, so the row data will live
            //     as long as the arena.
            //   * We force the row data into its own heap allocation--
            //     importantly, we do NOT store the SmallVec, which might be
            //     storing data inline--so it's okay if self.inner reallocates
            //     and moves the row.
            //   * We don't allow access to the byte vector itself, so it will
            //     never reallocate.
            let datum = read_datum(&inner[inner.len() - 1], &mut 0);
            transmute::<Datum<'_>, Datum<'a>>(datum)
        }
    }
pub fn push_unary_row < ' a > ( & ' a self , row : Row ) -> Datum < ' a > { let mut inner = self . inner . borrow_mut ( ) ; inner . push ( row . data . into_vec ( ) ) ; unsafe { // This is safe because: //   * We only ever append to self.inner, so the row data will live //     as long as the arena. //   * We force the row data into its own heap allocation-- //     importantly, we do NOT store the SmallVec, which might be //     storing data inline--so it's okay if self.inner reallocates //     and moves the row. //   * We don't allow access to the byte vector itself, so it will //     never reallocate. let datum = read_datum ( & inner [ inner . len ( ) - 1 ] , & mut 0 ) ; transmute :: < Datum < ' _ > , Datum < ' a > > ( datum ) } }
Take ownership of `row` for the lifetime of the arena, returning a
reference to the first datum in the row.
Take ownership of ` row ` for the lifetime of the arena returning a reference to the first datum in the row .
&'a self
row
Row
&'a self
row
Row