pub enum TranscodeConvertError<DE, EE, V> {
Failure(TranscodeFailure),
DecodeDomain(TranscodeDomainError<DE>),
EncodeDomain(TranscodeDomainError<EE>),
Unencodable {
input_index: usize,
value: Option<V>,
},
}Expand description
Error reported by a unit-to-unit transcode conversion.
§Type Parameters
DE: Source decoder domain error.EE: Target encoder domain error.V: Owned intermediate value retained when encoding is rejected.
For values emitted by the source codec’s decode reset or finish phase, the converter uses placeholder input index 0 in encode contexts and errors. Such values have no source-unit position, and index 0 cannot distinguish them from a value decoded at source index 0. Ordinary decoded values retain their index in the input slice supplied to the decode call that produced them. A pending value keeps that index across calls; it is not rebased to a later input slice and is not a whole-stream offset. The retained index may be outside the bounds of a later input slice. Error phases describe the underlying codec operation, so encoding a lifecycle-generated value uses the main encode path even during converter reset or finish.
§Examples
use qubit_codec::TranscodeConvertError;
let error = TranscodeConvertError::<&str, &str, u8>::unencodable(3, 42);
assert_eq!(error.unencodable_ref(), Some((3, Some(&42))));
assert_eq!(error.failure_ref(), None);Variants§
Failure(TranscodeFailure)
Framework-level transcode failure.
Tuple Fields
0: TranscodeFailureFramework contract, capacity, or lifecycle failure.
DecodeDomain(TranscodeDomainError<DE>)
Source-side domain error.
Tuple Fields
0: TranscodeDomainError<DE>Owned source error with its lifecycle phase and input context.
EncodeDomain(TranscodeDomainError<EE>)
Target-side domain error.
Tuple Fields
0: TranscodeDomainError<EE>Owned target error with its lifecycle phase and input context.
Unencodable
The decoded intermediate value cannot be encoded by the target codec and policy.
Fields
input_index: usizeSource input index of the value being encoded. Lifecycle-generated converter values use placeholder 0 because they have no source-unit position; ordinary decoded values retain their index in the input slice supplied to the decode call that produced them, including when kept pending across calls.
Implementations§
Source§impl<DE, EE, V> TranscodeConvertError<DE, EE, V>
impl<DE, EE, V> TranscodeConvertError<DE, EE, V>
Sourcepub const fn decode_domain_reset(source: DE) -> Self
pub const fn decode_domain_reset(source: DE) -> Self
Sourcepub const fn decode_domain_main(source: DE, input_index: usize) -> Self
pub const fn decode_domain_main(source: DE, input_index: usize) -> Self
Sourcepub const fn decode_domain_main_with_consumed(
source: DE,
input_index: usize,
input_consumed: Option<NonZeroUsize>,
) -> Self
pub const fn decode_domain_main_with_consumed( source: DE, input_index: usize, input_consumed: Option<NonZeroUsize>, ) -> Self
Creates a source main-phase converter error with decode consumption context.
§Parameters
source: Owned source error raised during conversion.input_index: Source index for the failed operation. For a lifecycle-generated converter value, use placeholder 0 because it has no source-unit position; an ordinary decoded value retains its index in the slice supplied to the decode call that produced it, even when kept pending across calls.input_consumed:Somerecords invalid units consumed;Nonemeans unknown.
§Returns
Returns a source-domain main-phase error retaining consumption context.
Sourcepub const fn decode_domain_finish(source: DE) -> Self
pub const fn decode_domain_finish(source: DE) -> Self
Sourcepub const fn encode_domain_reset(source: EE) -> Self
pub const fn encode_domain_reset(source: EE) -> Self
Sourcepub const fn encode_domain_main(source: EE, input_index: usize) -> Self
pub const fn encode_domain_main(source: EE, input_index: usize) -> Self
Creates a target main-phase domain-specific converter error.
§Parameters
source: Owned target error raised during conversion.input_index: Source index for the failed operation. For a lifecycle-generated converter value, use placeholder 0 because it has no source-unit position; an ordinary decoded value retains its index in the slice supplied to the decode call that produced it, even when kept pending across calls.
§Returns
Returns a target-domain main-phase error at the supplied input index. The main phase identifies the underlying encode operation, including when a converter invokes it during reset or finish.
Sourcepub const fn encode_domain_finish(source: EE) -> Self
pub const fn encode_domain_finish(source: EE) -> Self
Sourcepub fn unencodable(input_index: usize, value: V) -> Self
pub fn unencodable(input_index: usize, value: V) -> Self
Creates an unencodable intermediate-value error with value context.
§Parameters
input_index: Source index of the rejected value. Lifecycle-generated converter values use placeholder 0 because they have no source-unit position; an ordinary decoded value retains its index in the slice supplied to the decode call that produced it, even when kept pending across calls.value: Intermediate value moved into the error for recovery.
§Returns
Returns an unencodable error owning Some(value).
Sourcepub const fn unencodable_without_context(input_index: usize) -> Self
pub const fn unencodable_without_context(input_index: usize) -> Self
Creates an unencodable intermediate-value error without value context.
§Parameters
input_index: Source index of the rejected value. Lifecycle-generated converter values use placeholder 0 because they have no source-unit position; an ordinary decoded value retains its index in the slice supplied to the decode call that produced it, even when kept pending across calls.
§Returns
Returns an unencodable error with absent (None) value context.
Sourcepub fn from_encode_error_with_value(
error: TranscodeEncodeError<EE, V>,
fallback_value: V,
) -> Self
pub fn from_encode_error_with_value( error: TranscodeEncodeError<EE, V>, fallback_value: V, ) -> Self
Converts an encode error into a converter error while adding fallback value context to unencodable errors that lack it.
§Parameters
error: Owned target-side error to convert.fallback_value: Value moved into absent context, or dropped if not needed.
§Returns
Returns the converted error, adding the fallback only when unencodable value context is absent.
Sourcepub const fn failure_ref(&self) -> Option<&TranscodeFailure>
pub const fn failure_ref(&self) -> Option<&TranscodeFailure>
Returns the framework failure carried by this error.
§Returns
Returns Some for a framework failure, or None for domain and
unencodable errors.
Sourcepub const fn unencodable_ref(&self) -> Option<(usize, Option<&V>)>
pub const fn unencodable_ref(&self) -> Option<(usize, Option<&V>)>
Borrows the unencodable value context carried by this error.
§Returns
Returns Some((index, value)) for an unencodable error and None
otherwise. The inner Some borrows retained value context; inner
None means it is absent.
Sourcepub fn map_decode_domain<F, T>(self, f: F) -> TranscodeConvertError<T, EE, V>where
F: FnOnce(DE) -> T,
pub fn map_decode_domain<F, T>(self, f: F) -> TranscodeConvertError<T, EE, V>where
F: FnOnce(DE) -> T,
Maps the source domain error while preserving other errors.
§Type Parameters
F: One-shot transformation fromDEtoT.T: Replacement payload type.
§Parameters
f: Invoked only for a source-domain error; otherwise dropped without being called.
§Returns
Returns an owned error preserving all other variants and positional context.
§Panics
Propagates a panic if the invoked transformation panics.
Sourcepub fn map_encode_domain<F, T>(self, f: F) -> TranscodeConvertError<DE, T, V>where
F: FnOnce(EE) -> T,
pub fn map_encode_domain<F, T>(self, f: F) -> TranscodeConvertError<DE, T, V>where
F: FnOnce(EE) -> T,
Maps the target domain error while preserving other errors.
§Type Parameters
F: One-shot transformation fromEEtoT.T: Replacement payload type.
§Parameters
f: Invoked only for a target-domain error; otherwise dropped without being called.
§Returns
Returns an owned error preserving all other variants and positional context.
§Panics
Propagates a panic if the invoked transformation panics.
Sourcepub fn map_value<F, W>(self, f: F) -> TranscodeConvertError<DE, EE, W>where
F: FnOnce(V) -> W,
pub fn map_value<F, W>(self, f: F) -> TranscodeConvertError<DE, EE, W>where
F: FnOnce(V) -> W,
Maps value context carried by unencodable-value errors.
§Type Parameters
F: One-shot transformation fromVtoW.W: Replacement payload type.
§Parameters
f: Invoked only for present unencodable value context; otherwise dropped without being called.
§Returns
Returns an owned error preserving all other variants and positional context.
§Panics
Propagates a panic if the invoked transformation panics.
Trait Implementations§
Source§impl<DE, EE, V> Display for TranscodeConvertError<DE, EE, V>
impl<DE, EE, V> Display for TranscodeConvertError<DE, EE, V>
impl<DE: Eq, EE: Eq, V: Eq> Eq for TranscodeConvertError<DE, EE, V>
Source§impl<DE, EE, V> Error for TranscodeConvertError<DE, EE, V>where
TranscodeDomainError<DE>: Error + 'static,
TranscodeDomainError<EE>: Error + 'static,
Self: Debug + Display,
impl<DE, EE, V> Error for TranscodeConvertError<DE, EE, V>where
TranscodeDomainError<DE>: Error + 'static,
TranscodeDomainError<EE>: Error + 'static,
Self: Debug + Display,
Source§fn source(&self) -> Option<&(dyn Error + 'static)>
fn source(&self) -> Option<&(dyn Error + 'static)>
1.0.0 · Source§fn description(&self) -> &str
fn description(&self) -> &str
use the Display impl or to_string()