Trait polars_core::chunked_array::ops::ChunkApply

source ·
pub trait ChunkApply<'a, T> {
    type FuncRet;

    // Required methods
    fn apply_values<F>(&'a self, f: F) -> Self
       where F: Fn(T) -> Self::FuncRet + Copy;
    fn apply<F>(&'a self, f: F) -> Self
       where F: Fn(Option<T>) -> Option<Self::FuncRet> + Copy;
    fn apply_to_slice<F, S>(&'a self, f: F, slice: &mut [S])
       where F: Fn(Option<T>, &S) -> S;
}
Expand description

Fastest way to do elementwise operations on a ChunkedArray<T> when the operation is cheaper than branching due to null checking.

Required Associated Types§

Required Methods§

source

fn apply_values<F>(&'a self, f: F) -> Self
where F: Fn(T) -> Self::FuncRet + Copy,

Apply a closure elementwise. This is fastest when the null check branching is more expensive than the closure application. Often it is.

Null values remain null.

§Example
use polars_core::prelude::*;
fn double(ca: &UInt32Chunked) -> UInt32Chunked {
    ca.apply_values(|v| v * 2)
}
source

fn apply<F>(&'a self, f: F) -> Self
where F: Fn(Option<T>) -> Option<Self::FuncRet> + Copy,

Apply a closure elementwise including null values.

source

fn apply_to_slice<F, S>(&'a self, f: F, slice: &mut [S])
where F: Fn(Option<T>, &S) -> S,

Apply a closure elementwise and write results to a mutable slice.

Object Safety§

This trait is not object safe.

Implementors§

source§

impl<'a> ChunkApply<'a, &'a str> for StringChunked

§

type FuncRet = Cow<'a, str>

source§

impl<'a> ChunkApply<'a, &'a [u8]> for BinaryChunked

§

type FuncRet = Cow<'a, [u8]>

source§

impl<'a> ChunkApply<'a, bool> for BooleanChunked

source§

impl<'a> ChunkApply<'a, Series> for ListChunked

source§

impl<'a, T> ChunkApply<'a, <T as PolarsNumericType>::Native> for ChunkedArray<T>

source§

impl<'a, T> ChunkApply<'a, &'a T> for ObjectChunked<T>
where T: PolarsObject,

Available on crate feature object only.
§

type FuncRet = T