Skip to main content

NamedDataFrameListBuilder

Struct NamedDataFrameListBuilder 

Source
pub struct NamedDataFrameListBuilder {
    scope: ProtectScope,
    pairs: Vec<(String, SEXP)>,
}
Expand description

Assemble a named list whose elements are DataFrames, without per-result OwnedProtect bookkeeping.

§Why this is distinct from DataFrame::builder

DataFrame::builder and the serde SerdeRowBuilder both produce a single DataFrame. This builder produces a different shape — a named list of data.frames, e.g. list(results = df, error = df) — so it deliberately keeps its own name rather than folding into the DataFrame::builder vocabulary. Its inputs are DataFrames (from any producer: IntoDataFrame, the serde vec_to_dataframe, or GroupedDataFrame::frames); its output is a List.

Each push protects the input data.frame’s SEXP via an internal ProtectScope; build consumes the builder and emits a named list via List::from_raw_pairs. The scope drops at the end of build, releasing the per-input protects — by which point the children are reachable from the assembled list.

§Example

let result = NamedDataFrameListBuilder::new()
    .push("results", oks.into_dataframe()?)
    .push("error",   errs.into_dataframe()?)
    .build();

Fields§

§scope: ProtectScope§pairs: Vec<(String, SEXP)>

Implementations§

Source§

impl NamedDataFrameListBuilder

Source

pub fn new() -> Self

Create an empty builder.

§Safety (caller)

Must be called from the R main thread. The internal ProtectScope carries !Send + !Sync so the builder cannot be moved to another thread.

Source

pub fn with_capacity(n: usize) -> Self

Create a builder pre-allocated for n entries.

Equivalent to new but avoids repeated re-allocations when the number of partitions is known up front.

Source

pub fn push<S: Into<String>>(self, name: S, df: DataFrame) -> Self

Append a named data.frame. The input’s SEXP is protected internally for the lifetime of the builder.

Source

pub fn len(&self) -> usize

Number of entries pushed so far.

Source

pub fn is_empty(&self) -> bool

Whether no entries have been pushed yet.

Source

pub fn build(self) -> List

Consume the builder and return the assembled named List.

The returned List’s SEXP is not separately protected on return — the caller takes responsibility for protection (typically by immediately handing it back to R via the .Call return path). This matches the contract of List::from_raw_pairs.

Trait Implementations§

Source§

impl Default for NamedDataFrameListBuilder

Source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> RDefault for T
where T: Default,

Source§

fn default() -> T

Create a new instance with default values.
Source§

impl<T> SizeHint for T
where T: ?Sized,

Source§

default fn lower_bound(&self) -> usize

🔬This is a nightly-only experimental API. (core_io_internals)
Returns a lower bound on the number of elements this container-like item contains. For example, an array [u8; 12] could return any value between 0 and 12 inclusively as a correct implementation. Read more
Source§

default fn upper_bound(&self) -> Option<usize>

🔬This is a nightly-only experimental API. (core_io_internals)
Returns an upper bound on the number of elements this container-like item contains if it can be determined, otherwise None. Read more
Source§

final fn size_hint(&self) -> (usize, Option<usize>)

🔬This is a nightly-only experimental API. (core_io_internals)
Returns an estimate for the number of elements this container like type contains. Read more
Source§

impl<T> SizedTypeProperties for T

Source§

#[doc(hidden)]
const SIZE: usize = _

🔬This is a nightly-only experimental API. (sized_type_properties)
Source§

#[doc(hidden)]
const ALIGN: usize = _

🔬This is a nightly-only experimental API. (sized_type_properties)
Source§

#[doc(hidden)]
const ALIGNMENT: Alignment = _

🔬This is a nightly-only experimental API. (ptr_alignment_type)
Source§

#[doc(hidden)]
const IS_ZST: bool = _

🔬This is a nightly-only experimental API. (sized_type_properties)
true if this type requires no storage. false if its size is greater than zero. Read more
Source§

#[doc(hidden)]
const LAYOUT: Layout = _

🔬This is a nightly-only experimental API. (sized_type_properties)
Source§

#[doc(hidden)]
const MAX_SLICE_LEN: usize = _

🔬This is a nightly-only experimental API. (sized_type_properties)
The largest safe length for a [Self]. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.

Layout§

Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...) attributes. Please see the Rust Reference's “Type Layout” chapter for details on type layout guarantees.

Size: 32 bytes