pub enum AccessToken {
Static(String),
Dynamic(Arc<dyn Fn() -> String + Send + Sync>),
}Expand description
An OAuth2 access token source.
Tokens from gcloud auth print-access-token and service-account exchanges
live for about an hour. A session that reconnects after that with the
string it was built with is refused; AccessToken::Dynamic is consulted
on every connection attempt instead, so a refreshing source keeps
reconnects authenticated. Debug output never shows the token.
let fixed: AccessToken = "ya29.TOKEN".into();
let fresh = AccessToken::from_fn(|| std::env::var("GOOGLE_ACCESS_TOKEN").unwrap_or_default());
assert_eq!(fixed.get(), "ya29.TOKEN");
assert_eq!(format!("{fresh:?}"), "AccessToken(<redacted>)");Variants§
Static(String)
A fixed token string.
Dynamic(Arc<dyn Fn() -> String + Send + Sync>)
A source consulted on every connection attempt.
Implementations§
Trait Implementations§
Source§impl Clone for AccessToken
impl Clone for AccessToken
Source§fn clone(&self) -> AccessToken
fn clone(&self) -> AccessToken
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for AccessToken
impl Debug for AccessToken
Source§impl From<&String> for AccessToken
impl From<&String> for AccessToken
Source§impl From<&str> for AccessToken
impl From<&str> for AccessToken
Auto Trait Implementations§
impl Freeze for AccessToken
impl !RefUnwindSafe for AccessToken
impl Send for AccessToken
impl Sync for AccessToken
impl Unpin for AccessToken
impl !UnwindSafe for AccessToken
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
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> FutureExt for T
impl<T> FutureExt for T
§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
§impl<T> FutureExt for T
impl<T> FutureExt for T
§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§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>
Converts
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>
Converts
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§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
Wrap the input message
T in a tonic::Request§impl<L> LayerExt<L> for L
impl<L> LayerExt<L> for L
§fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
Applies the layer to a service and wraps it in [
Layered].