Skip to main content

bestool_canopy/
lib.rs

1use std::fmt;
2
3mod client;
4pub mod registration;
5
6pub use client::{
7	CERT_RENEW_AFTER, CanopyClient, ClientBuilderFactory, DEFAULT_CANOPY_URL, NewEvent, Severity,
8	TAILSCALE_URL, client_builder, device_identity, tailscale_client, user_agent,
9};
10
11/// Wraps a sensitive value so its `Debug` output doesn't leak the contents.
12#[derive(Clone)]
13pub struct Redacted<T>(pub T);
14
15impl<T> fmt::Debug for Redacted<T> {
16	fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
17		f.write_str("<redacted>")
18	}
19}
20
21impl<T> std::ops::Deref for Redacted<T> {
22	type Target = T;
23	fn deref(&self) -> &T {
24		&self.0
25	}
26}