pub struct SensitiveString(/* private fields */);Expand description
A string-like type containing sensitive information such as passwords or tokens.
It is redacted from debug logs and automatically zeroized.
§Example
use iceberg::sensitive::SensitiveString;
let sensitive_value = "my-pw-12345";
let sensitive_string = SensitiveString::from(sensitive_value.to_string());
// Not contained in debug logs.
assert!(!format!("{:?}", sensitive_string).contains(sensitive_value));§Display
SensitiveString does not implement [Display] to prevent bugs like:
ⓘ
// We don't want to send a redacted `Bearer: *****`.
let auth_header = format!("Bearer {}", SensitiveString::from("token".to_string()));Instead use an explicit SensitiveString::expose when you need it:
let auth_header = format!(
"Bearer: {}",
SensitiveString::from("token".to_string()).expose()
);Implementations§
Trait Implementations§
Source§impl Clone for SensitiveString
impl Clone for SensitiveString
Source§fn clone(&self) -> SensitiveString
fn clone(&self) -> SensitiveString
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 SensitiveString
impl Debug for SensitiveString
Source§impl From<String> for SensitiveString
impl From<String> for SensitiveString
Source§impl PartialEq for SensitiveString
impl PartialEq for SensitiveString
impl Eq for SensitiveString
impl StructuralPartialEq for SensitiveString
Auto Trait Implementations§
impl Freeze for SensitiveString
impl RefUnwindSafe for SensitiveString
impl Send for SensitiveString
impl Sync for SensitiveString
impl Unpin for SensitiveString
impl UnsafeUnpin for SensitiveString
impl UnwindSafe for SensitiveString
Blanket Implementations§
§impl<U> As for U
impl<U> As for U
§fn as_<T>(self) -> Twhere
T: CastFrom<U>,
fn as_<T>(self) -> Twhere
T: CastFrom<U>,
Casts
self to type T. The semantics of numeric casting with the as operator are followed, so <T as As>::as_::<U> can be used in the same way as T as U for numeric conversions. Read moreSource§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> Downcast for Twhere
T: AsAny + ?Sized,
impl<T> Downcast for Twhere
T: AsAny + ?Sized,
§fn downcast_ref<T>(&self) -> Option<&T>where
T: AsAny,
fn downcast_ref<T>(&self) -> Option<&T>where
T: AsAny,
Forward to the method defined on the type
Any.§fn downcast_mut<T>(&mut self) -> Option<&mut T>where
T: AsAny,
fn downcast_mut<T>(&mut self) -> Option<&mut T>where
T: AsAny,
Forward to the method defined on the type
Any.§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Compare self to
key and return true if they are equal.§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