pub enum Isolation {
Trusted,
Untrusted,
}Expand description
How a filter is instantiated and isolated (ADR 000004 / 000011). Not a “trust score”: it selects the instance lifecycle, mirroring how Fastly/Spin model per-request vs reusable sandboxes. Who is trusted is decided elsewhere (OCI signing, ADR 000006); this only says which lifecycle a loaded filter gets.
Variants§
Trusted
Own filters: a pool of reusable instances, init once per instance, checked out per
request (ADR 000012). No per-request zeroization (same trust domain). Statelessness
(Fork 4) is therefore honored by trust, not enforced: a trusted filter that stashes
mutable state in its own linear memory silently carries it across requests on a reused
instance — and, with a pool, which instance a request lands on becomes observable
(§6.6 footgun). That is not a security boundary (same trust domain); periodic recycling
(max_requests_per_instance) bounds the accumulation, but only Untrusted’s
fresh-per-request memory enforces statelessness structurally (ADR 000011).
Untrusted
Third-party filters: fresh instance per request, memory fresh by construction.
Trait Implementations§
impl Copy for Isolation
impl Eq for Isolation
impl StructuralPartialEq for Isolation
Auto Trait Implementations§
impl Freeze for Isolation
impl RefUnwindSafe for Isolation
impl Send for Isolation
impl Sync for Isolation
impl Unpin for Isolation
impl UnsafeUnpin for Isolation
impl UnwindSafe for Isolation
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<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<T> FutureExt for T
impl<T> FutureExt for T
Source§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
Source§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
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