createPostProcessorDartImpl function

Future<PostProcessorDartImpl> createPostProcessorDartImpl({
  1. required String pluginName,
  2. required String pluginVersion,
  3. required FutureOr<void> process(
    1. ExtractedDocument,
    2. ExtractionConfig
    ),
  4. required FutureOr<ProcessingStage> processingStage(),
  5. required FutureOr<bool> shouldProcess(
    1. ExtractedDocument,
    2. ExtractionConfig
    ),
  6. required FutureOr<PlatformInt64> estimatedDurationMs(
    1. ExtractedDocument
    ),
  7. required FutureOr<PlatformInt64> priority(),
})

Construct a PostProcessorDartImpl from Dart callback closures. FRB synthesises a Dart-callable function type for each closure parameter, which is the whole point of taking them as impl Fn(...) -> DartFnFuture<R> parameters rather than storing them as Box<dyn Fn(...)> fields on an opaque struct (FRB v2 silently drops factories that return opaque structs whose fields it cannot bridge). The returned wrapper holds an Arc<dyn Trait + Send + Sync> whose backing object carries the supplied callbacks privately. plugin_name and plugin_version are required for the Plugin super-trait.

Implementation

Future<PostProcessorDartImpl> createPostProcessorDartImpl({
  required String pluginName,
  required String pluginVersion,
  required FutureOr<void> Function(ExtractedDocument, ExtractionConfig) process,
  required FutureOr<ProcessingStage> Function() processingStage,
  required FutureOr<bool> Function(ExtractedDocument, ExtractionConfig)
  shouldProcess,
  required FutureOr<PlatformInt64> Function(ExtractedDocument)
  estimatedDurationMs,
  required FutureOr<PlatformInt64> Function() priority,
}) => RustLib.instance.api.crateCreatePostProcessorDartImpl(
  pluginName: pluginName,
  pluginVersion: pluginVersion,
  process: process,
  processingStage: processingStage,
  shouldProcess: shouldProcess,
  estimatedDurationMs: estimatedDurationMs,
  priority: priority,
);