pub struct SessionEnvironment { /* private fields */ }Expand description
A launched session’s resolved environment.
Not Serialize (its grants may hold snapshotted values); serialize
SessionEnvironment::receipts instead.
Implementations§
Source§impl SessionEnvironment
impl SessionEnvironment
Sourcepub fn launch(
kind: EnvironmentPolicyKind,
specs: Vec<GrantSpec>,
env_lookup: &dyn Fn(&str) -> Option<String>,
) -> Result<Self, EnvironmentPolicyError>
pub fn launch( kind: EnvironmentPolicyKind, specs: Vec<GrantSpec>, env_lookup: &dyn Fn(&str) -> Option<String>, ) -> Result<Self, EnvironmentPolicyError>
Launch an environment from the config’s declared grant specs, resolving each against the launcher environment.
An isolated policy rejects any grant at launch — isolation is an enforced structural property, not an assertion made after the fact. A granted policy resolves and carries the declared grant set.
Sourcepub fn launch_from_snapshot(
kind: EnvironmentPolicyKind,
specs: Vec<GrantSpec>,
launcher_snapshot: BTreeMap<String, String>,
env_lookup: &dyn Fn(&str) -> Option<String>,
) -> Result<Self, EnvironmentPolicyError>
pub fn launch_from_snapshot( kind: EnvironmentPolicyKind, specs: Vec<GrantSpec>, launcher_snapshot: BTreeMap<String, String>, env_lookup: &dyn Fn(&str) -> Option<String>, ) -> Result<Self, EnvironmentPolicyError>
Resolve a session from one authoritative launcher snapshot.
env_lookup exists for embedders that supply a typed environment
source. Production callers normally pass a lookup over the same
snapshot, while tests can provide a small deterministic map.
pub fn kind(&self) -> EnvironmentPolicyKind
pub fn is_isolated(&self) -> bool
Sourcepub fn allows_implicit_discovery(&self) -> bool
pub fn allows_implicit_discovery(&self) -> bool
Whether provider SDKs may use platform-managed ambient discovery such as AWS shared config, metadata services, or application-default credentials.
Sourcepub fn narrow(
&self,
requested: EnvironmentPolicyKind,
specs: Vec<GrantSpec>,
) -> Result<Self, EnvironmentPolicyError>
pub fn narrow( &self, requested: EnvironmentPolicyKind, specs: Vec<GrantSpec>, ) -> Result<Self, EnvironmentPolicyError>
Derive a child session without allowing it to gain environment authority that its parent did not have.
Sourcepub fn grants(&self) -> &[SessionGrant]
pub fn grants(&self) -> &[SessionGrant]
The resolved grants. Empty for an isolated policy, always.
Sourcepub fn receipts(&self) -> Vec<GrantReceipt>
pub fn receipts(&self) -> Vec<GrantReceipt>
The non-secret receipts recorded on the session run-record. Empty for an
isolated policy, which makes grants: [] a checked property.
Sourcepub fn env_exposure(
&self,
resolve_secret: &dyn Fn(&str, &str) -> Option<String>,
) -> Result<Vec<(String, String)>, EnvironmentPolicyError>
pub fn env_exposure( &self, resolve_secret: &dyn Fn(&str, &str) -> Option<String>, ) -> Result<Vec<(String, String)>, EnvironmentPolicyError>
Materialize the process environment overlay for process.exec: the
(VAR, value) pairs for every grant that opted into expose_as_env.
Empty for an isolated policy.
Callers receive uniform pairs and never see the source kind;
SessionGrant::exposure owns that branch.
Exposure is session-wide: harness.env, providers, and every spawned
command consult the same target mapping.
Sourcepub fn env_exposure_for(
&self,
var: &str,
resolve_secret: &dyn Fn(&str, &str) -> Option<String>,
) -> Result<Option<String>, EnvironmentPolicyError>
pub fn env_exposure_for( &self, var: &str, resolve_secret: &dyn Fn(&str, &str) -> Option<String>, ) -> Result<Option<String>, EnvironmentPolicyError>
The value this environment exposes under a single environment variable, or
None if no grant targets it.
The narrow counterpart of env_exposure, for a
consumer resolving one variable — harn’s own provider-credential lookup.
It resolves only the grant that targets var, which matters for a
secret_store grant: probing an unrelated variable must not reach the
secret store, and one unresolvable grant must not mask an unrelated
credential. Launch validation guarantees at most one matching grant.
Trait Implementations§
Source§impl Clone for SessionEnvironment
impl Clone for SessionEnvironment
Source§fn clone(&self) -> SessionEnvironment
fn clone(&self) -> SessionEnvironment
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 SessionEnvironment
impl Debug for SessionEnvironment
impl Eq for SessionEnvironment
Source§impl PartialEq for SessionEnvironment
impl PartialEq for SessionEnvironment
impl StructuralPartialEq for SessionEnvironment
Auto Trait Implementations§
impl Freeze for SessionEnvironment
impl RefUnwindSafe for SessionEnvironment
impl Send for SessionEnvironment
impl Sync for SessionEnvironment
impl Unpin for SessionEnvironment
impl UnsafeUnpin for SessionEnvironment
impl UnwindSafe for SessionEnvironment
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
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§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 moreSource§impl<T> Paint for Twhere
T: ?Sized,
impl<T> Paint for Twhere
T: ?Sized,
Source§fn fg(&self, value: Color) -> Painted<&T>
fn fg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self with the foreground set to
value.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like red() and
green(), which have the same functionality but are
pithier.
§Example
Set foreground color to white using fg():
use yansi::{Paint, Color};
painted.fg(Color::White);Set foreground color to white using white().
use yansi::Paint;
painted.white();Source§fn bright_black(&self) -> Painted<&T>
fn bright_black(&self) -> Painted<&T>
Source§fn bright_red(&self) -> Painted<&T>
fn bright_red(&self) -> Painted<&T>
Source§fn bright_green(&self) -> Painted<&T>
fn bright_green(&self) -> Painted<&T>
Source§fn bright_yellow(&self) -> Painted<&T>
fn bright_yellow(&self) -> Painted<&T>
Source§fn bright_blue(&self) -> Painted<&T>
fn bright_blue(&self) -> Painted<&T>
Source§fn bright_magenta(&self) -> Painted<&T>
fn bright_magenta(&self) -> Painted<&T>
Source§fn bright_cyan(&self) -> Painted<&T>
fn bright_cyan(&self) -> Painted<&T>
Source§fn bright_white(&self) -> Painted<&T>
fn bright_white(&self) -> Painted<&T>
Source§fn bg(&self, value: Color) -> Painted<&T>
fn bg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self with the background set to
value.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like on_red() and
on_green(), which have the same functionality but
are pithier.
§Example
Set background color to red using fg():
use yansi::{Paint, Color};
painted.bg(Color::Red);Set background color to red using on_red().
use yansi::Paint;
painted.on_red();Source§fn on_primary(&self) -> Painted<&T>
fn on_primary(&self) -> Painted<&T>
Source§fn on_magenta(&self) -> Painted<&T>
fn on_magenta(&self) -> Painted<&T>
Source§fn on_bright_black(&self) -> Painted<&T>
fn on_bright_black(&self) -> Painted<&T>
Source§fn on_bright_red(&self) -> Painted<&T>
fn on_bright_red(&self) -> Painted<&T>
Source§fn on_bright_green(&self) -> Painted<&T>
fn on_bright_green(&self) -> Painted<&T>
Source§fn on_bright_yellow(&self) -> Painted<&T>
fn on_bright_yellow(&self) -> Painted<&T>
Source§fn on_bright_blue(&self) -> Painted<&T>
fn on_bright_blue(&self) -> Painted<&T>
Source§fn on_bright_magenta(&self) -> Painted<&T>
fn on_bright_magenta(&self) -> Painted<&T>
Source§fn on_bright_cyan(&self) -> Painted<&T>
fn on_bright_cyan(&self) -> Painted<&T>
Source§fn on_bright_white(&self) -> Painted<&T>
fn on_bright_white(&self) -> Painted<&T>
Source§fn attr(&self, value: Attribute) -> Painted<&T>
fn attr(&self, value: Attribute) -> Painted<&T>
Enables the styling Attribute value.
This method should be used rarely. Instead, prefer to use
attribute-specific builder methods like bold() and
underline(), which have the same functionality
but are pithier.
§Example
Make text bold using attr():
use yansi::{Paint, Attribute};
painted.attr(Attribute::Bold);Make text bold using using bold().
use yansi::Paint;
painted.bold();Source§fn rapid_blink(&self) -> Painted<&T>
fn rapid_blink(&self) -> Painted<&T>
Source§fn quirk(&self, value: Quirk) -> Painted<&T>
fn quirk(&self, value: Quirk) -> Painted<&T>
Enables the yansi Quirk value.
This method should be used rarely. Instead, prefer to use quirk-specific
builder methods like mask() and
wrap(), which have the same functionality but are
pithier.
§Example
Enable wrapping using .quirk():
use yansi::{Paint, Quirk};
painted.quirk(Quirk::Wrap);Enable wrapping using wrap().
use yansi::Paint;
painted.wrap();Source§fn clear(&self) -> Painted<&T>
👎Deprecated since 1.0.1: renamed to resetting() due to conflicts with Vec::clear().
The clear() method will be removed in a future release.
fn clear(&self) -> Painted<&T>
renamed to resetting() due to conflicts with Vec::clear().
The clear() method will be removed in a future release.
Source§fn whenever(&self, value: Condition) -> Painted<&T>
fn whenever(&self, value: Condition) -> Painted<&T>
Conditionally enable styling based on whether the Condition value
applies. Replaces any previous condition.
See the crate level docs for more details.
§Example
Enable styling painted only when both stdout and stderr are TTYs:
use yansi::{Paint, Condition};
painted.red().on_yellow().whenever(Condition::STDOUTERR_ARE_TTY);