1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
pub trait ToOptionalString {
    fn to_optional_string(self) -> Option<String>;
}

impl<T: ToString> ToOptionalString for Option<T> {
    fn to_optional_string(self) -> Option<String> {
        self.map(|t| t.to_string())
    }
}

impl ToOptionalString for &str {
    fn to_optional_string(self) -> Option<String> {
        Some(self.to_string())
    }
}