pub struct InMemoryCredentialsStore { /* private fields */ }Expand description
An in-memory CredentialsStore backed by an RwLock<HashMap>.
Suitable for single-process deployments. Credentials are lost when the process exits.
§Lock poisoning
If a thread panics while holding the lock, subsequent operations will
also panic (fail-fast) rather than silently returning None. This
surfaces bugs early instead of masking them.
Implementations§
Trait Implementations§
Source§impl CredentialsStore for InMemoryCredentialsStore
impl CredentialsStore for InMemoryCredentialsStore
Source§impl Debug for InMemoryCredentialsStore
impl Debug for InMemoryCredentialsStore
Source§fn fmt(&self, f: &mut Formatter<'_>) -> Result
fn fmt(&self, f: &mut Formatter<'_>) -> Result
Never panics, unlike the accessors below.
Those propagate lock poisoning deliberately, and that is right for
them: a credentials lookup that quietly returns None is a silent auth
downgrade. It is wrong here. Formatting is what runs while somebody
is diagnosing the first failure, frequently from a logging path, and a
Debug that panics replaces the diagnosis with a second failure — in a
release build of this workspace (panic = "abort"), with a process
abort.
Poisoning is reported rather than recovered from: a count read out of a map some writer panicked inside is not a fact worth printing as though it were one.
Auto Trait Implementations§
impl !Freeze for InMemoryCredentialsStore
impl RefUnwindSafe for InMemoryCredentialsStore
impl Send for InMemoryCredentialsStore
impl Sync for InMemoryCredentialsStore
impl Unpin for InMemoryCredentialsStore
impl UnsafeUnpin for InMemoryCredentialsStore
impl UnwindSafe for InMemoryCredentialsStore
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> 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> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request