#[non_exhaustive]pub enum InteropMode {
Strict,
Relaxed,
}Expand description
How tolerant the protocol layers are of header ambiguity and non-conformant partner behaviour.
§This does not govern message security
Neither this enum nor the interop-strict Cargo feature has any bearing on
whether messages must be signed or encrypted. The name invites the opposite
inference, so to be explicit:
| Axis | Controlled by | Governs |
|---|---|---|
| Interop | InteropMode / interop-strict | Header parsing, ambiguity tolerance, scoped exception guardrails |
| Security | SecurityPolicy / BaseProfile::security_floor | Whether signature and encryption are required |
A profile can be InteropMode::Strict and still resolve to
require_encryption: false; conversely a relaxed profile can mandate
sign-and-encrypt. Enforce the security axis with
ProfileStack::validate_with_floor, not by selecting a strict mode.
Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
Strict
Strict interoperability mode — RFC/spec behaviour enforced at every decision point.
Strict here means strict about the wire format. It says nothing about the security policy; see the type-level documentation.
Relaxed
Relaxed interoperability mode — permits deviations from strict AS2/AS4 profile requirements to accommodate legacy or non-conformant partners.
§Feature gate
This variant is only available when the interop-relaxed Cargo
feature is enabled:
[dependencies]
asx-rs = { version = "0.14", features = ["interop-relaxed"] }Trait Implementations§
Source§impl Clone for InteropMode
impl Clone for InteropMode
Source§fn clone(&self) -> InteropMode
fn clone(&self) -> InteropMode
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreimpl Copy for InteropMode
Source§impl Debug for InteropMode
impl Debug for InteropMode
Source§impl Default for InteropMode
impl Default for InteropMode
Source§fn default() -> InteropMode
fn default() -> InteropMode
Source§impl<'de> Deserialize<'de> for InteropMode
impl<'de> Deserialize<'de> for InteropMode
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
impl Eq for InteropMode
Source§impl PartialEq for InteropMode
impl PartialEq for InteropMode
Source§impl Serialize for InteropMode
impl Serialize for InteropMode
impl StructuralPartialEq for InteropMode
Auto Trait Implementations§
impl Freeze for InteropMode
impl RefUnwindSafe for InteropMode
impl Send for InteropMode
impl Sync for InteropMode
impl Unpin for InteropMode
impl UnsafeUnpin for InteropMode
impl UnwindSafe for InteropMode
Blanket Implementations§
Source§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
Source§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
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