pub struct VarBinViewBuilder { /* private fields */ }Expand description
The builder for building a VarBinViewArray.
Implementations§
Source§impl VarBinViewBuilder
impl VarBinViewBuilder
pub fn with_capacity(dtype: DType, capacity: usize) -> Self
pub fn with_buffer_deduplication(dtype: DType, capacity: usize) -> Self
pub fn with_compaction( dtype: DType, capacity: usize, compaction_threshold: f64, ) -> Self
pub fn new( dtype: DType, capacity: usize, completed: CompletedBuffers, growth_strategy: BufferGrowthStrategy, compaction_threshold: f64, ) -> Self
Sourcepub fn append_value<S: AsRef<[u8]>>(&mut self, value: S)
pub fn append_value<S: AsRef<[u8]>>(&mut self, value: S)
Appends a value to the builder.
Sourcepub fn append_n_values<S: AsRef<[u8]>>(&mut self, value: S, n: usize)
pub fn append_n_values<S: AsRef<[u8]>>(&mut self, value: S, n: usize)
Appends n copies of value as non-null entries.
pub fn completed_block_count(&self) -> u32
Sourcepub fn append_views_built_at(
&mut self,
validity: &Mask,
build: impl FnOnce(u32) -> VortexResult<(Vec<ByteBuffer>, Buffer<BinaryView>)>,
) -> VortexResult<()>
pub fn append_views_built_at( &mut self, validity: &Mask, build: impl FnOnce(u32) -> VortexResult<(Vec<ByteBuffer>, Buffer<BinaryView>)>, ) -> VortexResult<()>
Adopts the buffers and views that build produces against the index its first buffer
will land at.
The builder flushes its staged bytes, then hands build the index the next data buffer
will occupy; build returns data buffers — which land contiguously from that index — and
one view per entry of validity, already referencing them. This is the escape hatch for
an encoding that only discovers its views while walking its own byte format (e.g.
length-prefixed frames), where the lengths-driven appends cannot apply; keeping the
numbering inside this call is what makes the views come out right without a rebase pass.
§Warning
This method does not check utilization of the returned buffers. build must return
buffers that are fully utilized by its views.
§Panics
Panics if build returns a different view count than validity.len(), or if this
builder deduplicates buffers and already holds one of the returned buffers.
Sourcepub fn append_views_gathered(
&mut self,
buffers: impl IntoIterator<Item = ByteBuffer>,
views: &[BinaryView],
validity: &Mask,
view_at: impl Fn(usize) -> usize,
)
pub fn append_views_gathered( &mut self, buffers: impl IntoIterator<Item = ByteBuffer>, views: &[BinaryView], validity: &Mask, view_at: impl Fn(usize) -> usize, )
Appends validity.len() values, gathering each valid row’s view from views through the
index view_at returns for it.
buffers — the data buffers the views reference, in the numbering the views use — are
adopted through the builder’s buffer storage, and every gathered view is rebased onto
the indices they land at as it is written, so the whole append is one view per row with no
byte copy and no intermediate array. view_at is only called for valid rows; null rows get
an empty view.
When the builder is configured to compact buffers, utilization is measured from the views the gather actually references — duplicate indices count once — and each buffer is adopted, sliced, or rewritten accordingly, so callers never need a canonicalize-and-compact fallback.
§Panics
Panics if view_at returns an index out of bounds of views, or if a gathered view
references a buffer index outside buffers.
Sourcepub fn append_views_scattered(
&mut self,
buffers: impl IntoIterator<Item = ByteBuffer>,
len: usize,
fill: BinaryView,
patches: impl Iterator<Item = (usize, BinaryView)>,
validity: &Mask,
)
pub fn append_views_scattered( &mut self, buffers: impl IntoIterator<Item = ByteBuffer>, len: usize, fill: BinaryView, patches: impl Iterator<Item = (usize, BinaryView)>, validity: &Mask, )
Appends len rows that are fill everywhere except at the given patch rows.
buffers — the data buffers fill and the patch views reference, in the numbering they
use — are adopted through the builder’s buffer storage and the views are rebased onto
the indices they land at. patches yields (row, view) pairs with rows below len; the
fill rows cost one bulk view fill and each patch one view write, with no byte copy.
Validity is appended exactly as given — invalid rows keep whichever view they got.
This append deliberately adopts the supplied buffers as-is, even when the builder is configured for compaction. Callers should use it only when retaining those buffers is acceptable.
§Panics
Panics if validity is not len long, a patch row is out of bounds, or a view references
a buffer index outside buffers.
Sourcepub fn append_buffer_with_lengths<P: NativePType + AsPrimitive<usize>>(
&mut self,
bytes: ByteBuffer,
lengths: &[P],
validity: &Mask,
)
pub fn append_buffer_with_lengths<P: NativePType + AsPrimitive<usize>>( &mut self, bytes: ByteBuffer, lengths: &[P], validity: &Mask, )
Appends values laid end-to-end in bytes, one per entry of lengths.
The builder adopts bytes as a data buffer without copying it (splitting it only past the
u32 view-offset limit) and builds the views directly into its own storage, so the whole
append costs one view per row. Every length is consumed, including those for null rows, so
the lengths must describe bytes exactly; bytes belonging to null rows are not retained
when compaction rewrites the buffer.
When the builder is configured to compact buffers, the utilization is measured from the lengths alone — only values too long to inline reference the buffer — and a heap below the threshold is rewritten to just those values instead of adopted, so callers never need a canonicalize-and-compact fallback.
§Panics
Panics if lengths and validity disagree in length, if the lengths do not describe
bytes exactly, or if this builder deduplicates buffers and already holds bytes.
Sourcepub fn append_buffer_with_offsets<P: NativePType + AsPrimitive<usize>>(
&mut self,
bytes: ByteBuffer,
offsets: &[P],
validity: &Mask,
)
pub fn append_buffer_with_offsets<P: NativePType + AsPrimitive<usize>>( &mut self, bytes: ByteBuffer, offsets: &[P], validity: &Mask, )
append_buffer_with_lengths for values described by
an offsets buffer instead of lengths.
offsets are absolute positions into bytes — the layout a
VarBinArray stores — so there is one more offset than there
are values, and only the offsets[0]..offsets[last] range of bytes is adopted, again
without copying.
§Panics
Panics if offsets does not hold exactly one more entry than validity, or if the offsets
are not monotonically non-decreasing positions within bytes.
Sourcepub fn finish_into_varbinview(&mut self) -> VarBinViewArray
pub fn finish_into_varbinview(&mut self) -> VarBinViewArray
Finishes the builder directly into a VarBinViewArray.
Trait Implementations§
Source§impl ArrayBuilder for VarBinViewBuilder
impl ArrayBuilder for VarBinViewBuilder
fn as_any(&self) -> &dyn Any
fn as_any_mut(&mut self) -> &mut dyn Any
fn dtype(&self) -> &DType
fn len(&self) -> usize
Source§fn append_zeros(&mut self, n: usize)
fn append_zeros(&mut self, n: usize)
Source§unsafe fn append_nulls_unchecked(&mut self, n: usize)
unsafe fn append_nulls_unchecked(&mut self, n: usize)
append_nulls. Read moreSource§fn append_scalar(&mut self, scalar: &Scalar) -> VortexResult<()>
fn append_scalar(&mut self, scalar: &Scalar) -> VortexResult<()>
Source§fn reserve_exact(&mut self, additional: usize)
fn reserve_exact(&mut self, additional: usize)
additional itemsSource§unsafe fn set_validity_unchecked(&mut self, validity: Mask)
unsafe fn set_validity_unchecked(&mut self, validity: Mask)
Source§fn finish_into_canonical(&mut self, _ctx: &mut ExecutionCtx) -> Canonical
fn finish_into_canonical(&mut self, _ctx: &mut ExecutionCtx) -> Canonical
fn is_empty(&self) -> bool
Source§fn append_zero(&mut self)
fn append_zero(&mut self)
Source§fn append_null(&mut self)
fn append_null(&mut self)
Source§fn append_nulls(&mut self, n: usize)
fn append_nulls(&mut self, n: usize)
Source§fn append_default(&mut self)
fn append_default(&mut self)
Source§fn append_defaults(&mut self, n: usize)
fn append_defaults(&mut self, n: usize)
Source§fn set_validity(&mut self, validity: Mask)
fn set_validity(&mut self, validity: Mask)
Auto Trait Implementations§
impl !RefUnwindSafe for VarBinViewBuilder
impl !UnwindSafe for VarBinViewBuilder
impl Freeze for VarBinViewBuilder
impl Send for VarBinViewBuilder
impl Sync for VarBinViewBuilder
impl Unpin for VarBinViewBuilder
impl UnsafeUnpin for VarBinViewBuilder
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> FmtForward for T
impl<T> FmtForward for T
Source§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self to use its Binary implementation when Debug-formatted.Source§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self to use its Display implementation when
Debug-formatted.Source§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self to use its LowerExp implementation when
Debug-formatted.Source§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self to use its LowerHex implementation when
Debug-formatted.Source§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self to use its Octal implementation when Debug-formatted.Source§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self to use its Pointer implementation when
Debug-formatted.Source§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self to use its UpperExp implementation when
Debug-formatted.Source§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self to use its UpperHex implementation when
Debug-formatted.Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Paint for Twhere
T: ?Sized,
impl<T> Paint for Twhere
T: ?Sized,
Source§fn fg(&self, value: Color) -> Painted<&T>
fn fg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self with the foreground set to
value.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like red() and
green(), which have the same functionality but are
pithier.
§Example
Set foreground color to white using fg():
use yansi::{Paint, Color};
painted.fg(Color::White);Set foreground color to white using white().
use yansi::Paint;
painted.white();Source§fn bright_black(&self) -> Painted<&T>
fn bright_black(&self) -> Painted<&T>
Source§fn bright_red(&self) -> Painted<&T>
fn bright_red(&self) -> Painted<&T>
Source§fn bright_green(&self) -> Painted<&T>
fn bright_green(&self) -> Painted<&T>
Source§fn bright_yellow(&self) -> Painted<&T>
fn bright_yellow(&self) -> Painted<&T>
Source§fn bright_blue(&self) -> Painted<&T>
fn bright_blue(&self) -> Painted<&T>
Source§fn bright_magenta(&self) -> Painted<&T>
fn bright_magenta(&self) -> Painted<&T>
Source§fn bright_cyan(&self) -> Painted<&T>
fn bright_cyan(&self) -> Painted<&T>
Source§fn bright_white(&self) -> Painted<&T>
fn bright_white(&self) -> Painted<&T>
Source§fn bg(&self, value: Color) -> Painted<&T>
fn bg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self with the background set to
value.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like on_red() and
on_green(), which have the same functionality but
are pithier.
§Example
Set background color to red using fg():
use yansi::{Paint, Color};
painted.bg(Color::Red);Set background color to red using on_red().
use yansi::Paint;
painted.on_red();Source§fn on_primary(&self) -> Painted<&T>
fn on_primary(&self) -> Painted<&T>
Source§fn on_magenta(&self) -> Painted<&T>
fn on_magenta(&self) -> Painted<&T>
Source§fn on_bright_black(&self) -> Painted<&T>
fn on_bright_black(&self) -> Painted<&T>
Source§fn on_bright_red(&self) -> Painted<&T>
fn on_bright_red(&self) -> Painted<&T>
Source§fn on_bright_green(&self) -> Painted<&T>
fn on_bright_green(&self) -> Painted<&T>
Source§fn on_bright_yellow(&self) -> Painted<&T>
fn on_bright_yellow(&self) -> Painted<&T>
Source§fn on_bright_blue(&self) -> Painted<&T>
fn on_bright_blue(&self) -> Painted<&T>
Source§fn on_bright_magenta(&self) -> Painted<&T>
fn on_bright_magenta(&self) -> Painted<&T>
Source§fn on_bright_cyan(&self) -> Painted<&T>
fn on_bright_cyan(&self) -> Painted<&T>
Source§fn on_bright_white(&self) -> Painted<&T>
fn on_bright_white(&self) -> Painted<&T>
Source§fn attr(&self, value: Attribute) -> Painted<&T>
fn attr(&self, value: Attribute) -> Painted<&T>
Enables the styling Attribute value.
This method should be used rarely. Instead, prefer to use
attribute-specific builder methods like bold() and
underline(), which have the same functionality
but are pithier.
§Example
Make text bold using attr():
use yansi::{Paint, Attribute};
painted.attr(Attribute::Bold);Make text bold using using bold().
use yansi::Paint;
painted.bold();Source§fn rapid_blink(&self) -> Painted<&T>
fn rapid_blink(&self) -> Painted<&T>
Source§fn quirk(&self, value: Quirk) -> Painted<&T>
fn quirk(&self, value: Quirk) -> Painted<&T>
Enables the yansi Quirk value.
This method should be used rarely. Instead, prefer to use quirk-specific
builder methods like mask() and
wrap(), which have the same functionality but are
pithier.
§Example
Enable wrapping using .quirk():
use yansi::{Paint, Quirk};
painted.quirk(Quirk::Wrap);Enable wrapping using wrap().
use yansi::Paint;
painted.wrap();Source§fn clear(&self) -> Painted<&T>
👎Deprecated since 1.0.1: renamed to resetting() due to conflicts with Vec::clear().
The clear() method will be removed in a future release.
fn clear(&self) -> Painted<&T>
renamed to resetting() due to conflicts with Vec::clear().
The clear() method will be removed in a future release.
Source§fn whenever(&self, value: Condition) -> Painted<&T>
fn whenever(&self, value: Condition) -> Painted<&T>
Conditionally enable styling based on whether the Condition value
applies. Replaces any previous condition.
See the crate level docs for more details.
§Example
Enable styling painted only when both stdout and stderr are TTYs:
use yansi::{Paint, Condition};
painted.red().on_yellow().whenever(Condition::STDOUTERR_ARE_TTY);Source§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
Source§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
Source§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read moreSource§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read moreSource§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
Source§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
Source§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self, then passes self.as_ref() into the pipe function.Source§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self, then passes self.as_mut() into the pipe
function.Source§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self, then passes self.deref() into the pipe function.impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
Source§impl<T> Tap for T
impl<T> Tap for T
Source§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B> of a value. Read moreSource§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B> of a value. Read moreSource§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R> view of a value. Read moreSource§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R> view of a value. Read moreSource§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target of a value. Read moreSource§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target of a value. Read moreSource§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap() only in debug builds, and is erased in release builds.Source§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut() only in debug builds, and is erased in release
builds.Source§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow() only in debug builds, and is erased in release
builds.Source§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut() only in debug builds, and is erased in release
builds.Source§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref() only in debug builds, and is erased in release
builds.Source§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut() only in debug builds, and is erased in release
builds.Source§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref() only in debug builds, and is erased in release
builds.