Skip to main content

Granter

Struct Granter 

Source
pub struct Granter<K: SigningCredential> { /* private fields */ }
Expand description

Loads a source credential and grants a bounded service credential.

Granter caches only the source credential. Every call to Granter::grant invokes the configured service granter and validates the returned credential after all granting I/O has completed. Granted outputs are never cached or written back into the source cache.

Implementations§

Source§

impl<K: SigningCredential> Granter<K>

Source

pub fn new( ctx: Context, provider: impl ProvideCredential<Credential = K>, granter: impl GrantCredential<Credential = K>, ) -> Self

Create a granter from a context, source provider, and bound granting operation.

Source

pub fn with_context(self, ctx: Context) -> Self

Replace the context and create an isolated empty source credential cache.

Source

pub fn with_credential_provider( self, provider: impl ProvideCredential<Credential = K>, ) -> Self

Replace the source provider and create an isolated empty source credential cache.

Source

pub fn with_credential_granter( self, granter: impl GrantCredential<Credential = K>, ) -> Self

Replace the granting operation while retaining the shared source credential cache.

The replacement operation must accept the same service credential family and must still validate the same concrete source credential variant before doing I/O. The service operation owns any service-specific intermediate cache; Granter does not transfer such state from the old operation.

Source

pub async fn grant(&self, expires_in: Option<Duration>) -> Result<K>

Grant a bounded service credential.

Cached source credentials must be fresh according to SigningCredential::is_valid and usable through the service granter’s required deadline. A refreshed source credential only needs to satisfy the exact deadline. Provider and granting errors are returned without retry or fallback. The granted result must own material independent from the cached source credential.

Trait Implementations§

Source§

impl<K: Clone + SigningCredential> Clone for Granter<K>

Source§

fn clone(&self) -> Granter<K>

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<K: SigningCredential> Debug for Granter<K>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl<K> !RefUnwindSafe for Granter<K>

§

impl<K> !UnwindSafe for Granter<K>

§

impl<K> Freeze for Granter<K>

§

impl<K> Send for Granter<K>

§

impl<K> Sync for Granter<K>

§

impl<K> Unpin for Granter<K>

§

impl<K> UnsafeUnpin for Granter<K>

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> MaybeSend for T
where T: Send,

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.