statsig_rust/user/
into_optional.rs1pub 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}