SecurePassword

Struct SecurePassword 

Source
pub struct SecurePassword(/* private fields */);
Expand description

A wrapper for sensitive password data that clears itself on drop.

SecurePassword provides a secure container for password strings that automatically clears the password from memory when the wrapper is dropped. This prevents passwords from lingering in memory where they could be extracted by memory inspection attacks.

§Security Properties

  • Zeroization: Password bytes are overwritten with zeros on drop
  • Debug Safety: Debug output shows [REDACTED] instead of the password
  • Clone Safety: Cloning creates a new secure copy (both are zeroized independently)

§Thread Safety

SecurePassword is Send and can be moved between threads. It is also Clone, creating independent copies that are each zeroized on drop.

§Example

use vanguards_rs::SecurePassword;

// Create a secure password
let password = SecurePassword::new("my_secret_password".to_string());

// Access the password when needed
assert_eq!(password.as_str(), "my_secret_password");

// Debug output is safe
let debug = format!("{:?}", password);
assert!(debug.contains("REDACTED"));
assert!(!debug.contains("my_secret"));

// Password is automatically cleared when dropped
drop(password);

§See Also

Implementations§

Source§

impl SecurePassword

Source

pub fn new(password: String) -> Self

Creates a new secure password wrapper.

§Arguments
  • password - The password string to wrap securely
§Example
use vanguards_rs::SecurePassword;

let password = SecurePassword::new("secret123".to_string());
Source

pub fn as_str(&self) -> &str

Returns a reference to the password string.

§Security Note

The returned reference is valid only while the SecurePassword exists. Avoid storing this reference or converting it to an owned String, as that would defeat the purpose of secure password handling.

§Example
use vanguards_rs::SecurePassword;

let password = SecurePassword::new("secret123".to_string());
assert_eq!(password.as_str(), "secret123");

Trait Implementations§

Source§

impl Clone for SecurePassword

Source§

fn clone(&self) -> SecurePassword

Returns a duplicate of the value. Read more
1.0.0 · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Debug for SecurePassword

Source§

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

Formats the value using the given formatter. Read more
Source§

impl Drop for SecurePassword

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more

Auto Trait Implementations§

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.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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> 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.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more