#[non_exhaustive]pub struct NativeFnGate {
pub reads_fs: bool,
pub writes_fs: bool,
pub network: bool,
pub reads_clock: bool,
pub reads_env: bool,
pub uses_rng: bool,
}Expand description
Capability requirements declared per native function at registration
time. The gate compares these against the context-wide
Capabilities grant when the function is invoked under sandbox.
A pure function (no host capability needed) carries
NativeFnGate::default() — every bit zero. The gate check is
trivially satisfied by any Capabilities value, including a
fully-sandboxed Capabilities::default.
#[non_exhaustive]: future capability bits are added here without a
breaking semver bump. External callers should construct via
NativeFnGate::default() and set the bits they need rather than
relying on positional struct literals.
Fields (Non-exhaustive)§
This struct is marked as non-exhaustive
Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.reads_fs: boolFunction reads from the filesystem.
writes_fs: boolFunction writes to or mutates the filesystem.
network: boolFunction makes network requests.
reads_clock: boolFunction reads wall / monotonic clocks.
reads_env: boolFunction reads process environment.
uses_rng: boolFunction consumes randomness from a non-deterministic source.
Implementations§
Source§impl NativeFnGate
impl NativeFnGate
Sourcepub fn missing_bits(&self, caps: &Capabilities) -> Vec<&'static str>
pub fn missing_bits(&self, caps: &Capabilities) -> Vec<&'static str>
Capability bits required by this gate that are not granted in
caps. Iteration order is the field-declaration order; runtime
uses the first entry as the failure reason, analyzer emits one
diagnostic per entry. The returned strings are the canonical
CapabilityBit::as_str labels ("reads_fs", "writes_fs",
"network", "reads_clock", "reads_env", "uses_rng").
Sourcepub fn required_bit_indices(&self) -> Vec<u32>
pub fn required_bit_indices(&self) -> Vec<u32>
Capability bit indices this gate requires, in field-declaration
order, regardless of any grant. The IR lowering pass emits
one CapabilityBit-tagged Op::CheckCap per entry ahead of
the guarded Op::CallNative, so the runtime consult fires on
every required bit (the grant is checked at dispatch time, not
here). Mirrors Self::missing_bits’s ordering but drops the
grant filter — lowering doesn’t know the host’s runtime posture,
only the static requirement. Indices match
CapabilityBit::bit_index (ReadsFs=0 … UsesRng=5).
Trait Implementations§
Source§impl Clone for NativeFnGate
impl Clone for NativeFnGate
Source§fn clone(&self) -> NativeFnGate
fn clone(&self) -> NativeFnGate
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for NativeFnGate
impl Debug for NativeFnGate
Source§impl Default for NativeFnGate
impl Default for NativeFnGate
Source§fn default() -> NativeFnGate
fn default() -> NativeFnGate
Auto Trait Implementations§
impl Freeze for NativeFnGate
impl RefUnwindSafe for NativeFnGate
impl Send for NativeFnGate
impl Sync for NativeFnGate
impl Unpin for NativeFnGate
impl UnsafeUnpin for NativeFnGate
impl UnwindSafe for NativeFnGate
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<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