pub struct Engine<R> {
pub config: EvalConfig,
pub recalc_epoch: u64,
/* private fields */
}Fields§
§config: EvalConfig§recalc_epoch: u64Implementations§
Source§impl<R> Engine<R>where
R: EvaluationContext,
impl<R> Engine<R>where
R: EvaluationContext,
Sourcepub fn new(resolver: R, config: EvalConfig) -> Self
pub fn new(resolver: R, config: EvalConfig) -> Self
§Panics
Panics when config.cycle is invalid ([CycleConfig::validate],
spec §2): Iterate with detection: Static, max_iterations == 0,
or a negative/non-finite max_change. EvalConfig::with_cycle
rejects these at build; this re-validates configs assembled via
struct literals.
Sourcepub fn with_thread_pool(
resolver: R,
config: EvalConfig,
thread_pool: Arc<ThreadPool>,
) -> Self
pub fn with_thread_pool( resolver: R, config: EvalConfig, thread_pool: Arc<ThreadPool>, ) -> Self
Create an Engine with a custom thread pool (for shared thread pool scenarios)
§Panics
Panics when config.cycle is invalid, exactly like Engine::new.
pub fn workbook_load_limits(&self) -> &WorkbookLoadLimits
pub fn set_workbook_load_limits(&mut self, limits: WorkbookLoadLimits)
pub fn last_virtual_dep_telemetry(&self) -> &VirtualDepTelemetry
Sourcepub fn last_cycle_telemetry(&self) -> &CycleTelemetry
pub fn last_cycle_telemetry(&self) -> &CycleTelemetry
Telemetry from Runtime SCC evaluation during the most recent
evaluation request (always default-zero under CycleDetection::Static
or when enable_virtual_dep_telemetry is off).
pub fn virtual_dep_fallback_activations(&self) -> u64
pub fn default_sheet_id(&self) -> SheetId
pub fn default_sheet_name(&self) -> &str
Sourcepub fn set_workbook_seed(&mut self, seed: u64)
pub fn set_workbook_seed(&mut self, seed: u64)
Update the workbook seed for deterministic RNGs in functions.
Sourcepub fn set_volatile_level(&mut self, level: VolatileLevel)
pub fn set_volatile_level(&mut self, level: VolatileLevel)
Set the volatile level policy (Always/OnRecalc/OnOpen)
Sourcepub fn set_deterministic_mode(
&mut self,
mode: DeterministicMode,
) -> Result<(), ExcelError>
pub fn set_deterministic_mode( &mut self, mode: DeterministicMode, ) -> Result<(), ExcelError>
Enable/disable deterministic evaluation mode (fixed clock + timezone).
Sourcepub fn set_clock(&mut self, clock: Arc<dyn ClockProvider>)
pub fn set_clock(&mut self, clock: Arc<dyn ClockProvider>)
Inject a custom ClockProvider for
volatile date/time builtins (NOW(), TODAY()).
The provider is the clock source; per spec §7.11 the engine samples it once at the start of every evaluation request and all reads within that recalc (including SCC iteration passes) observe the frozen sample.
pub fn sheet_id(&self, name: &str) -> Option<SheetId>
pub fn sheet_id_mut(&mut self, name: &str) -> SheetId
pub fn sheet_name(&self, id: SheetId) -> &str
pub fn add_sheet(&mut self, name: &str) -> Result<SheetId, ExcelError>
pub fn duplicate_sheet( &mut self, source: &str, new_name: &str, ) -> Result<SheetId, ExcelError>
pub fn remove_sheet(&mut self, sheet_id: SheetId) -> Result<(), ExcelError>
pub fn rename_sheet( &mut self, sheet_id: SheetId, new_name: &str, ) -> Result<(), ExcelError>
pub fn named_ranges_iter(&self) -> impl Iterator<Item = (&String, &NamedRange)>
pub fn sheet_named_ranges_iter( &self, ) -> impl Iterator<Item = (&(SheetId, String), &NamedRange)>
pub fn resolve_name_entry( &self, name: &str, current_sheet: SheetId, ) -> Option<&NamedRange>
pub fn named_ranges_snapshot(&self) -> Vec<NamedRangeSnapshot>
pub fn named_ranges_snapshot_for_sheet( &self, sheet_id: SheetId, ) -> Vec<NamedRangeSnapshot>
pub fn define_name( &mut self, name: &str, definition: NamedDefinition, scope: NameScope, ) -> Result<(), ExcelError>
pub fn update_name( &mut self, name: &str, definition: NamedDefinition, scope: NameScope, ) -> Result<(), ExcelError>
pub fn delete_name( &mut self, name: &str, scope: NameScope, ) -> Result<(), ExcelError>
pub fn define_table( &mut self, name: &str, range: RangeRef, header_row: bool, headers: Vec<String>, totals_row: bool, ) -> Result<(), ExcelError>
pub fn define_source_scalar( &mut self, name: &str, version: Option<u64>, ) -> Result<(), ExcelError>
pub fn define_source_table( &mut self, name: &str, version: Option<u64>, ) -> Result<(), ExcelError>
pub fn set_source_scalar_version( &mut self, name: &str, version: Option<u64>, ) -> Result<(), ExcelError>
pub fn set_source_table_version( &mut self, name: &str, version: Option<u64>, ) -> Result<(), ExcelError>
pub fn invalidate_source(&mut self, name: &str) -> Result<(), ExcelError>
pub fn vertex_value(&self, vertex: VertexId) -> Option<LiteralValue>
pub fn graph_cell_value( &self, sheet: &str, row: u32, col: u32, ) -> Option<LiteralValue>
pub fn vertex_for_cell(&self, cell: &CellRef) -> Option<VertexId>
pub fn evaluation_vertices(&self) -> Vec<VertexId>
Sourcepub fn baseline_stats(&self) -> EngineBaselineStats
pub fn baseline_stats(&self) -> EngineBaselineStats
Return read-only baseline counters for FormulaPlane/dispatch benchmarking.
pub fn set_first_load_assume_new(&mut self, enabled: bool)
pub fn reset_ensure_touched(&mut self)
pub fn finalize_sheet_index(&mut self, sheet: &str)
Sourcepub fn action<T>(
&mut self,
name: impl AsRef<str>,
f: impl FnOnce(&mut EngineAction<'_, R>) -> Result<T, EditorError>,
) -> Result<T, EditorError>
pub fn action<T>( &mut self, name: impl AsRef<str>, f: impl FnOnce(&mut EngineAction<'_, R>) -> Result<T, EditorError>, ) -> Result<T, EditorError>
Execute a named Engine action.
Ticket 614 introduces this as the stable Engine-level transaction surface. For now actions are commit-only: they do not create changelog boundaries and they do not provide rollback/atomicity.
Nested actions are deterministically handled by disallowing nesting: calling
Engine::action while another action is active returns EditorError::TransactionFailed.
Sourcepub fn action_atomic<T>(
&mut self,
name: impl Into<String>,
f: impl FnOnce(&mut EngineAction<'_, R>) -> Result<T, EditorError>,
) -> Result<T, EditorError>
pub fn action_atomic<T>( &mut self, name: impl Into<String>, f: impl FnOnce(&mut EngineAction<'_, R>) -> Result<T, EditorError>, ) -> Result<T, EditorError>
Execute a named Engine action with atomic commit/rollback semantics.
This variant does not require a ChangeLog and uses an internal journal for rollback.
Sourcepub fn action_atomic_journal<T>(
&mut self,
name: impl Into<String>,
f: impl FnOnce(&mut EngineAction<'_, R>) -> Result<T, EditorError>,
) -> Result<(T, ActionJournal), EditorError>
pub fn action_atomic_journal<T>( &mut self, name: impl Into<String>, f: impl FnOnce(&mut EngineAction<'_, R>) -> Result<T, EditorError>, ) -> Result<(T, ActionJournal), EditorError>
Like action_atomic, but returns the committed journal entry for undo/redo storage.
Sourcepub fn action_with_logger<T>(
&mut self,
log: &mut ChangeLog,
name: impl AsRef<str>,
f: impl FnOnce(&mut EngineAction<'_, R>) -> Result<T, EditorError>,
) -> Result<T, EditorError>
pub fn action_with_logger<T>( &mut self, log: &mut ChangeLog, name: impl AsRef<str>, f: impl FnOnce(&mut EngineAction<'_, R>) -> Result<T, EditorError>, ) -> Result<T, EditorError>
Execute a named Engine action, logging graph changes into the provided ChangeLog.
Ticket 615: this variant provides atomicity. If the action returns an error, it rolls back:
- Dependency graph structural edits (via inverse ChangeEvents)
- Arrow-truth overlay writes mirrored from ChangeEvents
- ChangeLog entries (truncated back to the pre-action length)
pub fn edit_with_logger<T>( &mut self, log: &mut ChangeLog, f: impl FnOnce(&mut VertexEditor<'_>) -> T, ) -> T
pub fn undo_logged( &mut self, undo: &mut UndoEngine, log: &mut ChangeLog, ) -> Result<(), EditorError>
pub fn redo_logged( &mut self, undo: &mut UndoEngine, log: &mut ChangeLog, ) -> Result<(), EditorError>
Sourcepub fn undo_action(&mut self, undo: &mut UndoEngine) -> Result<(), EditorError>
pub fn undo_action(&mut self, undo: &mut UndoEngine) -> Result<(), EditorError>
Undo the last committed atomic action using the journal stack.
This path does not require a ChangeLog.
Sourcepub fn redo_action(&mut self, undo: &mut UndoEngine) -> Result<(), EditorError>
pub fn redo_action(&mut self, undo: &mut UndoEngine) -> Result<(), EditorError>
Redo the last undone atomic action using the journal stack.
This path does not require a ChangeLog.
pub fn set_default_sheet_by_name(&mut self, name: &str)
pub fn set_default_sheet_by_id(&mut self, id: SheetId)
pub fn set_sheet_index_mode(&mut self, mode: SheetIndexMode)
Sourcepub fn mark_data_edited(&mut self)
pub fn mark_data_edited(&mut self)
Mark data edited: bump snapshot and set edited flag. Value-only edits keep the stable-topology schedule cache alive.
Sourcepub fn mark_topology_edited(&mut self)
pub fn mark_topology_edited(&mut self)
Mark a topology-changing edit: bump snapshot + topology epoch and invalidate cached schedules.
Sourcepub fn sheet_store(&self) -> &SheetStore
pub fn sheet_store(&self) -> &SheetStore
Access Arrow sheet store (read-only)
Sourcepub fn sheet_store_mut(&mut self) -> &mut SheetStore
pub fn sheet_store_mut(&mut self) -> &mut SheetStore
Access Arrow sheet store (mutable)
pub fn has_staged_formulas(&self) -> bool
pub fn staged_formula_count(&self) -> usize
Sourcepub fn stage_formula_text(
&mut self,
sheet: &str,
row: u32,
col: u32,
text: String,
)
pub fn stage_formula_text( &mut self, sheet: &str, row: u32, col: u32, text: String, )
Stage a formula text instead of inserting into the graph (used when deferring is enabled).
pub fn clear_staged_formula_text( &mut self, sheet: &str, row: u32, col: u32, ) -> Option<String>
pub fn clear_staged_formulas_for_sheet(&mut self, sheet: &str)
pub fn rename_staged_formula_sheet(&mut self, old: &str, new: &str)
Sourcepub fn get_staged_formula_text(
&self,
sheet: &str,
row: u32,
col: u32,
) -> Option<String>
pub fn get_staged_formula_text( &self, sheet: &str, row: u32, col: u32, ) -> Option<String>
Get a staged formula text for a given cell if present (cloned).
pub fn formula_parse_diagnostics(&self) -> &[FormulaParseDiagnostic]
pub fn take_formula_parse_diagnostics(&mut self) -> Vec<FormulaParseDiagnostic>
pub fn clear_formula_parse_diagnostics(&mut self)
pub fn last_formula_ingest_report(&self) -> Option<&FormulaIngestReport>
pub fn formula_ingest_report_total(&self) -> &FormulaIngestReport
pub fn ingest_formula_batches( &mut self, batches: Vec<FormulaIngestBatch>, ) -> Result<FormulaIngestReport, ExcelError>
pub fn handle_formula_parse_error( &mut self, sheet: &str, row: u32, col: u32, formula: &str, message: String, ) -> Result<Option<ASTNode>, ExcelError>
Sourcepub fn build_graph_all(&mut self) -> Result<(), ExcelError>
pub fn build_graph_all(&mut self) -> Result<(), ExcelError>
Build graph for all staged formulas.
Sourcepub fn build_graph_for_sheets<'a, I: IntoIterator<Item = &'a str>>(
&mut self,
sheets: I,
) -> Result<(), ExcelError>
pub fn build_graph_for_sheets<'a, I: IntoIterator<Item = &'a str>>( &mut self, sheets: I, ) -> Result<(), ExcelError>
Build graph for specific sheets (consuming only those staged entries).
Sourcepub fn begin_bulk_ingest_arrow(&mut self) -> ArrowBulkIngestBuilder<'_, R>
pub fn begin_bulk_ingest_arrow(&mut self) -> ArrowBulkIngestBuilder<'_, R>
Begin bulk Arrow ingest for base values (Phase A)
Sourcepub fn begin_bulk_update_arrow(&mut self) -> ArrowBulkUpdateBuilder<'_, R>
pub fn begin_bulk_update_arrow(&mut self) -> ArrowBulkUpdateBuilder<'_, R>
Begin bulk updates to Arrow store (Phase C)
pub fn row_visibility_version(&self, sheet: &str) -> Option<u64>
Sourcepub fn insert_rows(
&mut self,
sheet: &str,
before: u32,
count: u32,
) -> Result<ShiftSummary, EditorError>
pub fn insert_rows( &mut self, sheet: &str, before: u32, count: u32, ) -> Result<ShiftSummary, EditorError>
Insert rows (1-based) and mirror into Arrow store when enabled
Sourcepub fn delete_rows(
&mut self,
sheet: &str,
start: u32,
count: u32,
) -> Result<ShiftSummary, EditorError>
pub fn delete_rows( &mut self, sheet: &str, start: u32, count: u32, ) -> Result<ShiftSummary, EditorError>
Delete rows (1-based) and mirror into Arrow store when enabled
Sourcepub fn insert_columns(
&mut self,
sheet: &str,
before: u32,
count: u32,
) -> Result<ShiftSummary, EditorError>
pub fn insert_columns( &mut self, sheet: &str, before: u32, count: u32, ) -> Result<ShiftSummary, EditorError>
Insert columns (1-based) and mirror into Arrow store when enabled
Sourcepub fn delete_columns(
&mut self,
sheet: &str,
start: u32,
count: u32,
) -> Result<ShiftSummary, EditorError>
pub fn delete_columns( &mut self, sheet: &str, start: u32, count: u32, ) -> Result<ShiftSummary, EditorError>
Delete columns (1-based) and mirror into Arrow store when enabled
Sourcepub fn overlay_memory_usage(&self) -> usize
pub fn overlay_memory_usage(&self) -> usize
Estimated memory usage for computed overlays (formula/spill mirroring).
Sourcepub fn set_cell_value(
&mut self,
sheet: &str,
row: u32,
col: u32,
value: LiteralValue,
) -> Result<(), ExcelError>
pub fn set_cell_value( &mut self, sheet: &str, row: u32, col: u32, value: LiteralValue, ) -> Result<(), ExcelError>
Set a cell value
pub fn set_cell_value_ref( &mut self, cell: SheetCellRef<'_>, current_sheet: &str, value: LiteralValue, ) -> Result<(), ExcelError>
pub fn set_cell_formula_ref( &mut self, cell: SheetCellRef<'_>, current_sheet: &str, ast: ASTNode, ) -> Result<(), ExcelError>
pub fn get_cell_value_ref( &self, cell: SheetCellRef<'_>, current_sheet: &str, ) -> Result<Option<LiteralValue>, ExcelError>
pub fn resolve_range_view_sheet_ref<'c>( &'c self, r: &SheetRef<'_>, current_sheet: &str, ) -> Result<RangeView<'c>, ExcelError>
Sourcepub fn set_cell_formula(
&mut self,
sheet: &str,
row: u32,
col: u32,
ast: ASTNode,
) -> Result<(), ExcelError>
pub fn set_cell_formula( &mut self, sheet: &str, row: u32, col: u32, ast: ASTNode, ) -> Result<(), ExcelError>
Set a cell formula
Sourcepub fn bulk_set_formulas<I>(
&mut self,
sheet: &str,
items: I,
) -> Result<usize, ExcelError>
pub fn bulk_set_formulas<I>( &mut self, sheet: &str, items: I, ) -> Result<usize, ExcelError>
Bulk set many formulas on a sheet. Skips per-cell snapshot bumping and minimizes edge rebuilds.
Sourcepub fn get_cell_value(
&self,
sheet: &str,
row: u32,
col: u32,
) -> Option<LiteralValue>
pub fn get_cell_value( &self, sheet: &str, row: u32, col: u32, ) -> Option<LiteralValue>
Get a cell value
Sourcepub fn get_cell(
&self,
sheet: &str,
row: u32,
col: u32,
) -> Option<(Option<ASTNode>, Option<LiteralValue>)>
pub fn get_cell( &self, sheet: &str, row: u32, col: u32, ) -> Option<(Option<ASTNode>, Option<LiteralValue>)>
Get formula AST (if any) and current stored value for a cell
Sourcepub fn begin_batch(&mut self)
pub fn begin_batch(&mut self)
Begin batch operations - defer CSR rebuilds for better performance
Sourcepub fn begin_deferred_dirty(&mut self)
pub fn begin_deferred_dirty(&mut self)
Begin a deferred-dirty scope for a multi-edit batch: while active,
every edit’s dirty propagation queues its sources instead of running
a full BFS per edit, and the outermost end_deferred_dirty flushes
the union with ONE multi-source propagation (O(component) instead of
O(edits × component)). See DependencyGraph::begin_deferred_dirty.
Callers MUST run end_deferred_dirty on every exit path, including
error returns; evaluation entry points debug_assert no scope leaked.
Sourcepub fn end_deferred_dirty(&mut self)
pub fn end_deferred_dirty(&mut self)
End a deferred-dirty scope, flushing the queued propagation when the
outermost scope closes. See Engine::begin_deferred_dirty.
Sourcepub fn dirty_propagation_visits(&self) -> u64
pub fn dirty_propagation_visits(&self) -> u64
Total vertices processed by dirty-propagation BFS loops since graph creation. Perf-shape observability only (cross-crate tests assert batched edits propagate O(component), not O(edits × component)).
pub fn evaluate_vertex( &mut self, vertex_id: VertexId, ) -> Result<LiteralValue, ExcelError>
Sourcepub fn evaluate_until(
&mut self,
targets: &[(&str, u32, u32)],
) -> Result<EvalResult, ExcelError>
pub fn evaluate_until( &mut self, targets: &[(&str, u32, u32)], ) -> Result<EvalResult, ExcelError>
Evaluate only the necessary precedents for specific target cells (demand-driven)
Sourcepub fn build_recalc_plan(&self) -> Result<RecalcPlan, ExcelError>
pub fn build_recalc_plan(&self) -> Result<RecalcPlan, ExcelError>
Build a reusable evaluation plan that covers every formula vertex in the workbook.
Sourcepub fn evaluate_recalc_plan(
&mut self,
plan: &RecalcPlan,
) -> Result<EvalResult, ExcelError>
pub fn evaluate_recalc_plan( &mut self, plan: &RecalcPlan, ) -> Result<EvalResult, ExcelError>
Evaluate using a previously constructed plan. This avoids rebuilding layer schedules for each run.
Source§impl<R> Engine<R>where
R: EvaluationContext,
impl<R> Engine<R>where
R: EvaluationContext,
Sourcepub fn evaluate_all(&mut self) -> Result<EvalResult, ExcelError>
pub fn evaluate_all(&mut self) -> Result<EvalResult, ExcelError>
Evaluate all dirty/volatile vertices
pub fn evaluate_all_with_delta( &mut self, ) -> Result<(EvalResult, EvalDelta), ExcelError>
Sourcepub fn evaluate_cell(
&mut self,
sheet: &str,
row: u32,
col: u32,
) -> Result<Option<LiteralValue>, ExcelError>
pub fn evaluate_cell( &mut self, sheet: &str, row: u32, col: u32, ) -> Result<Option<LiteralValue>, ExcelError>
Convenience: demand-driven evaluation of a single cell by sheet name and row/col.
This will evaluate only the minimal set of dirty / volatile precedents required to bring the target cell up-to-date (as if a user asked for that single value), rather than scheduling a full workbook recalc. If the cell is already clean and non-volatile, no vertices will be recomputed.
Returns the (possibly newly computed) value stored for the cell afterwards. Empty cells return None. Errors are surfaced via the Result type.
Sourcepub fn evaluate_cells(
&mut self,
targets: &[(&str, u32, u32)],
) -> Result<Vec<Option<LiteralValue>>, ExcelError>
pub fn evaluate_cells( &mut self, targets: &[(&str, u32, u32)], ) -> Result<Vec<Option<LiteralValue>>, ExcelError>
Convenience: demand-driven evaluation of multiple cells; accepts a slice of
(sheet, row, col) triples. The union of required dirty / volatile precedents
is computed once and evaluated, which is typically faster than calling
evaluate_cell repeatedly for a related set of targets.
Returns the resulting values for each requested target in the same order.
pub fn evaluate_cells_cancellable( &mut self, targets: &[(&str, u32, u32)], cancel_flag: Arc<AtomicBool>, ) -> Result<Vec<Option<LiteralValue>>, ExcelError>
pub fn evaluate_cells_with_delta( &mut self, targets: &[(&str, u32, u32)], ) -> Result<(Vec<Option<LiteralValue>>, EvalDelta), ExcelError>
Sourcepub fn get_eval_plan(
&self,
targets: &[(&str, u32, u32)],
) -> Result<EvalPlan, ExcelError>
pub fn get_eval_plan( &self, targets: &[(&str, u32, u32)], ) -> Result<EvalPlan, ExcelError>
Get the evaluation plan for target cells without actually evaluating them
Sourcepub fn evaluate_all_cancellable(
&mut self,
cancel_flag: Arc<AtomicBool>,
) -> Result<EvalResult, ExcelError>
pub fn evaluate_all_cancellable( &mut self, cancel_flag: Arc<AtomicBool>, ) -> Result<EvalResult, ExcelError>
Evaluate all dirty/volatile vertices with cancellation support
Sourcepub fn evaluate_until_cancellable(
&mut self,
targets: &[&str],
cancel_flag: Arc<AtomicBool>,
) -> Result<EvalResult, ExcelError>
pub fn evaluate_until_cancellable( &mut self, targets: &[&str], cancel_flag: Arc<AtomicBool>, ) -> Result<EvalResult, ExcelError>
Evaluate only the necessary precedents for specific target cells with cancellation support
Sourcepub fn thread_pool(&self) -> Option<&Arc<ThreadPool>>
pub fn thread_pool(&self) -> Option<&Arc<ThreadPool>>
Get access to the shared thread pool for parallel evaluation
Source§impl<R> Engine<R>where
R: EvaluationContext,
impl<R> Engine<R>where
R: EvaluationContext,
Sourcepub fn evaluate_all_logged(
&mut self,
log: &mut ChangeLog,
) -> Result<EvalResult, ExcelError>
pub fn evaluate_all_logged( &mut self, log: &mut ChangeLog, ) -> Result<EvalResult, ExcelError>
Evaluate all dirty/volatile vertices, recording effects into a ChangeLog.
This is the same flow as evaluate_all but threads a ChangeLog through
every effect application so that spill commits/clears are captured.
Source§impl<R: EvaluationContext> Engine<R>
impl<R: EvaluationContext> Engine<R>
pub fn begin_bulk_ingest(&mut self) -> BulkIngestBuilder<'_>
pub fn intern_formula_ast(&mut self, ast: &ASTNode) -> AstNodeId
Trait Implementations§
Source§impl<R> EvaluationContext for Engine<R>where
R: EvaluationContext,
impl<R> EvaluationContext for Engine<R>where
R: EvaluationContext,
Source§fn resolve_range_view<'c>(
&'c self,
reference: &ReferenceType,
current_sheet: &str,
) -> Result<RangeView<'c>, ExcelError>
fn resolve_range_view<'c>( &'c self, reference: &ReferenceType, current_sheet: &str, ) -> Result<RangeView<'c>, ExcelError>
New: resolve a reference into a RangeView (Phase 2 API)
Source§fn clock(&self) -> &dyn ClockProvider
fn clock(&self) -> &dyn ClockProvider
Source§fn thread_pool(&self) -> Option<&Arc<ThreadPool>>
fn thread_pool(&self) -> Option<&Arc<ThreadPool>>
Source§fn cancellation_token(&self) -> Option<Arc<AtomicBool>>
fn cancellation_token(&self) -> Option<Arc<AtomicBool>>
Source§fn chunk_hint(&self) -> Option<usize>
fn chunk_hint(&self) -> Option<usize>
Source§fn volatile_level(&self) -> VolatileLevel
fn volatile_level(&self) -> VolatileLevel
Source§fn workbook_seed(&self) -> u64
fn workbook_seed(&self) -> u64
Source§fn recalc_epoch(&self) -> u64
fn recalc_epoch(&self) -> u64
Source§fn workbook_sheet_count(&self) -> Option<usize>
fn workbook_sheet_count(&self) -> Option<usize>
Source§fn sheet_index_by_name(&self, sheet: &str) -> Option<usize>
fn sheet_index_by_name(&self, sheet: &str) -> Option<usize>
Source§fn current_sheet_index(&self, current_sheet: &str) -> Option<usize>
fn current_sheet_index(&self, current_sheet: &str) -> Option<usize>
Source§fn inspect_reference(
&self,
reference: &ReferenceType,
current_sheet: &str,
) -> Result<Option<ReferenceInfo>, ExcelError>
fn inspect_reference( &self, reference: &ReferenceType, current_sheet: &str, ) -> Result<Option<ReferenceInfo>, ExcelError>
Source§fn formula_text_at_cell(
&self,
cell: CellRef,
) -> Result<Option<String>, ExcelError>
fn formula_text_at_cell( &self, cell: CellRef, ) -> Result<Option<String>, ExcelError>
Source§fn used_rows_for_columns(
&self,
sheet: &str,
start_col: u32,
end_col: u32,
) -> Option<(u32, u32)>
fn used_rows_for_columns( &self, sheet: &str, start_col: u32, end_col: u32, ) -> Option<(u32, u32)>
Source§fn used_cols_for_rows(
&self,
sheet: &str,
start_row: u32,
end_row: u32,
) -> Option<(u32, u32)>
fn used_cols_for_rows( &self, sheet: &str, start_row: u32, end_row: u32, ) -> Option<(u32, u32)>
Source§fn sheet_bounds(&self, sheet: &str) -> Option<(u32, u32)>
fn sheet_bounds(&self, sheet: &str) -> Option<(u32, u32)>
Source§fn data_snapshot_id(&self) -> u64
fn data_snapshot_id(&self) -> u64
Source§fn backend_caps(&self) -> BackendCaps
fn backend_caps(&self) -> BackendCaps
Source§fn build_lookup_index(
&self,
view: &RangeView<'_>,
axis: LookupAxis,
) -> Option<Arc<LookupIndex>>
fn build_lookup_index( &self, view: &RangeView<'_>, axis: LookupAxis, ) -> Option<Arc<LookupIndex>>
Source§fn date_system(&self) -> DateSystem
fn date_system(&self) -> DateSystem
Source§fn resolve_cell_reference_value(
&self,
sheet: Option<&str>,
row: u32,
col: u32,
current_sheet: &str,
) -> Result<LiteralValue, ExcelError>
fn resolve_cell_reference_value( &self, sheet: Option<&str>, row: u32, col: u32, current_sheet: &str, ) -> Result<LiteralValue, ExcelError>
Source§fn build_criteria_mask(
&self,
view: &RangeView<'_>,
col_in_view: usize,
pred: &CriteriaPredicate,
) -> Option<Arc<BooleanArray>>
fn build_criteria_mask( &self, view: &RangeView<'_>, col_in_view: usize, pred: &CriteriaPredicate, ) -> Option<Arc<BooleanArray>>
Source§fn build_row_visibility_mask(
&self,
view: &RangeView<'_>,
mode: VisibilityMaskMode,
) -> Option<Arc<BooleanArray>>
fn build_row_visibility_mask( &self, view: &RangeView<'_>, mode: VisibilityMaskMode, ) -> Option<Arc<BooleanArray>>
view rows.
Returns None if not supported by the underlying context.Source§fn timezone(&self) -> &TimeZoneSpec
fn timezone(&self) -> &TimeZoneSpec
Source§impl<R> FunctionProvider for Engine<R>where
R: EvaluationContext,
impl<R> FunctionProvider for Engine<R>where
R: EvaluationContext,
Source§impl<R> NamedRangeResolver for Engine<R>where
R: EvaluationContext,
impl<R> NamedRangeResolver for Engine<R>where
R: EvaluationContext,
fn resolve_named_range_reference( &self, name: &str, ) -> Result<Vec<Vec<LiteralValue>>, ExcelError>
Source§impl<R> RangeResolver for Engine<R>where
R: EvaluationContext,
impl<R> RangeResolver for Engine<R>where
R: EvaluationContext,
Source§impl<R> ReferenceResolver for Engine<R>where
R: EvaluationContext,
impl<R> ReferenceResolver for Engine<R>where
R: EvaluationContext,
fn resolve_cell_reference( &self, sheet: Option<&str>, row: u32, col: u32, ) -> Result<LiteralValue, ExcelError>
Source§impl<R> Resolver for Engine<R>where
R: EvaluationContext,
impl<R> Resolver for Engine<R>where
R: EvaluationContext,
fn resolve_range_like( &self, r: &ReferenceType, ) -> Result<Box<dyn Range>, ExcelError>
Source§impl<R> SourceResolver for Engine<R>where
R: EvaluationContext,
impl<R> SourceResolver for Engine<R>where
R: EvaluationContext,
fn source_scalar_version(&self, name: &str) -> Option<u64>
fn resolve_source_scalar(&self, name: &str) -> Result<LiteralValue, ExcelError>
fn source_table_version(&self, name: &str) -> Option<u64>
fn resolve_source_table(&self, name: &str) -> Result<Box<dyn Table>, ExcelError>
Source§impl<R> TableResolver for Engine<R>where
R: EvaluationContext,
impl<R> TableResolver for Engine<R>where
R: EvaluationContext,
fn resolve_table_reference( &self, tref: &TableReference, ) -> Result<Box<dyn Table>, ExcelError>
Auto Trait Implementations§
impl<R> !Freeze for Engine<R>
impl<R> !RefUnwindSafe for Engine<R>
impl<R> !UnwindSafe for Engine<R>
impl<R> Send for Engine<R>where
R: Send,
impl<R> Sync for Engine<R>where
R: Sync,
impl<R> Unpin for Engine<R>where
R: Unpin,
impl<R> UnsafeUnpin for Engine<R>where
R: UnsafeUnpin,
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
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 more