pinwheel/
option_string_value.rs

1use 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}