headless_lms_utils/
secret_string.rs1use secrecy::ExposeSecret;
7use serde::Serializer;
8
9pub fn serialize_exposed<T, S>(value: &T, serializer: S) -> Result<S::Ok, S::Error>
11where
12 T: ExposeSecret<str>,
13 S: Serializer,
14{
15 serializer.serialize_str(value.expose_secret())
16}
17
18pub fn serialize_exposed_option<T, S>(value: &Option<T>, serializer: S) -> Result<S::Ok, S::Error>
20where
21 T: ExposeSecret<str>,
22 S: Serializer,
23{
24 match value {
25 Some(value) => serializer.serialize_some(value.expose_secret()),
26 None => serializer.serialize_none(),
27 }
28}
29
30pub fn expose_option<T: ExposeSecret<str>>(value: &Option<T>) -> Option<&str> {
32 value.as_ref().map(ExposeSecret::expose_secret)
33}