Skip to main content

ProcessorRegistry

Struct ProcessorRegistry 

Source
pub struct ProcessorRegistry { /* private fields */ }
Expand description

Registry of structured processors.

Thread-safe (processors are Arc<dyn Processor>) and can be shared across threads via Arc<ProcessorRegistry>.

Implementations§

Source§

impl ProcessorRegistry

Source

pub fn new() -> Self

Create an empty registry.

Source

pub fn with_builtins() -> Self

Create a registry pre-populated with all built-in processors.

Source

pub fn register(&mut self, processor: Arc<dyn Processor>)

Register a processor. Overwrites any existing processor with the same name.

Source

pub fn get(&self, name: &str) -> Option<&Arc<dyn Processor>>

Look up a processor by its name.

Source

pub fn names(&self) -> Vec<&str>

List all registered processor names.

Source

pub fn len(&self) -> usize

Number of registered processors.

Source

pub fn is_empty(&self) -> bool

Whether the registry is empty.

Source

pub fn find_processor( &self, content: &[u8], profile: &FileTypeProfile, ) -> Option<&Arc<dyn Processor>>

Find a processor that can handle the given content + profile.

  1. If the profile names a specific processor, look it up directly.
  2. Otherwise, iterate all processors and return the first whose can_handle returns true.

Returns None if no processor matches (caller should fall back to the streaming scanner).

Source

pub fn process( &self, content: &[u8], profile: &FileTypeProfile, store: &MappingStore, ) -> Result<Option<Vec<u8>>>

Process content using the matching processor.

Returns Ok(Some(output)) if a processor matched and succeeded, Ok(None) if no processor matches (caller should fall back), or Err(...) if processing failed.

§Errors

Returns the underlying processor’s error if processing fails.

Trait Implementations§

Source§

impl Default for ProcessorRegistry

Source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V