reifydb-extension 0.4.13

Unified extension loading for ReifyDB (FFI, WASM, native)
Documentation
// SPDX-License-Identifier: Apache-2.0
// Copyright (c) 2025 ReifyDB

pub mod builder;
pub mod panic;

use reifydb_abi::callbacks::builder::EmitDiffKind;
use reifydb_core::value::column::columns::Columns;

use crate::ffi_callbacks::builder::BuilderRegistry;

/// Drain a `BuilderRegistry` that received a single Insert-shaped diff and
/// return its `post` (or `pre` for a Remove) columns. Used by the
/// single-Columns FFI hot paths (operator `pull`, transforms, procedures).
pub fn single_columns_from_registry(registry: &BuilderRegistry) -> Columns {
	let mut diffs = registry.drain();
	if let Some(first) = diffs.drain(..).next() {
		match first.kind {
			EmitDiffKind::Insert | EmitDiffKind::Update => first.post.unwrap_or_else(Columns::empty),
			EmitDiffKind::Remove => first.pre.unwrap_or_else(Columns::empty),
		}
	} else {
		Columns::empty()
	}
}