gtk4/string_object.rs
1// Take a look at the license at the top of the repository in the LICENSE file.
2
3use glib::{GStr, GString};
4
5use crate::StringObject;
6
7impl From<StringObject> for String {
8 #[inline]
9 fn from(value: StringObject) -> Self {
10 skip_assert_initialized!();
11 Self::from(&value)
12 }
13}
14
15impl From<StringObject> for GString {
16 #[inline]
17 fn from(value: StringObject) -> Self {
18 skip_assert_initialized!();
19 Self::from(&value)
20 }
21}
22
23impl<'a> From<&'a StringObject> for String {
24 #[inline]
25 fn from(value: &'a StringObject) -> Self {
26 skip_assert_initialized!();
27 value.string().to_string()
28 }
29}
30
31impl<'a> From<&'a StringObject> for GString {
32 #[inline]
33 fn from(value: &'a StringObject) -> Self {
34 skip_assert_initialized!();
35 value.string()
36 }
37}
38
39impl From<String> for StringObject {
40 #[inline]
41 fn from(value: String) -> Self {
42 skip_assert_initialized!();
43 Self::new(&value)
44 }
45}
46
47impl<'a> From<&'a String> for StringObject {
48 #[inline]
49 fn from(value: &'a String) -> Self {
50 skip_assert_initialized!();
51 Self::new(value)
52 }
53}
54
55impl<'a> From<&'a GStr> for StringObject {
56 #[inline]
57 fn from(v: &'a GStr) -> Self {
58 skip_assert_initialized!();
59 Self::new(v)
60 }
61}
62
63impl From<GString> for StringObject {
64 #[inline]
65 fn from(value: GString) -> Self {
66 skip_assert_initialized!();
67 Self::new(&value)
68 }
69}
70
71impl<'a> From<&'a GString> for StringObject {
72 #[inline]
73 fn from(value: &'a GString) -> Self {
74 skip_assert_initialized!();
75 Self::new(value)
76 }
77}
78
79impl From<&str> for StringObject {
80 #[inline]
81 fn from(value: &str) -> Self {
82 skip_assert_initialized!();
83 Self::new(value)
84 }
85}
86
87#[cfg(test)]
88mod tests {
89 use super::StringObject;
90 use crate as gtk4;
91
92 #[test]
93 fn from_into() {
94 let obj = StringObject::new("some_str");
95 assert_eq!(String::from(&obj), obj.string());
96 assert_eq!(String::from(obj), "some_str");
97 }
98}