statsig_rust/user/
into_optional.rs

1pub trait IntoOptional<T> {
2    fn into_optional(self) -> Option<T>;
3}
4
5impl<T> IntoOptional<T> for T {
6    fn into_optional(self) -> Option<T> {
7        Some(self)
8    }
9}
10
11impl<T: Clone> IntoOptional<T> for &T {
12    fn into_optional(self) -> Option<T> {
13        Some(self.clone())
14    }
15}
16
17impl<T> IntoOptional<T> for Option<T> {
18    fn into_optional(self) -> Option<T> {
19        self
20    }
21}
22
23impl<T: Clone> IntoOptional<T> for Option<&T> {
24    fn into_optional(self) -> Option<T> {
25        self.cloned()
26    }
27}
28
29impl IntoOptional<String> for &str {
30    fn into_optional(self) -> Option<String> {
31        Some(self.to_string())
32    }
33}
34
35impl IntoOptional<String> for Option<&str> {
36    fn into_optional(self) -> Option<String> {
37        self.map(|s| s.to_string())
38    }
39}