pinwheel/
option_string_value.rs1use std::borrow::Cow;
2
3#[derive(Clone)]
4pub struct OptionStringValue(pub Option<Cow<'static, str>>);
5
6pub trait IntoOptionStringValue {
7 fn into_option_string_value(self) -> OptionStringValue;
8}
9
10impl IntoOptionStringValue for Cow<'static, str> {
11 fn into_option_string_value(self) -> OptionStringValue {
12 OptionStringValue(Some(self))
13 }
14}
15
16impl IntoOptionStringValue for String {
17 fn into_option_string_value(self) -> OptionStringValue {
18 OptionStringValue(Some(Cow::Owned(self)))
19 }
20}
21
22impl IntoOptionStringValue for &'static str {
23 fn into_option_string_value(self) -> OptionStringValue {
24 OptionStringValue(Some(Cow::Borrowed(self)))
25 }
26}
27
28impl IntoOptionStringValue for Option<Cow<'static, str>> {
29 fn into_option_string_value(self) -> OptionStringValue {
30 OptionStringValue(self)
31 }
32}
33
34impl IntoOptionStringValue for Option<String> {
35 fn into_option_string_value(self) -> OptionStringValue {
36 OptionStringValue(self.map(Cow::Owned))
37 }
38}
39
40impl IntoOptionStringValue for Option<&'static str> {
41 fn into_option_string_value(self) -> OptionStringValue {
42 OptionStringValue(self.map(Cow::Borrowed))
43 }
44}