|
40 | 40 | //! assert_eq!(str_none.get::<Option<String>>(), Ok(None));
|
41 | 41 | //! ```
|
42 | 42 |
|
43 |
| -use std::{convert::Infallible, error, ffi::CStr, fmt, mem, ops::Deref, ptr}; |
| 43 | +use std::{ |
| 44 | + convert::Infallible, |
| 45 | + error, |
| 46 | + ffi::CStr, |
| 47 | + fmt, mem, |
| 48 | + ops::Deref, |
| 49 | + path::{Path, PathBuf}, |
| 50 | + ptr, |
| 51 | +}; |
44 | 52 |
|
45 | 53 | use libc::{c_char, c_void};
|
46 | 54 |
|
@@ -1012,6 +1020,80 @@ impl<'a> ToValue for &'a [&'a str] {
|
1012 | 1020 | }
|
1013 | 1021 | }
|
1014 | 1022 |
|
| 1023 | +impl ToValue for Path { |
| 1024 | + fn to_value(&self) -> Value { |
| 1025 | + unsafe { |
| 1026 | + let mut value = Value::for_value_type::<PathBuf>(); |
| 1027 | + |
| 1028 | + gobject_ffi::g_value_take_string(value.to_glib_none_mut().0, self.to_glib_full()); |
| 1029 | + |
| 1030 | + value |
| 1031 | + } |
| 1032 | + } |
| 1033 | + |
| 1034 | + fn value_type(&self) -> Type { |
| 1035 | + PathBuf::static_type() |
| 1036 | + } |
| 1037 | +} |
| 1038 | + |
| 1039 | +impl ToValue for &Path { |
| 1040 | + fn to_value(&self) -> Value { |
| 1041 | + (*self).to_value() |
| 1042 | + } |
| 1043 | + |
| 1044 | + fn value_type(&self) -> Type { |
| 1045 | + PathBuf::static_type() |
| 1046 | + } |
| 1047 | +} |
| 1048 | + |
| 1049 | +impl ToValueOptional for Path { |
| 1050 | + fn to_value_optional(s: Option<&Self>) -> Value { |
| 1051 | + let mut value = Value::for_value_type::<PathBuf>(); |
| 1052 | + unsafe { |
| 1053 | + gobject_ffi::g_value_take_string(value.to_glib_none_mut().0, s.to_glib_full()); |
| 1054 | + } |
| 1055 | + |
| 1056 | + value |
| 1057 | + } |
| 1058 | +} |
| 1059 | + |
| 1060 | +impl ValueType for PathBuf { |
| 1061 | + type Type = PathBuf; |
| 1062 | +} |
| 1063 | + |
| 1064 | +impl ValueTypeOptional for PathBuf {} |
| 1065 | + |
| 1066 | +unsafe impl<'a> FromValue<'a> for PathBuf { |
| 1067 | + type Checker = GenericValueTypeOrNoneChecker<Self>; |
| 1068 | + |
| 1069 | + unsafe fn from_value(value: &'a Value) -> Self { |
| 1070 | + from_glib_none(gobject_ffi::g_value_get_string(value.to_glib_none().0)) |
| 1071 | + } |
| 1072 | +} |
| 1073 | + |
| 1074 | +impl ToValue for PathBuf { |
| 1075 | + fn to_value(&self) -> Value { |
| 1076 | + <&Path>::to_value(&self.as_path()) |
| 1077 | + } |
| 1078 | + |
| 1079 | + fn value_type(&self) -> Type { |
| 1080 | + PathBuf::static_type() |
| 1081 | + } |
| 1082 | +} |
| 1083 | + |
| 1084 | +impl From<PathBuf> for Value { |
| 1085 | + #[inline] |
| 1086 | + fn from(s: PathBuf) -> Self { |
| 1087 | + s.to_value() |
| 1088 | + } |
| 1089 | +} |
| 1090 | + |
| 1091 | +impl ToValueOptional for PathBuf { |
| 1092 | + fn to_value_optional(s: Option<&Self>) -> Value { |
| 1093 | + <Path>::to_value_optional(s.as_ref().map(|s| s.as_path())) |
| 1094 | + } |
| 1095 | +} |
| 1096 | + |
1015 | 1097 | impl ValueType for bool {
|
1016 | 1098 | type Type = Self;
|
1017 | 1099 | }
|
|
0 commit comments