redactrs/
zeroize.rs

1//! Module with zeroize Trait impls.
2//!
3//! [Zeroize](https://docs.rs/zeroize/latest/zeroize/trait.Zeroize.html),
4//! [TryZeroize](https://docs.rs/zeroize/latest/zeroize/trait.TryZeroize.html)
5//! and [ZeroizeOnDrop](https://docs.rs/zeroize/latest/zeroize/trait.ZeroizeOnDrop.html) are auto implemented for all `Redacted<T>`
6//! where `T` implements the trait.
7
8use crate::{Redacted, Redactor};
9use zeroize::{TryZeroize, Zeroize, ZeroizeOnDrop};
10
11#[cfg(any(feature = "zeroize", doc))]
12impl<T, R> Zeroize for Redacted<T, R>
13where
14    T: Zeroize,
15    R: Redactor,
16{
17    fn zeroize(&mut self) {
18        self.inner.zeroize()
19    }
20}
21
22#[cfg(any(feature = "zeroize", doc))]
23impl<T, R> TryZeroize for Redacted<T, R>
24where
25    T: TryZeroize,
26    R: Redactor,
27{
28    fn try_zeroize(&mut self) -> bool {
29        self.inner.try_zeroize()
30    }
31}
32
33#[cfg(any(feature = "zeroize", doc))]
34impl<T, R> ZeroizeOnDrop for Redacted<T, R>
35where
36    T: ZeroizeOnDrop,
37    R: Redactor,
38{
39}