pub struct ReferenceProcessorEnv { /* private fields */ }Expand description
Interprets processing programs over an in-memory artifact set.
Implementations§
Source§impl ReferenceProcessorEnv
impl ReferenceProcessorEnv
Sourcepub fn new(artifacts: ArtifactSet) -> Self
pub fn new(artifacts: ArtifactSet) -> Self
Constructs a processing environment with initial artifacts.
Sourcepub fn register(
&mut self,
processor: ReferenceProcessor,
) -> Option<ReferenceProcessor>
pub fn register( &mut self, processor: ReferenceProcessor, ) -> Option<ReferenceProcessor>
Registers a processor by semantic identity.
Sourcepub fn artifacts(&self) -> &ArtifactSet
pub fn artifacts(&self) -> &ArtifactSet
Observes the current artifact set.
Sourcepub fn trace(&self) -> &[ProcessingStep]
pub fn trace(&self) -> &[ProcessingStep]
Observes successfully applied steps in application order.
Trait Implementations§
Source§impl Debug for ReferenceProcessorEnv
impl Debug for ReferenceProcessorEnv
Source§impl Default for ReferenceProcessorEnv
impl Default for ReferenceProcessorEnv
Source§impl ProcessingApplyAlg for ReferenceProcessorEnv
impl ProcessingApplyAlg for ReferenceProcessorEnv
Source§type Error = ReferenceProcessingError
type Error = ReferenceProcessingError
Source§fn apply_processing_step(
&mut self,
step: &ProcessingStep,
) -> Result<(), Self::Error>
fn apply_processing_step( &mut self, step: &ProcessingStep, ) -> Result<(), Self::Error>
Source§impl ProcessingProgramViewAlg for ReferenceProcessorEnv
impl ProcessingProgramViewAlg for ReferenceProcessorEnv
Source§fn processing_steps<'a>(
program: &'a Self::Program,
) -> impl Iterator<Item = &'a Self::Step>where
Self::Step: 'a,
fn processing_steps<'a>(
program: &'a Self::Program,
) -> impl Iterator<Item = &'a Self::Step>where
Self::Step: 'a,
Source§fn processing_stage(step: &Self::Step) -> ProcessingStage
fn processing_stage(step: &Self::Step) -> ProcessingStage
Auto Trait Implementations§
impl Freeze for ReferenceProcessorEnv
impl RefUnwindSafe for ReferenceProcessorEnv
impl Send for ReferenceProcessorEnv
impl Sync for ReferenceProcessorEnv
impl Unpin for ReferenceProcessorEnv
impl UnsafeUnpin for ReferenceProcessorEnv
impl UnwindSafe for ReferenceProcessorEnv
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<This> GaugeLaws<This> for This
impl<This> GaugeLaws<This> for This
Source§fn gauge_laws(&self) -> Result<(), Error>
fn gauge_laws(&self) -> Result<(), Error>
Checks that a gauge states a share without claiming more resolution than it has.
The laws checked are:
- a gauge occupies its stated width whatever share it states;
- no share is stated as filled before it is reached, and none is stated twice;
- nothing stated is nothing filled, and everything stated fills the whole track;
- the stated text occupies exactly one cell per counted cell.
§Errors
Returns the first violated law.
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 moreSource§impl<This> IntoExt<This> for This
impl<This> IntoExt<This> for This
Source§fn to<R>(self) -> Rwhere
This: Into<R>,
fn to<R>(self) -> Rwhere
This: Into<R>,
A version of Into::into function that can be used to explicitly specify the target
conversion type.
use alux_sdk::*;
// `Into` requires context to infer the type,
let _: i64 = Into::into(42_i8);
// The opposite `From` requires context to infer the type,
let _: i64 = From::from(42_i8);
// `.to()` can be used in the same way as a postfix function (the same as `.into()`),
let _: i64 = 42_i8.to();
// but also with the type specified explicitly.
let _ = 42_i8.to::<i64>();
// Especially useful to chain multiple conversions inline.
let _: i64 = 42_i8.to::<i16>().to::<i32>().into();Source§impl<This> IntoIteratorExt<This> for This
impl<This> IntoIteratorExt<This> for This
Source§fn try_collect_vec<T, E>(self) -> Result<Vec<T>, E>
fn try_collect_vec<T, E>(self) -> Result<Vec<T>, E>
A variant of the try_collect and collect_vec combined function from the Itertools
library. The materialized value is a Vec inside a Result object.
Returns the first error without collecting later values.
use alux_sdk::*;
let values = [Ok::<_, &str>(1), Ok(2), Ok(3)]
.into_iter()
.try_collect_vec();
assert_eq!(values, Ok(vec![1, 2, 3]));Source§fn collect_exact<T>(self, n: usize) -> Option<Vec<T>>where
This: Iterator<Item = T>,
fn collect_exact<T>(self, n: usize) -> Option<Vec<T>>where
This: Iterator<Item = T>,
Takes exactly n elements from the iterator.
Returns Some(Vec<T>) if the iterator yields exactly n elements,
otherwise returns None.
use alux_sdk::*;
let v = [1, 2, 3];
assert_eq!(v.iter().copied().collect_exact(3), Some(vec![1, 2, 3]));
assert_eq!(v.iter().copied().collect_exact(4), None);
assert_eq!(v.iter().copied().collect_exact(2), None);Source§fn try_unzip<A, B, E>(self) -> Result<(Vec<A>, Vec<B>), E>
fn try_unzip<A, B, E>(self) -> Result<(Vec<A>, Vec<B>), E>
Efficiently splits an iterator of Result<(A, B), E> into two Vecs, short-circuiting on error.
Consumes the iterator, collecting all A elements into one vector and all B elements into another,
without first allocating an intermediate vector of tuples. Returns the tuple (Vec<A>, Vec<B>) on success,
or the first error encountered.
use alux_sdk::*;
let input = vec![Ok((1, "x")), Ok((2, "y"))];
let (xs, ys) = input.try_unzip::<_, _, ()>().unwrap();
assert_eq!(xs, vec![1, 2]);
assert_eq!(ys, vec!["x", "y"]);Source§impl<This, Step, Program> ProcessingExt<This, Step, Program> for Thiswhere
This: ProcessingApplyAlg<Step = Step, Step = Step, Program = Program> + ProcessingProgramViewAlg,
impl<This, Step, Program> ProcessingExt<This, Step, Program> for Thiswhere
This: ProcessingApplyAlg<Step = Step, Step = Step, Program = Program> + ProcessingProgramViewAlg,
Source§fn run_processing_program(
&mut self,
program: &Program,
) -> Result<(), <This as ProcessingApplyAlg>::Error>
fn run_processing_program( &mut self, program: &Program, ) -> Result<(), <This as ProcessingApplyAlg>::Error>
Interprets every step in declaration order.
§Errors
Returns the first step-application error and does not apply later steps.
Source§fn run_processing_stage(
&mut self,
program: &Program,
stage: ProcessingStage,
) -> Result<(), <This as ProcessingApplyAlg>::Error>
fn run_processing_stage( &mut self, program: &Program, stage: ProcessingStage, ) -> Result<(), <This as ProcessingApplyAlg>::Error>
Interprets one stage while preserving relative declaration order.
§Errors
Returns the first selected step-application error and does not apply later selected steps.