safelog: Make MaybeRedacted<T> opaque.
This commit is contained in:
parent
cf9f29158f
commit
a77172e20d
|
@ -2812,7 +2812,9 @@ dependencies = [
|
|||
name = "safelog"
|
||||
version = "0.1.3"
|
||||
dependencies = [
|
||||
"derive_more",
|
||||
"educe",
|
||||
"either",
|
||||
"fluid-let",
|
||||
"serde",
|
||||
"serial_test",
|
||||
|
|
|
@ -16,7 +16,9 @@ repository = "https://gitlab.torproject.org/tpo/core/arti.git/"
|
|||
default = []
|
||||
|
||||
[dependencies]
|
||||
derive_more = "0.99.3"
|
||||
educe = "0.4.6"
|
||||
either = "1"
|
||||
fluid-let = "1"
|
||||
serde = { version = "1.0.103", optional = true, features = ["derive"] }
|
||||
thiserror = "1"
|
||||
|
|
|
@ -222,9 +222,9 @@ pub trait Redactable: std::fmt::Display + std::fmt::Debug {
|
|||
/// Return a smart pointer that redacts this object if `redact` is true.
|
||||
fn maybe_redacted(&self, redact: bool) -> MaybeRedacted<&Self> {
|
||||
if redact {
|
||||
MaybeRedacted::Redacted(Redacted(self))
|
||||
MaybeRedacted(either::Either::Right(Redacted(self)))
|
||||
} else {
|
||||
MaybeRedacted::NotRedacted(self)
|
||||
MaybeRedacted(either::Either::Left(self))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -287,29 +287,15 @@ impl<T: Redactable> std::fmt::Debug for Redacted<T> {
|
|||
/// An object that may or may not be redacted.
|
||||
///
|
||||
/// Used to implement conditional redaction
|
||||
#[derive(Clone)]
|
||||
#[allow(clippy::exhaustive_enums)]
|
||||
pub enum MaybeRedacted<T: Redactable> {
|
||||
/// A variant where we are redacting the object.
|
||||
Redacted(Redacted<T>),
|
||||
/// A variant where we are not redacting the object.
|
||||
NotRedacted(T),
|
||||
}
|
||||
|
||||
impl<T: Redactable> std::fmt::Display for MaybeRedacted<T> {
|
||||
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
||||
match self {
|
||||
MaybeRedacted::Redacted(v) => std::fmt::Display::fmt(v, f),
|
||||
MaybeRedacted::NotRedacted(v) => std::fmt::Display::fmt(v, f),
|
||||
}
|
||||
}
|
||||
}
|
||||
#[derive(Clone, derive_more::Display)]
|
||||
pub struct MaybeRedacted<T: Redactable>(either::Either<T, Redacted<T>>);
|
||||
|
||||
impl<T: Redactable> std::fmt::Debug for MaybeRedacted<T> {
|
||||
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
||||
match self {
|
||||
MaybeRedacted::Redacted(v) => std::fmt::Debug::fmt(v, f),
|
||||
MaybeRedacted::NotRedacted(v) => std::fmt::Debug::fmt(v, f),
|
||||
use std::fmt::Debug;
|
||||
match &self.0 {
|
||||
either::Either::Left(v) => Debug::fmt(v, f),
|
||||
either::Either::Right(v) => Debug::fmt(v, f),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue